|
最近在websphere5.1上部署war包时遇到这样的问题: 消息
EAR 文件可能是损坏的和/或不完整的。
后来查看各方面资料,找到了问题所在。在使用标准的dtd方式验证web.xml时,webshpere5对web.xml的验证极为严格,其中的各个元素及其子元素无论是在名称上,还是在顺序上等等都要符合java官方规范,尤其是在出现顺序上。例如在web-app_2_3.dtd中定义<servlet></servlet>元素的定义如下:
<!ELEMENT servlet (icon?, servlet-name, display-name?, description?,
(servlet-class|jsp-file), init-param*, load-on-startup?, run-as?, security-role-ref*)>
那么如果你打算在was5.0中部署WAR包时就必须严格遵照该规范来书写该元素。如果你书写为以下方式:
<servlet>
<display-name>FetchFile</display-name>
<servlet-name>FetchFile</servlet-name>
<description>FetchAnnexServlet</description>
<servlet-class>com.egf.servlet.FetchFile</servlet-class>
</servlet>
那么was5.0仍然会报验证错误,仅仅因为servlet的子元素出现顺序未按照官方规范。应该为以下方式:
<servlet>
<servlet-name>FetchFile</servlet-name>
<display-name>FetchFile</display-name>
<description>FetchAnnexServlet</description>
<servlet-class>com.egf.servlet.FetchFile</servlet-class>
</servlet>
类似的,其他元素也应该遵循相应的规则。
如果在部署时出现该错误,可以参见was的错误日志,并按其错误提示修改相应的元素即可。 |
|
|