Web 工具 - 发行说明


1.0 局限性
   1.1 从“页数据”视图拖放到自由布局表中时出现问题
   1.2 使用 SDO 部署 Web 应用程序,以使用指向 Websphere V6 服务器的驱动程序管理器连接来访问数据库时出现问题
   1.3 用于 SDO 关系记录列表的更新方法
2.0 已知问题
   2.1 SDO 对 JDBC 连接使用缺省端口号
   2.2 将 Web 项目的目标从 WAS V5 重新定为 WAS V6 时未删除 wdo_web.jar
   2.3 自动生成键时产生无效错误消息
   2.4 WAS 作为服务运行必须使用对 DB2 具有访问权的标识来运行
   2.5 保存 JSP 页面可能不会保存 SDO/WDO XML 文件
   2.6 带有多个过滤器的关系记录/列表在 WAS 6 服务器上可能不起作用
   2.7 如果对项目选择了缺省服务器,可能未创建 SDO 数据源
   2.8 针对关系记录/列表的重命名模式操作未更新唯一键表模式名称

1.0 局限性

1.1 从“页数据”视图拖放到自由布局表中时出现问题

当您尝试从“页数据”视图拖放到包含自由布局表的页面上时,将显示 NOT 光标,从而使得拖放功能不可用。

要从“页数据”视图执行拖放,先从选用板中选择“文本单元格”,然后在自由布局表中添加“文本单元格”。然后,从“页数据”视图拖放到“文本单元格”中。

1.2 使用 SDO 部署 Web 应用程序,以使用指向 Websphere V6 服务器的驱动程序管理器连接来访问数据库时出现问题

尝试部署 Web 应用程序(使用 SDO 功能部件)以使用驱动程序管理器连接访问关系数据库时,驱动程序 JAR 未自动添加至服务器的类路径。这会导致 ClassNotFound 错误。

目前,在缺省情况下,每当应用程序访问下列关系数据库时都会创建数据源连接:Cloudscape、DB2、SQL Server 和 Oracle。但是对于任何其它数据库,特别是 Informix(R) 和 Sybase,将创建驱动程序管理器连接并且会出现上述问题。

要让驱动程序管理器连接起作用,用户必须手工将驱动程序 JAR 路径添加至服务器的类路径。为此,运行服务器的“管理控制台”并在服务器 -> 应用程序服务器 -><serverName>-> Java 和进程管理 -> 进程定义 -> Java 虚拟机 -> 类路径中添加类路径条目。

1.3 用于 SDO 关系记录列表的更新方法

目前产品不会生成更新方法以用于更新每个关系数据列表。以下是可放在操作中的代码,可用来更新名为 myList 的数据列表的内容。

try { getMyListMediator().applyChanges((DataObject)((ECoreEList)getMyList()).getEObject()); } catch (Throwable e) { logException(e); }

2.0 已知问题

2.1 SDO 对 JDBC 连接使用缺省端口号

如果 JDBC 服务器不在供应商指定的缺省端口上运行,则在第一次创建 SDO 运行时连接时需要修改它。

2.2 将 Web 项目的目标从 WAS V5 重新定为 WAS V6 时未删除 wdo_web.jar

Web 项目的目标从 WAS V5 服务器重新定为 WAS V6 服务器时,有时不会删除 WEB-INF/lib/wdo_web.jar。它在 WAS V6 服务器上无效,并且如果您遵循《迁移指南》的“迁移带有 Faces Client 组件的 JavaServer Faces 资源”一节中的步骤,则在 Web 项目中重新生成客户机端对象时可能出现问题。

要避免这些问题,从 lib 文件夹中删除此 JAR 文件。在删除它之后,打开 Web 项目的 web.xml 文件并除去引用该 JAR 文件的 taglib 标记。可从 Web 部署描述符编辑器的“变量”或“源代码”页中除去它。此 taglib 的 URI 为 http://www.ibm.com/websphere/wdo/core。然后,在“项目资源管理器”视图中选择 Web 项目并从其弹出菜单中选择属性。然后选择 Java 构建路径并从“库”页面中除去所有 WDO_EMF_JARS_PATH/* 类路径条目。

2.3 自动生成键时产生无效错误消息

