应用程序部署问题
部署、安装或提升应用程序时可能会发生问题。本主题建议了多种方法来解决问题。
您遇到的是哪类问题?
- 应用程序未显示
- 无法保存已部署的应用程序
在组装工具、管理控制台或 wsadmin 工具中发生“java.lang.RuntimeException: Failed_saving_bytes_to_wor_ERROR_”错误
- WASX7015E 运行 wsadmin 命令 $AdminApp installInteractive 或 $AdminApp install 时出错
- 无法在 EJB 3.0 模块中安装 CMP 或 BMP 实体 bean
- 组装工具生成的数据定义语言 (DDL) 在目标平台上抛出 SQL 错误
- ADMA0004E: 验证失败
- 无法装入归档文件中的资源 WEB-INF/ibm-web-bnd.xmi
- 安装时发生“没有在 ObjectName anObject 中为模块 module_name 指定有效目标”
- addNode -includeapps 选项似乎不能将所有应用程序上载到 Deployment Manager
- 尝试在管理控制台中安装企业应用程序时显示了“超时!!!”错误
- 部署包含 EJB 模块的应用程序时接收到 NameNotFoundException 消息
在应用程序安装期间,调用 EJB 部署导致异常
- 安装针对 V5.x 或更早版本生成的 EJB JAR 文件时,发生编译错误并且 EJB 部署失败
- 在上载文档时,addNode -includeapps 失败,并有 OutOfMemoryError 异常
- 在 Deployment Manager 中发生 OutOfMemory 异常
- 将应用程序安装在另一台机器上后,该应用程序不运行
- 应用程序更新期间,单个文件替换所有应用程序文件
- 验证为应用程序、企业 Bean 模块或其他资源指定在控制台上出现的逻辑名不包含无效字符,如 - / \ : * ? " < > |.
- 如果此应用程序是使用带 -local 标志的 wsadmin $AdminApp install 命令安装的,那么重新启动服务器或重新运行此命令而不带 -local 标志。
如果没有看到与您的问题类似的问题,或如果所提供的信息解决不了您的问题,请进行检查以了解是否识别并记录了该问题。
请参阅可用的在线支持,它包括提示与技巧、技术说明和修订。 如果还未识别此问题,请参阅来自 IBM 的故障诊断帮助。
应用程序未显示
使用 wsadmin 工具安装了应用程序,但该应用程序未在
下显示。- 请验证该应用程序的子目录是否位于 app_server_root/installedApps 目录下。
- 运行 $AdminApp list 命令并验证该应用程序是否不在那些显示的应用程序中。
- 在 bin 目录中,运行 wsadmin.bat 或 wsadmin.sh 命令。
- 从 wsadmin 提示符下,输入 $AdminApp list 并验证该问题应用程序不在那些显示的项中。
- 使用 wsadmin 工具重新安装应用程序。退出之前,在 wsadmin 工具中运行 $AdminConfig save 命令。
无法保存已部署的应用程序
如果无法保存已部署的应用程序,那么存在的问题可能是打开的文件数太多,超出了操作系统限制。
![[Linux]](../images/linux.gif)
ulimit -n number_of_files
只有 root 用户有权调整每个进程的最大文件数。 完成以下步骤来修改应用程序以按照要求关闭一些文件:
- 在打开某个文件并完成了工作之后,调用该文件的关闭方法以将文件句柄释放回操作系统。
- 以 java.io.FileInputStream 和 FileOutputStream 类为例,可以调用它们的关闭方法来释放与流相关联的任何系统资源。
![[Windows]](../images/windows.gif)
在组装工具、管理控制台或 wsadmin 工具中发生“java.lang.RuntimeException: Failed_saving_bytes_to_wor_ERROR_”错误
如果尝试在组装工具中生成部署的代码、在管理控制台中安装应用程序或模块或者使用 wsadmin 工具来安装应用程序或模块时遇到此错误,那么表明临时系统文件的文件路径长度可能超出限制。
要验证此问题,检查您的系统的 TEMP 和 TMP 环境变量。长整型环境变量会将路径长度添加到 EJB 部署工具访问的文件名。
- 停止所有 WebSphere Application Server 进程并关闭所有 DOS 提示符。
- 将 TEMP 和 TMP 环境变量设置为较短的内容,例如 C:\TMP 和 C:\TEMP。
- 重新安装应用程序。
WASX7015E 运行 wsadmin 命令 $AdminApp installInteractive 或 $AdminApp install 时出错
此问题有两个可能的原因:
- 如果错误的完整文本类似于:未正确地指定文件和路径名。在这种情况下,由于路径包括空格,它被 wsadmin 程序解释为多个参数。
WASX7015E: Exception running command: "$AdminApp installInteractive C:/Documents and Settings/ myUserName/Desktop/MyApp/myapp.ear"; exception information: com.ibm.bsf.BSFException: error while evaluating Jacl expression: can't find method "installInteractive" with 3 argument(s) for class "com.ibm.ws.scripting.AdminAppClient"
WASX7015E: Exception running command: "$AdminApp installInteractive Documents and Settings/ myUserName/Desktop/MyApp/myapp.ear"; exception information: com.ibm.bsf.BSFException: error while evaluating Jacl expression: can't find method "installInteractive" with 3 argument(s) for class "com.ibm.ws.scripting.AdminAppClient"
正确地输入 .ear 文件的路径。在这种情况下,将它用双引号括起来:
$AdminApp installInteractive "C:\Documents and Settings\myUserName\Desktop\MyApps\myapp.ear"
$AdminApp installInteractive "Documents and Settings/myUserName/Desktop/MyApps/myapp.ear"
- 如果错误的完整文本类似于:未正确地指定应用程序路径。在这种情况下,请在路径中使用“正斜杠”(/)分隔符。
WASX7015E: Exception running command: "$AdminApp installInteractive c:\MyApps\myapp.ear "; exception information: com.ibm.ws.scripting.ScriptingException: WASX7115E: Cannot read input file "c:\WebSphere\AppServer\bin\MyAppsmyapp.ear"
WASX7015E: Exception running command: "$AdminApp installInteractive MyApps\myapp.ear "; exception information: com.ibm.ws.scripting.ScriptingException: WASX7115E: Cannot read input file "WebSphere\AppServer\bin\MyAppsmyapp.ear"
无法在 EJB 3.0 模块中安装 CMP 或 BMP 实体 bean
安装包含容器管理的持久性 (CMP) 或 bean 管理的持久性 (BMP) 实体 bean 的 EJB 3.0 模块时,安装失败。
产品不支持在 EJB 3.0 模块中安装封装有 CMP 或 BMP 实体 bean 的应用程序。必须将 CMP 或 BMP 实体 bean 封装在 EJB 2.1 或更低版本的模块中。
- 将 CMP 或 BMP 实体 bean 封装在 EJB 2.1 或更低版本的模块中。
- 尝试使用 EJB 2.1 或更低版本的模块安装应用程序。
组装工具生成的数据定义语言 (DDL) 在目标平台上抛出 SQL 错误
- 浏览 DDL 语句以获得特定用户标识和密码的依赖性,并且,如果必需的话,更正它们。
- 浏览 DDL 语句以获得特定服务器名的依赖性,并且,如果必需的话,更正它们。
- 参阅提供商的消息参考以获取有关特定 SQL 错误的原因和建议的操作。对于 IBM DB2®,您可以查看联机消息参考。
SQL0104N An unexpected token "CREATE TABLE AGENT (COMM DOUBLE, PERCENT DOUBLE, P"
was found following " ". Expected tokens may include: " ".
SQLSTATE=42601
使用 vi 编辑器来编辑 DDL,移除每一行开头的 Ctl-M 字符。
在 Linux 平台上,重新生成应用程序 EAR 文件的部署代码。
使用 EDTF 来编辑该文件。
ADMA0004E: 验证失败
AppDeploymentException:
[ADMA0014E: 验证失败。
ADMA0004E: 指定 EJB 模块的缺省数据源时任务中发生验证错误,没有为具有 URI filename.jar,META-INF/ejb-jar.xml 的模块 beannameBean Jar 指定 JNDI 名称。您没有为属于此模块的
每个 CMP bean 指定数据源。为每个 CMP bean 指定数据源或者为整个模块指定缺省数据源。]
一个可能的原因是,在 WebSphere Application Server V4.0 中,必须在每个 JAR 中为每个 CMP bean 定义数据源。在 V5.0 及更高发行版中,可为某个容器管理的持久性 (CMP) bean 指定数据源,也可为 JAR 文件中的所有 CMP bean 指定缺省数据源。因此,安装交互(如管理控制台中的安装向导)期间,数据源字段是可选的,但安装结束时执行的验证会检查以查看是否至少指
定了一个数据源。要解决此问题,再次执行每一步安装过程,并指定缺省数据源或为每个 CMP 类型企业 Bean 指定一个数据源。
如果要使用 wsadmin 工具,那么使用 $AdminApp installInteractive filename 命令接收安装期间的数据源提示,或在响应文件中提供它们。
指定数据源作为
$AdminApp install 命令的选项。
有关语法的详细信息,请参阅使用 wsadmin 脚本编制来安装企业应用程序。
无法装入归档文件中的资源 WEB-INF/ibm-web-bnd.xmi
Web 应用程序 tmp.war 可以安装在 WebSphere Application Server V5.0 和 V5.1 上,但在 WebSphere Application Server V6.0 或更高版本服务器上安装时失败。应用程序安装失败的原因是 WEB-INF/ibm-web-bnd.xmi 文件包含底层的 WCCM 模块不再能够识别的 xmi 标记。
将显示下列错误消息:
IWAE0007E Could not load resource "WEB-INF/ibm-web-bnd.xmi" in archive "tmp.war"
[2/24/05 14:53:10:297 CST] 000000bc SystemErr R
AppDeploymentException:
com.ibm.etools.j2ee.commonarchivecore.exception.ResourceLoadException:
IWAE0007E Could not load resource "WEB-INF/ibm-web-bnd.xmi" in archive "tmp.war"
[2/24/05 14:53:10:297 CST] 000000bc SystemErr R
com.ibm.etools.j2ee.commonarchivecore.exception.ResourceLoadException:
IWAE0007E Could not load resource "WEB-INF/ibm-web-bnd.xmi" in archive "tmp.war"
!Stack_trace_of_nested_exce!
com.ibm.etools.j2ee.exception.WrappedRuntimeException: Exception occurred loading
WEB-INF/ibm-web-bnd.xmi
!Stack_trace_of_nested_exce!
要解决此问题,请从 ibm-web-bnd.xmi 文件中移除 xmi:type=EJBLocalRef 标记。移除此标记对应用程序没有任何影响,原因是该标记先前是用于与交叉文档引用类型匹配。现在,该应用程序可对于 WebSphere Application Server V5.1 及更高版本正常工作。

