测试和发布(服务器)工具发行说明

© Copyright International Business Machines Corporation 2006. All rights reserved. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM® Corp.

发行说明

1.0 局限性
   1.1 WebSphere Application Server 6.0.2.5 和更高版本支持“使复制到服务器的应用程序文件数减至最少”选项
   1.2 除去多个 EAR 项目中共享的 EJB 模块
   1.3 运行多线程 WebSphere 应用程序客户机
2.0 已知问题与变通方法
   2.1 在调试方式下继续执行后未进行热方法替换
   2.2 “管理共享的 WebSphere 服务器”对话框中的“除去”按钮不起作用
   2.3 “新建服务器”向导可能无法检索正确的端口信息
   2.4 在 64 位机器上创建 WebSphere Application Server 的概要文件
   2.5 网络连接中断后建立 RMI 连接时,延迟时间很长
   2.6 服务器无法采用应用程序部署描述符编辑器的“部署”页中的各项更改
   2.7 将实用程序 JAR 文件添加至 Web 库时发生 java.lang.NoClassDefFoundError 错误
   2.8 安全 SOAP 连接无法在 WebSphere Application Server V6.0 与 V6.1 之间共存
   2.9 远程服务器停止后,“新建服务器”向导完成操作所需的时间可能会延长
   2.10 无法发布 EarContent 目录中包含 .war 文件扩展名的 EAR 应用程序
   2.11 对于远程 WebSphere Application Server V5.1,无法采用对部署目录和发布目录所作的更改
   2.12 与先前版本相比,发布大型应用程序的速度较慢
   2.13 对受保护 WebSphere Application Server V6.1 切换服务器连接类型
   2.14 使用“表和数据源创建程序”向导时,发生了 TargetInvocationException 错误
   2.15 从“服务器”视图中停止服务器时,该服务器可能不会完全停止
   2.16 在通过通用测试客户机(UTC)运行 EJB 后,未采用 EJB JAR 更改

1.0 局限性

1.1 WebSphere Application Server 6.0.2.5 和更高版本支持“使复制到服务器的应用程序文件数减至最少”选项

WebSphere® Application Server 6.0.2.5 和更高版本支持使复制到服务器的应用程序文件数减至最少选项。在 WebSphere Application Server V6.0 服务器编辑器中,有一个该选项的复选框,即使对 V6.0.2.5 之前的服务器选中此复选框,也会忽略此选项。 

1.2 除去多个 EAR 项目中共享的 EJB 模块

如果在 WebSphere Application Server 上运行的多个 EAR 项目之间共享 Enterprise JavaBean(EJB)模块,并且从服务器中除去了其中一个 EAR 项目,则必须重新启动其他 EAR 项目,这样它们才能访问该 EJB 项目中诸如 EJB Bean 之类的资源。 

如果未执行此操作,则可能会看到类似于以下的错误消息。发生这些错误的原因是,除去 EAR 时从服务器中除去了 EJB 项目中的 Java 命名和目录接口(JNDI)名称。

 

以下是一条错误消息样本:

00000028 SystemOut     O javax.naming.NameNotFoundException: Context: myCell/nodes/myNode/servers/server1, name: ejb/ejbs/Session20Home: First component in name Session20Home not found. [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
    at com.ibm.ws.naming.jndicos.CNContextImpl.processNotFoundException(CNContextImpl.java:4730)
    at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1907)
    at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1862)
    at com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1552)
    at com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNContextImpl.java:1354)
    at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:172)
    at javax.naming.InitialContext.lookup(InitialContext.java:363)
    at com.ibm.ivj.ejb.runtime.AbstractAccessBean.lookupAndCacheHome(AbstractAccessBean.java:224)
    at com.ibm.ivj.ejb.runtime.AbstractAccessBean.getGlobalHome(AbstractAccessBean.java:216)
    at com.ibm.ivj.ejb.runtime.AbstractAccessBean.getHome(AbstractAccessBean.java:249)
    at ejbs.Session20AccessBean.ejbHome(Session20AccessBean.java:50)
    at ejbs.Session20AccessBean.instantiateEJB(Session20AccessBean.java:80)
    at ejbs.Session20AccessBean.foo(Session20AccessBean.java:91)
 

