How can I use Apache CXF 2.6.7 as dependency of my war project and not CXF that is installed in the modules of JBoss 7.1?

匿名 (未验证) 提交于 2019-12-03 02:54:01

问题:

I am upgrading to JBoss 7.1 and unfortunately I can not deploy my application. I want to use Apache CXF 2.6.7 that is dependency of our war project and not CXF that is installed in the modules of JBoss 7.1. Unfortunately, the deployment of WAR is failing with the following warning and exception:

10:39:39,511 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-5)  JBAS015876: Starting deployment of "example.war" 10:39:49,021 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry jaxb-api.jar in "/example.war/WEB-INF/lib/jaxb-impl-2.2.5.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,024 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry activation.jar in "/example.war/WEB-INF/lib/jaxb-impl-2.2.5.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,025 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry jsr173_1.0_api.jar in "/example.war/WEB-INF/lib/jaxb-impl-2.2.5.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,027 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry jaxb1-impl.jar in "/example.war/WEB-INF/lib/jaxb-impl-2.2.5.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,029 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry jaxb-api.jar in "/example.war/WEB-INF/lib/jaxb-xjc-2.2.5.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,031 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry jaxb-impl.jar in "/example.war/WEB-INF/lib/jaxb-xjc-2.2.5.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,033 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry jsr173_1.0_api.jar in "/example.war/WEB-INF/lib/jaxb-xjc-2.2.5.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,035 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry activation.jar in "/example.war/WEB-INF/lib/jaxb-xjc-2.2.5.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,038 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry activation.jar in "/example.war/WEB-INF/lib/mail-1.4.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,041 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry xml-apis.jar in "/example.war/WEB-INF/lib/serializer-2.7.1.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,047 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry xercesImpl.jar in "/example.war/WEB-INF/lib/xalan-2.7.0.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,049 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry xml-apis.jar in "/example.war/WEB-INF/lib/xalan-2.7.0.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,050 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-16)  Class Path entry serializer.jar in "/example.war/WEB-INF/lib/xalan-2.7.0.jar"  does not point to a valid jar for a Class-Path reference. 10:39:49,127 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-10)  JBAS015893: Encountered invalid class name 'org.springframework.context.ApplicationContext,org.springframework.beans.BeansException' for service type 'org.apache.cxf.bus.factory' 10:39:49,805 WARN  [org.jboss.as.ee] (MSC service thread 1-4)  JBAS011006: Not installing optional component org.apache.cxf.transport.http.Servlet3ContinuationProvider$Servlet3Continuation due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: Could not find default constructor for class org.apache.cxf.transport.http.Servlet3ContinuationProvider$Servlet3Continuation     at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)     at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)     at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]     at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]     at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_33]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_33]     at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_33]  10:39:49,826 WARN  [org.jboss.as.ee] (MSC service thread 1-4)  JBAS011006: Not installing optional component org.eclipse.jetty.continuation.Servlet3Continuation$1 due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: Could not find default constructor for class org.eclipse.jetty.continuation.Servlet3Continuation$1     at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)     at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)     at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]     at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]     at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_33]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_33]     at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_33]  10:39:49,854 WARN  [org.jboss.as.ee] (MSC service thread 1-4)  JBAS011006: Not installing optional component org.eclipse.jetty.continuation.Servlet3Continuation$2 due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: Could not find default constructor for class org.eclipse.jetty.continuation.Servlet3Continuation$2     at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)     at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)     at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]     at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]     at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_33]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_33]     at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_33]

My jboss-deployment-structure.xml is the following:

<jboss-deployment-structure>     <deployment>         <dependencies>             <module name="org.jboss.as.jmx"/>         </dependencies>          <exclusions>             <module name="javaee.api" />             <module name="org.hibernate"/>             <module name="javax.xml.bind.api"/>             <module name="org.apache.cxf"/>             <module name="org.jboss.ws.api"/>             <module name="jorg.jboss.ws.spi"/>             <module name="com.sun.xml.bind"/>             <module name="org.apache.xalan"/>             <module name="javax.mail.api"/>         </exclusions>     </deployment> </jboss-deployment-structure>

How can I solve warnings and errors and to deploy my application?

回答1:

You should exclude webservices subsystem from being activated for your deployment add this into META-INF/jboss-deployment-structure.xml

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">   <deployment>      <!-- exclude-subsystem prevents a subsystems deployment unit processors running on a deployment -->      <!-- which gives basically the same effect as removing the subsystem, but it only affects single deployment -->      <exclude-subsystems>         <subsystem name="webservices" />     </exclude-subsystems>   <deployment>  </jboss-deployment-structure>

or you can go to standalone.xml and remove subsystem there. To do so, you need to remove

<subsystem xmlns="urn:jboss:domain:webservices:1.x"> ... ... <subsystem>

part of configuration, extension part of on top can stay it wont hurt either way. or you can connect to server with CLI and run

/subsystem=webservices:remove()

In any case I would recommend to read bit about classloading in AS7 https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7

Just a note, exclude-subsystems functionality and deployment-strucure:1.2 was added in 7.1.2 and as such will not work on on 7.1.1.



回答2:

I can able to deploy Ear/War with CXF-2.7.14 with Spring 3.1.2 on Jboss-7.1.1.Final. The changes I did listed beow:

The following libraries are added 
  • CXF-2.7.14.jar, wss4j-1.6.17.jar, neethi-3.0.3.jar, geronimo-ws-metadata_2.0_spec-1.1.1.jar, ord.apache.servicemix.bundles.saaj-impl-1.3.18_1.jar, wsdl4j-1.6.3.jar, woodstox-core-asl-4.4.1.jar, xmlsec-1.5.7.jar

In jboss-deployment-structure.xml file add as shown below :

<jboss-deployment-structure>     <deployment>         <dependencies>             <module name="com.sun.xml.messaging.saaj" export="true" />         </dependencies>         <exclusions>             <module name="org.apache.log4j"/>             <module name="org.slf4j" />             <module name="org.apache.commons.logging"/>             <module name="org.log4j"/>               <module name="org.jboss.logging"/>                   </exclusions>     </deployment>     <sub-deployment name="project.webapp.war">         <exclusions>             <module name="org.apache.log4j"/>             <module name="org.slf4j" />             <module name="org.apache.commons.logging"/>             <module name="org.log4j"/>               <module name="org.jboss.logging"/>                   </exclusions>     </sub-deployment> </jboss-deployment-structure>

I can able to deploy with no issues. Hope it helps others.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!