I need to include the following jar in my Apache CXF Spring Web service app. I use maven. I included the following dependency:
<dependency>
<groupId>manual</groupId>
<artifactId>xmlparserv2</artifactId>
<version>11.1.1.6.0</version>
</dependency>
That's a JAR that is part of Oracle common module. I installed it on my local Maven repository. When I run my service with this JAR included, I get the following error:
org.xml.sax.SAXParseException; lineNumber: 25; columnNumber: 113; <Line 25, Column 113>: XML-24500: (Error) Can not build schema 'http://www.springframework.org/schema/context' located at 'http://www.springframework.org/schema/context/spring-context.xsd'
oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:425)
oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:287)
oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:376)
oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:226)
oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:155)
org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
org.apache.cxf.transport.servlet.CXFServlet.createSpringContext(CXFServlet.java:160)
org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:74)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:71)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
oracle.xml.parser.schema.XSDException: Duplicated definition for: 'identifiedType'
oracle.xml.parser.schema.XSDBuilder.buildSchema(XSDBuilder.java:794)
oracle.xml.parser.schema.XSDBuilder.build(XSDBuilder.java:489)
oracle.xml.parser.schema.XSDValidator.processSchemaLocation(XSDValidator.java:999)
oracle.xml.parser.schema.XSDValidator.startElement(XSDValidator.java:604)
oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1524)
oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:409)
oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:355)
oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:226)
oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:155)
org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
org.apache.cxf.transport.servlet.CXFServlet.createSpringContext(CXFServlet.java:160)
org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:74)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:71)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
It is my understanding that this is a problem regarding XML parsers conflicts. I have read that this can be solved by adding this argument to the JVM:
-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
And in fact, this solves the issue. Howhever, this is not desirable for me, because it forces me to add arguments to the JVM, and that can cause conflicts with other resources deployed on the Application Server (e.g. Tomcat). I need to know if there is a way to solve this error without adding parameters to the JVM. For example, by adding something to the Spring configuration file, or something like that.