【问题】

[Primeton AppServer 6.5] [SEVERE] [] [javax.enterprise.system.core] [tid: _ThreadID=55 _ThreadName=admin-listener(3)] [timeMillis: 1625726615230] [levelValue: 1000] [[
部署应用程序 [webapp] 时发生异常 : org.xml.sax.SAXParseException; lineNumber: 160; columnNumber: 11; 存档文件 [bosent_baseline_framework_ghboa_web_war] 中的部署描述符文件 WEB-INF/web.xml 。 元素类型为 "web-app" 的内容必须匹配 "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)"。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
……

【解决】

方案一:

使用http://java.sun.com/dtd/web-app_2_3.dtd对web.xml 进行检查。dtd里web-app元素的要求是:

<!ELEMENT web-app (icon?, display-name?, description?, distributable?,
context-param*, filter*, filter-mapping*, listener*, servlet*,
servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?,
error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*,
login-config?, security-role*, env-entry*, ejb-ref*, ejb-local-ref*)>

能有这些子元素。同时根据dtd的规则:当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中,也就是icon, display-name这些必须按照顺序写,不能打乱书写顺序

方案二:

PAS中XML校验默认配置是“完全”,将配置改为“无”即可,配置路径:PAS控制台->域->应用程序配置->XML 验证