1.3 运行多线程 WebSphere 应用程序客户机

由于在 Eclipse 与 WebSphere 运行时环境之间存在各种行为和交互,因此,在通过“应用程序客户机启动配置”对话框运行多线程 WebSphere 应用程序客户机时,需要执行一些附加步骤。在 J2EE 透视图中,如果从产品的工具栏中选择运行 > 运行...,则将打开“应用程序客户机启动配置”对话框。如果客户机使用了多个线程,或者使用了可能会使用其他线程的框架(例如 Swing),则必须完成下列附加步骤:

  1. 在“应用程序客户机启动配置”对话框中,选择参数选项卡。在 VM 参数文本框中,指定以下参数:
    -Dosgi.noShutdown=true
  2. 确保客户机应用程序调用 System.exit()

如果未指定这些内容,则可能会发生与类装入或应用程序运行完成后将不再退出的 Java 虚拟机(JVM)相关的问题。

2.0 已知问题与变通方法

2.1 在调试方式下继续执行后未进行热方法替换

假定有一个项目,例如应用程序客户机项目,并且该项目具有以下配置:

您可能会遇到“调试”视图中的“继续”按钮无法正常工作的情况。例如,以调试方式在服务器上运行应用程序时,如果尝试在运行时更改源代码,然后使用“继续”按钮来继续调试应用程序,此时“继续”按钮不起作用。在这种情况下,可能未应用对源代码所作的热方法替换更改。
尝试单击两次“继续”按钮以使运行时更改生效。 
注意:如果将 Java 的项目构面设置为 V5.0,则不会发生此问题。

2.2 “管理共享的 WebSphere 服务器”对话框中的“除去”按钮不起作用

“管理共享的 WebSphere 服务器”对话框中的除去按钮不起作用。
技巧:要打开“管理共享的 WebSphere 服务器”对话框:

  1. 在工作栏中,选择窗口 > 首选项。将打开“首选项”对话框。
  2. 在左窗格中,选择服务器 > WebSphere > WebSphere V51
  3. 在右窗格中,在“共享的 WebSphere 服务器”字段旁边,单击管理按钮。将打开“管理共享的 WebSphere 服务器”对话框。

如果使用“除去”按钮,则该服务器看起来已被除去。但是,退出该对话框后,如果再次打开该对话框并刷新远程服务器信息,则先前除去的服务器仍将显示在该对话框中。

要解决此问题,可以通过完成下列步骤手工除去共享服务器条目:

  1. 打开以下目录中的 id.txt 文件:
    <directory>/plugins/com.ibm.etools.websphere.tools*/properties
    其中,<directory> 是代理控制器的安装目录。
  2. 删除引用了所要除去的共享服务器的条目。
  3. 除去服务器创建期间对该特定共享服务器指定的 WebSphere 部署目录及其所有子目录。在 WebSphere 部署目录下要除去的子目录示例包括 config、installedApps 和 temp 以及此目录下的任何其他目录和文件。
  4. 在“管理共享的 WebSphere 服务器”对话框中,指定主机名,然后单击刷新按钮以验证是否已成功地除去了共享服务器。

2.3 “新建服务器”向导可能无法检索正确的端口信息

如果在同一个 WebSphere Application Server V6.x 概要文件中安装了诸如 IBM HTTP Server 之类的其他服务器,则“新建服务器”向导的“WebSphere 服务器设置”页可能找不到正确的远程方法调用(RMI)或 SOAP 端口号。另外,可能检索不到管理控制台的端口号。
当“新建服务器”向导找不到对服务器定义的实际端口号时,其缺省行为是使用缺省端口号预先填充端口字段:对于 RMI,此端口号是 2809,对于 SOAP,此端口号是 8880。  
如果定义了不正确的端口号,则可能会遇到下列问题:

