部署手动Websphere EAR时出现AppDeploymentException

时间:2014-07-08 19:56:43

标签: java deployment gradle websphere websphere-6.1

我正在尝试编译和部署EAR文件到WebSphere 6.1应用服务器(WAS) - 没有 Rational Application Developer(RAD)或Liberty。我正处于尝试将编译和部署移动到构建服务器的初始阶段。我对编译没有任何问题。但是,当我尝试部署EAR时,我得到一个AppDeploymentException:

The EAR file could be corrupt and/or incomplete. Make sure that the application is at a compatible Java 2 Platform, Enterprise Edition (J2EE) Level for WebSphere Application Server.

我在某处读取(现在找不到链接)必须使用IBM JDK编译WAS文件。所以我installed that并用它重新编译,但遇到了同样的问题。

类文件的主要版本(来自javap)是正确的,但我仍然对此错误感到困惑,因为似乎“工作”和“不”之间的唯一区别是字节代码本身。还有一些其他固有的mojo需要这些文件由RAD构建吗?

This question表明对于WebSphere 6.1,web.xml模式必须是2.4,但这对我没有影响。实际上,如果我将一个工作的EAR(通过RAD创建)并从该副本只将类文件放入由原始JDK / gradle进程创建的EAR中,它将起作用。

很抱歉,我不熟悉WebSphere以包含有关错误的更多信息。我检查了该配置文件的activity.log文件,甚至找不到控制台输出中报告的错误。 dmgr日志只说:

[7/8/14 12:46:56:886 PDT] 0000073b ApplicationDe I ApplicationDeploymentController perform ApplicationDeploymentControll
er: performing appcontexts refresh
[7/8/14 12:47:00:416 PDT] 0000073b WebApp        A   SRVE0180I: [isclite#isclite.war] [/ibm/console] [Servlet.LOG]: action: ApplicationDeploymentDetailForm was null.Creating new form bean and storing in session
[7/8/14 12:48:25:273 PDT] 0000062d wtp           W org.eclipse.jst.j2ee.commonarchivecore.internal.impl.ModuleRefImpl in
itModuleFileFromEAR Ignoring FileNotFoundException [ mbepepWeb.war ]
[7/8/14 12:48:25:279 PDT] 0000062d wtp           E   org.eclipse.jst.j2ee.application.internal.impl.WebModuleImpl incomp
atible with org.eclipse.jst.j2ee.commonarchivecore.internal.ModuleFile

我不确定那是多么相关。提到的war文件位于EAR文件的根目录。

希望有人有建议!

2 个答案:

答案 0 :(得分:1)

WebSphere v6.1需要Java EE 1.4应用程序。确保您的应用:

  • 最多使用Java 1.5兼容性编译
  • 您在ear耳中的META-INF目录中有application.xml文件,并且它正确引用了Web模块。
  • 您在WEB-INF文件夹中的war文件中有web.xml

检查两个描述符的模式:

application.xml应该是:

<application xmlns="http://java.sun.com/xml/ns/j2ee" id="Application_ID" version="1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">

web.xml应该是:

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

您如何部署应用程序?

答案 1 :(得分:0)

我从RAD和我的非工作EAR从基本构建过程导出了一个可用的EAR文件。我用自定义构建的代码替换了WEB-INF / class目录,并且它工作正常。我继续扩展自定义过程中的代码选择,替换RAD EAR文件中的相应部分,直到找到破坏它的内容。

似乎罪魁祸首是我的webapp中的MANIFEST.MF文件没有CLASSPATH属性,而RAD生成的清单有一个空白的CLASSPATH属性。一个文件是50个字节,一个是25.几个字节有什么不同。