如果使用关系记录(该记录使用目标为 V5.1 服务器的自动生成键)创建 JSP 页面,可能会遇到以下错误:

2 cvc-complex-type.2.4.d:从元素“tables”开始出现无效内容。此处不应有任何子元素。

此错误消息无效,可以忽略它。

2.4 WAS 作为服务运行必须使用对 DB2 具有访问权的标识来运行

如果使用缺省认证将 WebSphere Application Server 作为服务运行(作为登录用户运行)并尝试在未提供用户名和密码的情况下在 Web 应用程序中连接至 DB2,可能会遇到以下错误:

java.sql.SQLException:[IBM][CLI 驱动程序] SQL0567N “SYSTEM”是无效授权标识。SQLSTATE=42602 DSRA0010E:SQL 状态 = 42602,错误代码 = -567

为避免此问题,向应用程序提供用户标识和密码或设置 WAS 以作为对 DB2 安装具有访问权的用户帐户显式运行(如提供用户标识和密码)。

2.5 保存 JSP 页面可能不会保存 SDO/WDO XML 文件

如果关闭脏(未提交更改)JSP,则在系统提示时保存 JSP,对 WDO/SDO 配置文件的未提交更改可能不会保存下来。

要避免此问题,在配置关系记录或记录列表后,一定要按 CRTL+S 或单击文件 --> 保存来保存 JSP。

2.6 带有多个过滤器的关系记录/列表在 WAS 6 服务器上可能不起作用

如果为了在 Websphere V51 服务器上运行而创建的 WDO 应用程序已迁移至在 Websphere V60 服务器上运行,则这些应用程序中会发生此问题。在此情况下,如果 Faces 页面中的记录或记录列表包含多个过滤器子句,该页面可能会在服务器上运行时抛出以下异常:

java.lang.ArrayIndexOutOfBoundsException:1 位于 org.eclipse.emf.ecore.impl.DynamicEObjectImpl.dynamicGet(DynamicEObjectImpl.java:192) 位于 org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSettingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.java:1758) 位于 org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(BasicEObjectImpl.java:485) 位于 org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:476)e 位于 org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java(Compiled Code)) 位于 com.ibm.etools.webtools.sdo.runtime.internal.MapDataObjectImpl.getValue(MapDataObjectImpl.java:197) 位于 com.ibm.etools.webtools.sdo.runtime.internal.MapDataObjectImpl.put(MapDataObjectImpl.java:162) 位于 pagecode.PageCodeBase.resolveParams(PageCodeBase.java:189)

介体的参数对象中存在该问题。

要修改此问题,必须正确设置介体的参数对象。为此,对 getList 或 getRecord 方法作如下修改:

原始内容:

public DataListAccessBean getList1() { if (list1 == null) { try { resolveParams(getList1Mediator().getParams(), list1ArgNames, list1ArgValues, "list1_params_cache"); DataGraphAccessBean graph = getList1Mediator().fetchGraph(); list1 = graph.getDataListAccessBean(); } catch (Throwable e) { logException(e); } } return list1; }


修改后的内容:

public DataListAccessBean getList1() { if (list1 == null) { try { getList1Mediator().setParams( new MapDataObjectImpl(((EObject) new MediatorImpl( (Metadata) getList1Mediator().getMetadata(), new NullConnectionWrapper()) .getParameterDataObject()).eClass())); resolveParams(getList1Mediator().getParams(), list1ArgNames, list1ArgValues, "list1_params_cache"); DataGraphAccessBean graph = getList1Mediator().fetchGraph(); list1 = graph.getDataListAccessBean(); } catch (Throwable e) { logException(e); } } return list1; }

注意设置参数对象的代码段。

2.7 如果对项目选择了缺省服务器,可能未创建 SDO 数据源

如果已选择缺省服务器,在服务器上运行期间将不会在服务器上正确配置数据源。为确保正确设置数据源,不要选择缺省服务器。在应用程序成功发布后,如果未对数据源作任何更改,就可以选择缺省服务器。

2.8 针对关系记录/列表的重命名模式操作未更新唯一键表模式名称

针对记录/列表的重命名模式操作未更新唯一键表模式名称。

要解决此问题,查找存储针对记录/列表的查询的 XML 文件并更新唯一键表模式名称。

返回到主自述文件