变通方法:

  1. 通过引用已配置的概要文件的服务器配置文件,确定其端口值。端口值存储在以下目录中的 serverindex.xml 文件中:
    <directory>\profiles\<profileName>\config\cells\<cellName>\nodes\<nodeName>,其中 <directory> 是 WebSphere Application Server 的安装目录。
    使用 serverindex.xml 文件来填充下表,以确定对服务器定义的实际端口号:
    端口名端口描述缺省端口号您指定的端口号
    SOAP_CONNECTOR_ADDRESS SOAP 8880
    BOOTSTRAP_ADDRESS RMI 2809
    WC_adminhost 管理控制台 9060
    WC_defaulthost HTTP 传输方法 9080
  2. 要连接至服务器,请在创建该服务器时指定正确的 RMI 或 SOAP 端口号。
  3. 要启动管理控制台,请使用外部 Web 浏览器并在地址字段中输入正确管理控制台端口的 URL:
    http://<machine_name>:<WC_adminhost>/IBM/console
    例如:http://localhost:9060/IBM/console
  4. 要在服务器上运行应用程序,请发出“在服务器上运行”命令。Web 浏览器打开后,请使用对服务器定义的 HTTP 传输端口号来更正 URL。
    http://<machine_name>:<WC_defaulthost>/<ContextRoot>/<application_start_page>
    例如:  http://localhost:9080/MyApplication/index.jsp
    注意:“服务器”视图中自动定义的服务器可能未引用实际服务器的正确端口号。在这种情况下,请使用以上变通方法。

 

2.4 在 64 位机器上创建 WebSphere Application Server 的概要文件

概要文件管理工具是一个 WebSphere Application Server 工具,它为每个运行时环境创建概要文件。可以使用工作台来启动 WebSphere Application Server 的概要文件管理工具。但是,概要文件管理工具无法在 64 位处理器上运行,使用此处理器时,请使用 WebSphere Application Server 提供的 manageprofiles 命令行工具。

2.5 网络连接中断后建立 RMI 连接时,延迟时间很长

在 Windows 操作系统中,如果使用远程方法调用(RMI)端口来连接至 WebSphere Application Server V6.x,则在网络连接中断后与服务器建立连接时,延迟时间很长。即使该服务器是本地服务器,并且网络连接仅仅是暂时中断(这种情况在无线网络环境中很常见),情况亦如此。
如果您知道服务器已启动,但是“服务器”视图中的状态却显示已停止正在启动,请通过将服务器连接从 RMI 切换为 SOAP 来尝试确定是否可以与该服务器建立连接。服务器状态应该更改为已启动

在无线网络环境中,可以通过两个选项与服务器建立连接:

2.6 服务器无法采用应用程序部署描述符编辑器的“部署”页中的各项更改

要在服务器上应用应用程序部署描述符编辑器的“部署”页中定义的各项资源更改,仅仅执行重新发布应用程序、重新启动应用程序或者卸载然后重新安装应用程序这些操作并不够。已确定服务器无法采用的一项更改是,在此编辑器的“部署”页中对数据源的数据库名称所作的更改。此外,服务器还无法采用其他几项更改。
作为变通方法,请完成下列步骤以将更改应用于服务器:

  1. 停止该服务器。
    1. 在“服务器”视图中,右键单击该服务器,然后选择停止
    2. 在“服务器”视图中,等待该服务器的状态显示为已停止,然后转到下一个步骤。 
  2. 启动工作台。
    注意:如果服务器未能启动,则需要使用操作系统提供的功能来停止用于运行服务器的 java 进程。另外,可以重新启动工作台,然后再次尝试启动该服务器。
  3. 启动该服务器。
    1. 在“服务器”视图中,右键单击该服务器,然后选择启动
    2. 在“服务器”视图中,等待重新发布完成并且服务器和应用程序的状态显示为已启动,然后转到下一个步骤。
  4. 在服务器上运行应用程序,例如使用在服务器上运行命令来运行应用程序。现在,服务器应该能够采用应用程序部署描述符编辑器中的更改。 

