我正在尝试编译和部署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文件的根目录。
希望有人有建议!
答案 0 :(得分:1)
WebSphere v6.1需要Java EE 1.4应用程序。确保您的应用:
检查两个描述符的模式:
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.几个字节有什么不同。