I decided to convert one of my servicemix services over to cxf which was
working great on xfire. I added the cxf wsdl2java plugin for maven like
this:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf-version}</version>
<dependencies>
<dependency>
<groupId>org.apache.cxf </groupId>
<artifactId>cxf-rt-bindings-soap</artifactId>
<version>${cxf-version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/jaxws</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/CommunicationService.wsdl</wsdl>
<extraargs>
<extraarg>-verbose</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
and got this exception:
WSDLToJava Error : java.lang.NullPointerException
org.apache.cxf.tools.common.ToolException : java.lang.NullPointerException
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(
WSDLToJavaContainer.java:242)
at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(
ToolRunner.java:83)
at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:102)
at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:171)
at org.apache.cxf.maven_plugin.WSDL2JavaMojo.processWsdl (
WSDL2JavaMojo.java:186)
at org.apache.cxf.maven_plugin.WSDL2JavaMojo.execute(
WSDL2JavaMojo.java:102)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(
DefaultPluginManager.java:443)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(
DefaultLifecycleExecutor.java:539)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle
(DefaultLifecycleExecutor.java:480
)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(
DefaultLifecycleExecutor.java:459)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures
(DefaultLifecycleExecutor.java
:311)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(
DefaultLifecycleExecutor.java:278)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(
DefaultLifecycleExecutor.java :143)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:272)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (
DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java
:315)
at org.codehaus.classworlds.Launcher.launch (Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java
:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: java.lang.NullPointerException
at org.apache.cxf.tools.util.SOAPBindingUtil.getSoapHeaders(
SOAPBindingUtil.java:199)
at org.apache.cxf.binding.soap.SoapBindingFactory.initializeMessage(
SoapBindingFactory.java:507)
at
org.apache.cxf.binding.soap.SoapBindingFactory.initializeBindingOperation (
SoapBindingFactory.java:493)
at org.apache.cxf.binding.soap.SoapBindingFactory.createBindingInfo(
SoapBindingFactory.java:468)
at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildBinding(
WSDLServiceBuilder.java :490)
at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(
WSDLServiceBuilder.java:264)
at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(
WSDLServiceBuilder.java:154)
at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices (
WSDLServiceBuilder.java:143)
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(
WSDLToJavaContainer.java:161)
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(
WSDLToJavaContainer.java :234)
... 23 more
I took out the dependency cxf-rt-bindings-soap since I'm not using an
headers in my wsdl. When I did, this error went away.
My service will then build, when I deploy it though, I get the same error
again and the service archive won't deploy. I don't understand why it keeps
expecting me to use soap headers when I'm not using them:
INFO - DeploymentService - UnDeployed ServiceUnit
CommunicationService-jsr181-su from Component: servicemix
-cxf-se
ERROR - AutoDeploymentService - Failed to update Service Assembly:
CommunicationServiceSA-1.0-SNAPSHOT.0.tmp
java.lang.Exception: <?xml version="1.0" encoding="UTF-8"?>
<jbi-task xmlns="http://java.sun.com/xml/ns/jbi/management-message"
version="1.0">
<jbi-task-result>
<frmwk-task-result>
<frmwk-task-result-details>
<task-result-details>
<task-id>deploy</task-id>
<task-result>FAILED</task-result>
<message-type>ERROR</message-type>
</task-result-details>
</frmwk-task-result-details>
</frmwk-task-result>
<component-task-result xmlns="
http://java.sun.com/xml/ns/jbi/management-message">
<component-name>servicemix-cxf-se</component-name>
<component-task-result-details>
<task-result-details>
<task-id>deploy</task-id>
<task-result>SUCCESS</task-result>
</task-result-details>
</component-task-result-details>
</component-task-result>
<component-task-result>
<component-name>servicemix-cxf-bc</component-name>
<component-task-result-details>
<task-result-details>
<task-id>deploy</task-id>
<task-result>FAILED</task-result>
<message-type>ERROR</message-type>
<task-status-msg>
<msg-loc-info>
<loc-token/>
<loc-message>Unable to parse result string</loc-message>
</msg-loc-info>
</task-status-msg>
<exception-info>
<nesting-level>1</nesting-level>
<loc-token/>
<loc-message>java.lang.NullPointerException</loc-message>
<stack-trace><![CDATA[javax.jbi.management.DeploymentException:
java.lang.NullPointerException
at org.apache.servicemix.cxfbc.CxfBcConsumer.validate(
CxfBcConsumer.java:288)
at org.apache.servicemix.common.AbstractDeployer.validate(
AbstractDeployer.java:58)
at org.apache.servicemix.common.xbean.BaseXBeanDeployer.validate(
BaseXBeanDeployer.java:55)
at org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(
AbstractXBeanDeployer.java:95)
at org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(
BaseServiceUnitManager.java:88)
at org.apache.servicemix.common.BaseServiceUnitManager.deploy(
BaseServiceUnitManager.java:69)
at
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(
DeploymentService.java:508)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.checkPendingSAs(
AutoDeploymentService.java:479)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.checkPendingComponents
(AutoDeploymentService.java:53
2)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateSharedLibrary
(AutoDeploymentService.java:314)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(
AutoDeploymentService.java:251)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory(
AutoDeploymentService.java:647)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(
AutoDeploymentService.java:60)
at org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(
AutoDeploymentService.java:611)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Caused by: java.lang.NullPointerException
at org.apache.cxf.tools.util.SOAPBindingUtil.getSoapHeaders(
SOAPBindingUtil.java:199)
at org.apache.cxf.binding.soap.SoapBindingFactory.initializeMessage(
SoapBindingFactory.java:507)
at
org.apache.cxf.binding.soap.SoapBindingFactory.initializeBindingOperation(
SoapBindingFactory.java:493)
at org.apache.cxf.binding.soap.SoapBindingFactory.createBindingInfo(
SoapBindingFactory.java:468)
at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildBinding(
WSDLServiceBuilder.java:490)
at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(
WSDLServiceBuilder.java:264)
at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(
WSDLServiceBuilder.java:158)
at org.apache.cxf.wsdl11.WSDLServiceFactory.create(
WSDLServiceFactory.java:117)
at org.apache.servicemix.cxfbc.CxfBcConsumer.validate(
CxfBcConsumer.java:215)
... 15 more
]]></stack-trace>
</exception-info>
</task-result-details>
</component-task-result-details>
</component-task-result>
</jbi-task-result>
</jbi-task>
at org.apache.servicemix.jbi.framework.ManagementSupport.failure(
ManagementSupport.java:125)
at org.apache.servicemix.jbi.framework.ManagementSupport.failure(
ManagementSupport.java:111)
at
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(
DeploymentService.java:543)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.checkPendingSAs(
AutoDeploymentService.java:479)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.checkPendingComponents
(AutoDeploymentService.java:53
2)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateSharedLibrary
(AutoDeploymentService.java:314)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(
AutoDeploymentService.java:251)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory(
AutoDeploymentService.java:647)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(
AutoDeploymentService.java:60)
at org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(
AutoDeploymentService.java:611)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)