War 部署异常:解析器配置异常从 ServletContext 资源解析 XML

问题描述

我尝试在 jboss 上部署 War,但出现异常:

Jboss 日志:

{"WFLYCTL0062: 复合操作失败并被回滚。失败的步骤:" => {"Operation step-2" => {"WFL YCTL0080: 失败的服务" => {"jboss.deployment.unit."acs-init.war".undertow-deployment" => "java.lang.RuntimeE xception: org.springframework.beans.factory.BeanDeFinitionStoreException: Parser configuration exception 从 Ser 解析 XML vletContext 资源 [/WEB-INF/classes/properties/acs-ws-context.xml];嵌套异常是 javax.xml.parsers.ParserConfigurat ionException:无法使用 XSD 进行验证:您的 JAXP 提供程序 [com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactor yImpl@293fa923] 不支持 XML 架构。您是否使用 Apache Crimson 在 Java 1.4 上运行?升级到 Apache Xerces(或 Ja va 1.5) 以获得完整的 XSD 支持。 引起:java.lang.RuntimeException: org.springframework.beans.factory.BeanDeFinitionStoreException: Parser configurati 关于从 ServletContext 资源 [/WEB-INF/classes/properties/acs-ws-context.xml] 解析 XML 的异常;嵌套异常是 j avax.xml.parsers.ParserConfigurationException:无法使用 XSD 进行验证:您的 JAXP 提供程序 [com.sun.org.apache.xerces.in ternal.jaxp.DocumentBuilderFactoryImpl@293fa923] 不支持 XML 架构。您是否使用 Apache Crimson 在 Java 1.4 上运行 ?升级到 Apache Xerces(或 Java 1.5)以获得完整的 XSD 支持。 引起:org.springframework.beans.factory.BeanDeFinitionStoreException: Parser configuration exception parsing XML from m ServletContext 资源 [/WEB-INF/classes/properties/acs-ws-context.xml];嵌套异常是 javax.xml.parsers.ParserConfi gurationException:无法使用 XSD 进行验证:您的 JAXP 提供程序 [com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderF actoryImpl@293fa923] 不支持 XML 模式。您是否使用 Apache Crimson 在 Java 1.4 上运行?升级到 Apache Xerces ( 或 Java 1.5) 以获得完整的 XSD 支持。 引起:javax.xml.parsers.ParserConfigurationException:无法使用 XSD 进行验证:您的 JAXP 提供程序 [com.sun.org. apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl@293fa923] 不支持 XML 架构。你在 Java 1.4 上运行吗? h 阿帕奇深红?升级到 Apache Xerces(或 Java 1.5)以获得完整的 XSD 支持。 引起:java.lang.IllegalArgumentException:org.apache.xerces.parsers.XML11Configuration 与 org.apache 不兼容。 xerces.xni.parser.XMLParserConfiguration"}}}}

来自 POM.xml :

...

    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>${xercesImpl.xercesImpl.version}</version>
    </dependency>

...

当我从 pom.xml 中删除 xerces 依赖项并从 lib 中删除 jar 时,war 已部署但它不起作用,我收到了来自 soap api 的响应:

     <html>
   <head>
      <title>Error</title>
   </head>
   <body>Internal Server Error</body>
</html>

我尝试了许多解决方案,例如添加 /jboss-eap-7.3/bin/standalone.conf jvm 参数,但似乎没有任何效果


if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-xms4000m -Xmx4000m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYstem_PKGS -Djava.awt.headless=true -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl"
else
...

Ps:当我将 lib 中的 xercesImpl-2.6.2.jar 替换为 xercesImpl-2.6.2-jaxb-1.0.6.jar 时, 我在standalone.conf中添加了战争正在部署的这个参数,但在soap中我有一个错误

添加的参数:

-Djavax.xml.soap.soAPFactory=com.sun.xml.internal.messaging.saaj.soap.ver1_1.soAPFactory1_1Impl 
-Djavax.xml.soap.soAPConnectionFactory=com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnectionFactory -Djavax.xml.soap.MetaFactory=com.sun.xml.internal.messaging.saaj.soap.saajMetaFactoryImpl

soapui 中的错误

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <soap:Fault>
         <faultcode xmlns:ns1="octo.com">ns1:8</faultcode>
         <faultstring>Problems creating saaj object model</faultstring>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>

请问我该如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)