然而,Java EE 5 或更高版本的模块可以在包含 Java EE 5 之前的文件并使用 .xmi 文件扩展名的应用程序中存在。
ibm-webservices-ext.xmi、ibm-webservices-bnd.xmi、ibm-webservicesclient-bnd.xmi、ibm-webservicesclient-ext.xmi 和 ibm-portlet-ext.xmi 文件继续使用 .xmi 文件扩展名。
sptcfg安装时发生“没有在 ObjectName anObject 中为模块 module_name 指定有效目标”
在集群环境中,如果错误地指定了要安装应用程序的目标单元、节点、服务器或集群,那么会发生此错误。例如,如果目标拼写错误,此错误会发生。
要解决此问题,请针对实际的 WebSphere Application Server 拓扑检查目标名,并用正确项重新输入。
addNode -includeapps 选项似乎不能将所有应用程序上载到 Deployment Manager
当目标节点上的某些或所有应用程序已上载到 Deployment Manager 时,会发生此错误。addNode 程序检测已安装了哪些应用程序并且不再次上载它 们。
使用管理控制台浏览 Deployment Manager 配置并查看是否已安装这些应用程序。
尝试在管理控制台中安装企业应用程序时显示了“超时!!!”错误
如果尝试安装未部署的企业应用程序,那么会发生此错误。
- 使用组装工具打开 file_name.ear 文件,然后单击部署。此操作会创建具有名称如 Deployed_file_name.ear 的文件。
- 在管理控制台中,安装已部署的 EAR 文件。
部署包含 EJB 模块的应用程序时接收到 NameNotFoundException 消息
如果指定在应用程序安装期间运行 EJB 部署工具,但安装失败并报告 NameNotFoundException 消息,那么确保输入 JAR 或 EAR 文件不包含源文件。如果输入 JAR 或 EAR 文件包含源文件,那么 EJB 部署工具在生成部署代码之前将运行重建过程。
此问题的变通方法是,在类路径中移除源文件或包括所有相关类和资源文件。否则,在服务器上重建应用程序期间,源文件或缺少对相关类和资源文件的访问权可能会导致这些问题。
![[Windows]](../images/windows.gif)
在应用程序安装期间,调用 EJB 部署导致异常
如果指定在应用程序安装期间运行 EJB 部署工具,但安装失败且出现错误“命令行太长”,那么问题在于安装期间生成的部署命令超过 Windows 平台上命令行的字符限制。
要解决这个问题,您可缩短 EAR 文件名的长度、缩短 EAR 文件中 JAR 文件名的长度、减少为部署指定的类路径或其他选项,或更改 Windows 系统的 %TEMP% 位置以使它路径缩短。
安装针对 V5.x 或更早版本生成的 EJB JAR 文件时,发生编译错误并且 EJB 部署失败
安装旧应用程序时,如果该应用程序使用构建以在 WebSphere Application Server V5.x 或更早版本上运行的 EJB 模块,那么会发生编译错误并且 EJB 部署会失败。EJB JAR 文件包含生成的原有代码的 Java 源代码。旧的 Java 源代码针对 V5.x 或更早版本生成,但将其部署到 WebSphere Application Server V6.x 或更高版本的产品时,将使用 V6.0 或更高版本的运行时 JAR 文件对其进行编译。
要解决此问题,请从应用程序 EAR 文件中移除所有 .java 文件。移除 Java 源文件之后,您可以成功地将应用程序部署到服务器。
在上载文档时,addNode -includeapps 失败,并有 OutOfMemoryError 异常
- 如果使用 addNode 从服务器基本部件添加节点,那么修改 addNode 脚本以包含以下参数:
-Xmxsize
- 如果要从管理控制台添加节点,那么增加 Deployment Manager 的 Java 虚拟机设置中的 maximumHeapSize,然后重新启动 Deployment Manager。
有关详细信息,请参阅addNode 命令 和 Java 虚拟机设置。
![[Windows]](../images/windows.gif)
"%JAVA_HOME%\bin\java" -Xmx512m %DEBUG% %WAS_TRACE% %CONSOLE_ENCODING%
"%CLIENTSOAP%" "%CLIENTSAS%" "-classpath" "%WAS_CLASSPATH%"
"-Dws.ext.dirs=%WAS_EXT_DIRS%" %USER_INSTALL_PROP%
-Dwas.install.root=%WAS_HOME%" "com.ibm.ws.bootstrap.WSLauncher"
"com.ibm.ws.management.tools.NodeFederationUtility" "%CONFIG_ROOT%" "%WAS_CELL%"
"%WAS_NODE%" %*
在 Deployment Manager 中发生 OutOfMemory 异常
如果在尝试安装具有大型 EAR 文件的应用程序时接收到 OutOfMemory 异常,那么请尝试增大 Deployment Manager 的最大堆大小。
检查您在管理控制台的“Java 虚拟机”页面上指定的选项。增大 Deployment Manager 的 Java 虚拟机设置中的 maximumHeapSize。然后,重新启动 Deployment Manager,并尝试再次安装此应用程序。
将应用程序安装在另一台机器上后,该应用程序不运行
如果应用程序使用应用程序级别资源,那么其应用程序级别节点信息必须正确,应用程序才能如所期望的那样运行。
将应用程序级别资源添加至应用程序并将该应用程序部署到机器上时,请确保应用程序级别节点信息正确。否则,在将该应用程序安装在另一台机器上时,它会安装到错误的位置,并且该应用程序不会如所期望的那样运行。
您可以使用组装工具来更新应用程序级别的节点信息。在 ibmconfig 下面,更新 deployment.xml 文件的 deploymentTargets 中的 nodeName。此外,还要确保 deployment.xml 文件的 deployedObject 中的 binariesURL 具有正确的路径。
应用程序更新期间,单个文件替换所有应用程序文件
如果在应用程序更新向导中选中了替换或添加单个文件选项,并且当前部署的应用程序由多个文件组成,请在指定从已安装的应用程序归档文件开始到要替换或添加的文件的路径中指定要替换或添加的文件的完整路径名。
完整路径名的结构通常为 directory_path/file_name,类似于以下内容:
PriceChangeSession.jar/priceChangeSession/priceChangeSessionBean.class
不要为指定从已安装的应用程序归档文件开始到要替换或添加的文件的路径指定不完整的路径名。例如,不要仅指定目录路径:
PriceChangeSession.jar/priceChangeSession
如果指定的路径名不完整,那么当前部署的应用程序所在目录中的所有文件可能会替换为在指定文件路径下面指定的单个新文件。