2.7 将实用程序 JAR 文件添加至 Web 库时发生 java.lang.NoClassDefFoundError 错误

如果将实用程序 JAR 文件添加到 Web 项目的 Web 库中,并且在代码中引用该 JAR 文件中的类,则尝试在服务器上运行该应用程序时,可能会发生 java.lang.NoClassDefFoundError 错误。
变通方法是,对 EAR 模块添加实用程序 JAR 文件后,通过完成下列步骤将该 JAR 文件添加到 Web 项目的“J2EE 模块依赖项”中:

  1. 对 EAR 模块添加实用程序 JAR 文件。有关详细信息,请参阅产品帮助中的添加项目实用程序 JAR 文件主题。
  2. 右键单击 Web 项目,然后选择属性。将打开“属性”对话框。
  3. 选择 J2EE 模块依赖项。  
  4. J2EE 模块选项卡的 JAR/模块列下方,选中实用程序 JAR 文件旁边的复选框。

2.8 安全 SOAP 连接无法在 WebSphere Application Server V6.0 与 V6.1 之间共存

如果正在使用受保护 SOAP 连接来运行 WebSphere Application Server V6.1,则另一个与 WebSphere Application Server V6.0 的安全 SOAP 连接将失败。情况相反时也会发生此问题,即,如果使用受保护 SOAP 连接来运行 WebSphere Application Server V6.0,则将导致与 WebSphere Application Server V6.1 的安全 SOAP 连接失败。但是,如果该服务器是在“服务器”视图中定义的,而且它的状态为空,则不会发生此问题。

变通方法是,使用与服务器的安全远程方法调用(RMI)连接来代替 SOAP 连接,或者使用不安全的 SOAP 连接。

 

2.9 远程服务器停止后,“新建服务器”向导完成操作所需的时间可能会延长

如果远程服务器已停止,则您在“新建服务器”向导中单击完成按钮后,该向导可能会耗用很长时间才能完成操作。变通方法是,在“新建服务器”向导中单击完成按钮前,启动远程服务器。

2.10 无法发布 EarContent 目录中包含 .war 文件扩展名的 EAR 应用程序

如果在 EAR 项目的 EarContent 文件夹中放置了扩展名为 .war 的文件,并且未在 application.xml 中将其定义为 Web 模块,则无法在服务器上发布该企业应用程序,并且将显示类似于以下的错误消息:
org.eclipse.jst.j2ee.commonarchivecore.internal.exception.OpenFailureException:IWAE0034E 无法打开“D:\myworkspace\PublishEAR\EarContent”中嵌套的归档“abc.war”

发生此错误的原因是,工作台无法正确地将该文件作为 Web 模块进行处理。请选择下列其中一种变通方法:

 

2.11 对于远程 WebSphere Application Server V5.1,无法采用对部署目录和发布目录所作的更改

对于远程 WebSphere Application Server V5.1 或远程 WebSphere Application Server V5.1 易捷版,如果在服务器编辑器中更改了部署目录和发布目录,然后重新发布应用程序,则仍然会将该应用程序发布到先前目标。因此,不会应用您对发布目录和部署目录所作的更改。在使用本地复制或 FTP 方法时,会发生此问题。
变通方法是,重新启动工作台。这样,对发布目录和部署目录所作的配置更改应该会生效。

2.12 与先前版本相比,发布大型应用程序的速度较慢

为了支持更灵活的项目存储方法,已更改了应用程序发布技术。现在,在将应用程序发布到服务器之前,会对它们进行复制。如果应用程序很大,例如大于 100 兆字节,则与先前版本相比,用于发布命令的此复制操作可能需要耗用更长时间。

