Неправильный XML-документ Spring Beans не работает только на сайте клиента - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть приложение EAR, которое разворачивается как бриз в наших средах Jboss, настроенное в соответствии с клиентом (не в виде от клиента).

Приложение содержит XML-файл Spring Beans, который загружается сервлетом CXF

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:sec="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:soap="http://cxf.apache.org/bindings/soap" xmlns:jaxws="http://cxf.apache.org/jaxws"
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration" xmlns:cxf-beans="http://cxf.apache.org/configuration/beans" xmlns:cxf="http://cxf.apache.org/core"
       xmlns:cxf-policy="http://cxf.apache.org/policy" xmlns:cxf-soap="http://cxf.apache.org/bindings/soap"
       xsi:schemaLocation="http://www.springframework.org/schema/beans                https://www.springframework.org/schema/beans/spring-beans-4.3.xsd
                        http://www.springframework.org/schema/security             https://www.springframework.org/schema/security/spring-security-4.2.xsd
                        http://www.springframework.org/schema/context              https://www.springframework.org/schema/context/spring-context-4.3.xsd
                        http://www.springframework.org/schema/util                 https://www.springframework.org/schema/util/spring-util.xsd
                        http://www.springframework.org/schema/mvc                  https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
                        http://www.springframework.org/schema/context              https://www.springframework.org/schema/context/spring-context-4.3.xsd
                        http://cxf.apache.org/core                                 https://cxf.apache.org/schemas/core.xsd
                        http://cxf.apache.org/jaxws                                https://cxf.apache.org/schemas/jaxws.xsd
                        http://cxf.apache.org/bindings/soap                        https://cxf.apache.org/schemas/configuration/soap.xsd
                        http://cxf.apache.org/transports/http/configuration        https://cxf.apache.org/schemas/configuration/http-conf.xsd
                        http://cxf.apache.org/policy                               https://cxf.apache.org/schemas/policy.xsd
                        http://cxf.apache.org/configuration/security               https://cxf.apache.org/schemas/configuration/security.xsd
                        http://cxf.apache.org/configuration/beans                  https://cxf.apache.org/schemas/configuration/cxf-beans.xsd
                        "
       profile="DEVELOPMENT_MODE"
>
    <jaxws:endpoint id="#ImiServiceSoap" implementor="com.acme.security.saintpaulimi.ServiceSoapMock" address="/ImiServiceSoap">
        <jaxws:binding>
            <soap:soapBinding style="document" use="literal" version="1.1"/>
        </jaxws:binding>
    </jaxws:endpoint>
</beans>

Код сервлета (пустой класс аннотированного класса)

@WebServlet(name = "cxfPub",
    description = "Public WS /ws",
    urlPatterns = "/ws/*",
    loadOnStartup = 1,
    initParams = {
        @WebInitParam(name = "config-location",
            value = "classpath*:META-INF/context/servlet-publicWs/*-context.xml") 
    })
public class PublicWsServlet extends CXFServlet

Независимо от профиля Spring DEVELOPMENT_MODE, который включает максимизированную конечную точку, приложение не развертывается только на сайте клиента из-за следующей ошибки от Apache Xerces

2018-09-04 16:34:29 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 1021) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./app3: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./app3: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 22 in XML document from VFS resource ["/content/app3.ear/app3.war/WEB-INF/lib/app-web-ext-test-3.8.0.8-BETA.jar/META-INF/context/servlet-publicWs/saintpaulimisec-mocks-context.xml"] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 22; columnNumber: 2; cvc-elt.1.a: Cannot find the declaration of element 'beans'.
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85) [wildfly-undertow-7.0.4.GA-redhat-2.jar:7.0.4.GA-redhat-2]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [rt.jar:1.8.0_111]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_111]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_111]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_111]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_111]
    at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 22 in XML document from VFS resource ["/content/app3.ear/app3.war/WEB-INF/lib/app-web-ext-test-3.8.0.8-BETA.jar/META-INF/context/servlet-publicWs/saintpaulimisec-mocks-context.xml"] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 22; columnNumber: 2; cvc-elt.1.a: Cannot find the declaration of element 'beans'.
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:399)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
    at org.apache.cxf.transport.servlet.CXFServlet.createSpringContext(CXFServlet.java:151)
    at org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:74)
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:77)
    at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
    at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:78) [wildfly-undertow-7.0.4.GA-redhat-2.jar:7.0.4.GA-redhat-2]
    at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)
    at io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:239)
    at io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:133)
    at io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:527)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:101) [wildfly-undertow-7.0.4.GA-redhat-2.jar:7.0.4.GA-redhat-2]
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82) [wildfly-undertow-7.0.4.GA-redhat-2.jar:7.0.4.GA-redhat-2]
    ... 6 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 22; columnNumber: 2; cvc-elt.1.a: Cannot find the declaration of element 'beans'.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:201)
    at org.apache.xerces.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:132)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:394)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:282)
    at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2143)
    at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:788)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:283)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:733)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1754)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
    at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:875)
    at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:798)
    at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
    at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:230)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:298)
    at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
    ... 27 more

Я вижу ничего неправильно с документом XML. Я отредактировал имя клиента, но сохранил строки.

Эта проблема, вероятно, связана с Сбой Spring schemaLocation при отсутствии подключения к Интернету , поскольку сеть клиента может быть защищена брандмауэром. Но мы используем Spring 4.3.

Хотя моя проблема может быть связана с брандмауэром, применяются два факта:

  • Основной контекст приложения (здесь не отображается) DispatcherServlet работает как шарм. Если я удаляю PublicWsServlet и / или связанные с ним XML-файлы из приложения, он запускается
  • Мы используем Spring 4.3. Где еще упоминалось, проблема с автономными серверами заключается в исправлении версии Spring

Вопрос: что-то не так с моим XML-файлом? Что мешает запуску Jboss?

...