目前,没有变通方法。IBM 正在设计产品更新,以使您在大多数情况下不需要执行这个新的复制操作。

2.13 对受保护 WebSphere Application Server V6.1 切换服务器连接类型

如果启动了受保护的 WebSphere Application Server V6.1,并且您在服务器编辑器中将服务器连接类型更改为远程方法调用(RMI)或 SOAP,则保存服务器编辑器中的更改后,您可能会看到以下发布失败错误消息:
由于未启动服务器,因此未执行发布。执行发布操作之前,请启动服务器。
您可以安全地忽略此错误。(可选)在“服务器”视图中的服务器状态更改为已启动之后,可以完成发布命令(在“服务器”视图中,右键单击服务器,然后选择发布)。

2.14 使用“表和数据源创建程序”向导时,发生了 TargetInvocationException 错误

在尝试使用“表和数据源创建程序”向导生成数据源时,在“表和数据源创建结果”对话框的“详细信息”部分中可能会显示 TargetInvocationException 错误。
发生 TargetInvocationException 错误的原因可能是,导入了包含数据源的项目交换,并且那些数据源具有相同的 Java 命名和目录接口(JNDI)名称。
要处理 TargetInvocationException 错误,请验证是否在工作台中定义了具有相同 JNDI 名称的数据源。如果已定义这样的数据源,请从应用程序部署描述符编辑器的“部署”页中将其除去,然后使用另一个 JNDI 名称再次创建该数据源。由于 JNDI 是用于将企业 Bean 与数据源绑定的命名和查找服务,因此 JNDI 名称必须唯一。

2.15 从“服务器”视图中停止服务器时,该服务器可能不会完全停止

从“服务器”视图中停止服务器时,该服务器可能不会完全停止。“服务器”视图将显示已停止状态,但服务器进程可能处于未响应状态。通常,当诸如应用程序之类的工件或工作台保持引用服务器上的类时,将会发生这种情况。以下是一些场景示例:

限制:由于 Cloudscape 或 Derby 配置限制,因此不支持与单一 Cloudscape 或 Derby 数据库建立多个连接。如果从数据库资源管理器中维护与数据库的数据库连接,并且某个服务器尝试通过数据源建立另一个 Cloudscape 或 Derby 连接,则第二个连接将失败。因此,必须从数据库资源管理器中关闭第一个连接,这样服务器才能与该 Cloudscape 或 Derby 数据库建立新连接。

 

要解决此问题,需要使用操作系统提供的功能来停止用于运行服务器的 java 进程。另外,可以重新启动工作台以强制释放引用。在上面描述的最后一个场景示例中,可以使用“数据库资源管理器”视图来连接 Cloudscape 或 Derby 数据库,然后断开连接。

2.16 在通过通用测试客户机(UTC)运行 EJB 后,未采用 EJB JAR 更改

在将诸如企业 Bean 之类的资源发布到服务器并使用通用测试客户机(UTC)来测试 EJB 时,可能会将 JAR 文件锁定,因此无法对其进行更新。这将导致在 EJB 测试期间无法采用工具中所作的更改。一旦 UTC 装入了 EJB JAR 文件,就会保持将该 JAR 文件锁定,直到除去或重新添加该应用程序或者重新启动服务器为止。

变通方法是,在应用程序资源运行于工作空间外部(而不是运行于服务器上)的开发环境中使用 UTC。可以使用“新建服务器”向导对此进行配置,以后,可以在服务器编辑器中选择“发布”选项下方的使用工作空间中的资源运行服务器来进行更改。这将允许更新 EJB 项目中的各个文件,而不要求完全替换整个 EJB JAR 文件。

在对应用程序进行全面测试后,可以使用使用服务器上的资源运行服务器发布选项将其发布至服务器。