<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
Latest JBossWS CXF build has broken XTS again
</h3>
<span style="margin-bottom: 10px;">
created by <a href="http://community.jboss.org/people/adinn">Andrew Dinn</a> in <i>JBoss Web Services Development</i> - <a href="http://community.jboss.org/message/607790#607790">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>Hi guys,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I have been working on integrating XTS into AS7 trunk and come across a problem in the CXF release (2.4.0, I believe). It's not a repeat of a previous regression at the code level but conceptually it is a regression. The specifc problem is detailed below. It happened because whoever updatd CXF assumed that wenevr you use WSA you must be invoking a request-reply web service API. That's true as far as the half-baked version  of WSA that Sun incorporated into the JaxWS-WSA JSR is concerned -- the one which removed the ability to install/detect WSA headers from the API. But it's no good maoing that assumption in general.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Not only is it quite possible to use WSA with one-way messages in CXF (or, even, in JBossWS native) it is also, for certain purposes, critical to be able to do this. In particular, the WSTX standards on which XTS is based requrie one-way messages which use WSA. So, when a CXF dev adopts this simplifying assumption XTS invariably breaks. This has happened almost every time the CXF version used by JBossWS has been upgraded. So, as well as fixing the problem in the current release I think it is important that we get teh CXF devs to include explicit tests in their tes suite to ensure that it is possible to use WSA with one way messages.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The specific problem I encountered happens during deployment of an endpoint. I have a war file, ws-t11-client.war which contains a  web,.xml which declares two servlets</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code jive-xml">    . . .
    <span class="jive-xml-comment"><!-- Client Side Endpoints --></span>
    <span class="jive-xml-tag"><servlet></span>
      <span class="jive-xml-tag"><servlet-name></span>CompletionInitiator<span class="jive-xml-tag"></servlet-name></span>
      <span class="jive-xml-tag"><servlet-class></span>com.arjuna.webservices11.wsat.sei.CompletionInitiatorPortTypeImpl<span class="jive-xml-tag"></servlet-class></span>
      <span class="jive-xml-tag"><load-on-startup></span>1<span class="jive-xml-tag"></load-on-startup></span>
    <span class="jive-xml-tag"></servlet></span>
    <span class="jive-xml-tag"><servlet></span>
      <span class="jive-xml-tag"><servlet-name></span>TerminationParticipant<span class="jive-xml-tag"></servlet-name></span>
      <span class="jive-xml-tag"><servlet-class></span>com.arjuna.webservices11.wsarjtx.sei.TerminationParticipantPortTypeImpl<span class="jive-xml-tag"></servlet-class></span>
      <span class="jive-xml-tag"><load-on-startup></span>1<span class="jive-xml-tag"></load-on-startup></span>
    <span class="jive-xml-tag"></servlet></span>
    . . .
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The first class declared in the web.xml is located under WEB-INF/classes and defined as follows</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>. . .</p><p><span>@WebService(name = "CompletionInitiatorPortType", targetNamespace = "</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06</a><span>",</span></p><p>        serviceName = "CompletionInitiatorService", portName = "CompletionInitiatorPortType"</p><p>)</p><p>@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)</p><p>@HandlerChain(file="/ws-t_handlers.xml")</p><p>@Addressing(required=true)</p><p>public class CompletionInitiatorPortTypeImpl</p><p>{</p><p>    @Resource</p><p>     private WebServiceContext webServiceCtx;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span>    @WebMethod(operationName = "CommittedOperation", action = "</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06/Committed" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06/Committed</a><span>")</span></p><p>    @Oneway</p><p><span>    @Action(input="</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06/Committed" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06/Committed</a><span>")</span></p><p>    public void committedOperation(</p><p><span>        @WebParam(name = "Committed", targetNamespace = "</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06</a><span>", partName = "parameters")</span></p><p>        Notification parameters)</p><p>    {</p><p>        MessageContext ctx = webServiceCtx.getMessageContext();</p><p>        . . .</p><p>    }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span>    @WebMethod(operationName = "AbortedOperation", action = "</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06/Aborted" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06/Aborted</a><span>")</span></p><p>    @Oneway</p><p><span>    @Action(input="</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06/Aborted" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06/Aborted</a><span>")</span></p><p>    public void abortedOperation(</p><p><span>        @WebParam(name = "Aborted", targetNamespace = "</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06</a><span>", partName = "parameters")</span></p><p>        Notification parameters)</p><p>    {</p><p>        MessageContext ctx = webServiceCtx.getMessageContext();</p><p>        . . .</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The second class is declared in essentially the same way.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>When I deploy the war I get the following output</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code jive-java">00:44:38,254 INFO  [org.jboss.ws.common.management.DefaultEndpointRegistry] (MSC service thread 1-4) remove: jboss.ws:context=ws-t11-client,endpoint=CompletionInitiator
00:44:38,256 INFO  [org.jboss.ws.common.management.DefaultEndpointRegistry] (MSC service thread 1-4) remove: jboss.ws:context=ws-t11-client,endpoint=TerminationParticipant
00:44:38,258 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.deployment.unit.<font color="red">"ws-t11-client.war"</font>.INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit.<font color="red">"ws-t11-client.war"</font>.INSTALL: Failed to process phase INSTALL of deployment <font color="red">"ws-t11-client.war"</font>
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121) [jboss-as-server-7.0.0.Beta4-SNAPSHOT.jar:7.0.0.Beta4-SNAPSHOT]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1675) [jboss-msc-1.0.0.Beta8.jar:1.0.0.Beta8]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_21]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_21]
    at java.lang.Thread.run(Thread.java:619) [:1.6.0_21]
Caused by: javax.xml.ws.WebServiceException: java.lang.NullPointerException
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:350)
    at org.jboss.wsf.stack.cxf.deployment.EndpointImpl.doPublish(EndpointImpl.java:71)
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:239)
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:509)
    at org.jboss.wsf.stack.cxf.configuration.NonSpringBusHolder.configure(NonSpringBusHolder.java:113)
    at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.startDeploymentBus(BusDeploymentAspect.java:109)
    at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.start(BusDeploymentAspect.java:132)
    at org.jboss.as.webservices.deployers.AspectDeploymentProcessor.internalDeploy(AspectDeploymentProcessor.java:78)
    at org.jboss.as.webservices.deployers.TCCLDeploymentProcessor.deploy(TCCLDeploymentProcessor.java:42)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) [jboss-as-server-7.0.0.Beta4-SNAPSHOT.jar:7.0.0.Beta4-SNAPSHOT]
    ... 4 more
Caused by: java.lang.NullPointerException
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildWSAActions(JaxWsServiceFactoryBean.java:547)
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.createOperation(JaxWsServiceFactoryBean.java:620)
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createInterface(ReflectionServiceFactoryBean.java:903)
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:429)
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:680)
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:501)
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:241)
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202)
    at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
    at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:157)
    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:192)
    at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:433)
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:322)
    ... 13 more
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The null pointer exception which causes the problem is in the following code taken from JaxWsServiceFactoryBean.buildWSAActions</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Hi guys,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I have been working on integrating XTS into AS7 trunk and come across a problem in the CXF release (2.4.0, I believe). It's not a repeat of a previous regression at the code level but conceptually it is a regression. The specifc problem is detailed below. It happened because whoever updatd CXF assumed that wenevr you use WSA you must be invoking a request-reply web service API. That's true as far as the half-baked version  of WSA that Sun incorporated into the JaxWS-WSA JSR is concerned -- the one which removed the ability to install/detect WSA headers from the API. But it's no good maoing that assumption in general.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Not only is it quite possible to use WSA with one-way messages in CXF (or, even, in JBossWS native) it is also, for certain purposes, critical to be able to do this. In particular, the WSTX standards on which XTS is based requrie one-way messages which use WSA. So, when a CXF dev adopts this simplifying assumption XTS invariably breaks. This has happened almost every time the CXF version used by JBossWS has been upgraded. So, as well as fixing the problem in the current release I think it is important that we get teh CXF devs to include explicit tests in their tes suite to ensure that it is possible to use WSA with one way messages.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The specific problem I encountered happens during deployment of an endpoint. I have a war file, ws-t11-client.war which contains a  web,.xml which declares two servlets</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre ___default_attr="xml" class="jive_text_macro jive_macro_code"><p>    . . .</p><p>    <!-- Client Side Endpoints --></p><p>    <servlet></p><p>      <servlet-name>CompletionInitiator</servlet-name></p><p>      <servlet-class>com.arjuna.webservices11.wsat.sei.CompletionInitiatorPortTypeImpl</servlet-class></p><p>      <load-on-startup>1</load-on-startup></p><p>    </servlet></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>    <servlet></p><p>      <servlet-name>TerminationParticipant</servlet-name></p><p>      <servlet-class>com.arjuna.webservices11.wsarjtx.sei.TerminationParticipantPortTypeImpl</servlet-class></p><p>      <load-on-startup>1</load-on-startup></p><p>    </servlet></p><p>    . . .</p></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The first class declared in the web.xml is located under WEB-INF/classes and defined as follows</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive_text_macro jive_macro_wiki"><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>. . .</p><p><span>@WebService(name = "CompletionInitiatorPortType", targetNamespace = "</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06</a><span>",</span></p><p>        serviceName = "CompletionInitiatorService", portName = "CompletionInitiatorPortType"</p><p>)</p><p>@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)</p><p>@HandlerChain(file="/ws-t_handlers.xml")</p><p>@Addressing(required=true)</p><p>public class CompletionInitiatorPortTypeImpl</p><p>{</p><p>    @Resource</p><p>     private WebServiceContext webServiceCtx;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span>    @WebMethod(operationName = "CommittedOperation", action = "</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06/Committed" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06/Committed</a><span>")</span></p><p>    @Oneway</p><p><span>    @Action(input="</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06/Committed" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06/Committed</a><span>")</span></p><p>    public void committedOperation(</p><p><span>        @WebParam(name = "Committed", targetNamespace = "</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06</a><span>", partName = "parameters")</span></p><p>        Notification parameters)</p><p>    {</p><p>        MessageContext ctx = webServiceCtx.getMessageContext();</p><p>        . . .</p><p>    }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span>    @WebMethod(operationName = "AbortedOperation", action = "</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06/Aborted" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06/Aborted</a><span>")</span></p><p>    @Oneway</p><p><span>    @Action(input="</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06/Aborted" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06/Aborted</a><span>")</span></p><p>    public void abortedOperation(</p><p><span>        @WebParam(name = "Aborted", targetNamespace = "</span><a class="jive-link-external-small" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06" target="_blank">http://docs.oasis-open.org/ws-tx/wsat/2006/06</a><span>", partName = "parameters")</span></p><p>        Notification parameters)</p><p>    {</p><p>        MessageContext ctx = webServiceCtx.getMessageContext();</p><p>        . . .</p></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The second class is declared in essentially the same way.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>When I deploy the war I get the following output</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre ___default_attr="java" class="jive_text_macro jive_macro_code"><p>00:44:38,254 INFO  [org.jboss.ws.common.management.DefaultEndpointRegistry] (MSC service thread 1-4) remove: jboss.ws:context=ws-t11-client,endpoint=CompletionInitiator</p><p>00:44:38,256 INFO  [org.jboss.ws.common.management.DefaultEndpointRegistry] (MSC service thread 1-4) remove: jboss.ws:context=ws-t11-client,endpoint=TerminationParticipant</p><p>00:44:38,258 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.deployment.unit."ws-t11-client.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."ws-t11-client.war".INSTALL: Failed to process phase INSTALL of deployment "ws-t11-client.war"</p><p>    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121) [jboss-as-server-7.0.0.Beta4-SNAPSHOT.jar:7.0.0.Beta4-SNAPSHOT]</p><p>    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1675) [jboss-msc-1.0.0.Beta8.jar:1.0.0.Beta8]</p><p>    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_21]</p><p>    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_21]</p><p>    at java.lang.Thread.run(Thread.java:619) [:1.6.0_21]</p><p>Caused by: javax.xml.ws.WebServiceException: java.lang.NullPointerException</p><p>    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:350)</p><p>    at org.jboss.wsf.stack.cxf.deployment.EndpointImpl.doPublish(EndpointImpl.java:71)</p><p>    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:239)</p><p>    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:509)</p><p>    at org.jboss.wsf.stack.cxf.configuration.NonSpringBusHolder.configure(NonSpringBusHolder.java:113)</p><p>    at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.startDeploymentBus(BusDeploymentAspect.java:109)</p><p>    at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.start(BusDeploymentAspect.java:132)</p><p>    at org.jboss.as.webservices.deployers.AspectDeploymentProcessor.internalDeploy(AspectDeploymentProcessor.java:78)</p><p>    at org.jboss.as.webservices.deployers.TCCLDeploymentProcessor.deploy(TCCLDeploymentProcessor.java:42)</p><p>    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) [jboss-as-server-7.0.0.Beta4-SNAPSHOT.jar:7.0.0.Beta4-SNAPSHOT]</p><p>    ... 4 more</p><p>Caused by: java.lang.NullPointerException</p><p>    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildWSAActions(JaxWsServiceFactoryBean.java:547)</p><p>    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.createOperation(JaxWsServiceFactoryBean.java:620)</p><p>    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createInterface(ReflectionServiceFactoryBean.java:903)</p><p>    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:429)</p><p>    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:680)</p><p>    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:501)</p><p>    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:241)</p><p>    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202)</p><p>    at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)</p><p>    at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:157)</p><p>    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:192)</p><p>    at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:433)</p><p>    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:322)</p><p>    ... 13 more</p></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The null pointer exception which causes the problem is in the following code taken from JaxWsServiceFactoryBean.buildWSAActions</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre>        . . .<br/>        if (action == null && addressing != null) {<br/><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>            operation.getInput().addExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME,</p><p>                                                       inputAction);</p><p>            operation.getInput().addExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME,</p><p>                                                       inputAction);</p><p>            <strong>operation.getOutput().</strong>addExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME,</p><p>                                                       computeAction(operation, "Response"));</p><p>            operation.getOutput().addExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME,</p><p>                                                        computeAction(operation, "Response"));</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>        } else {</p><p>            MessageInfo input = operation.getInput();</p><p>            input.addExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME, inputAction); </p><p>            if (!StringUtils.isEmpty(action.input())) {</p><p>                input.addExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME, inputAction);</p><p>            }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>            MessageInfo output = operation.getOutput();</p><p>            if (output != null && !StringUtils.isEmpty(action.output())) {</p><p>                output.addExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME, action.output());</p><p>                . . .</p></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The offending line is the one in bold. Notice that in the else clause the result of the getOutput() call is checked ut in the case where addressing is being used it is not checked. Clearly the code is based on the wrong assumption that code using WSA must be employing a request-reply exchange.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>This needs a CXF JIRA a san umbrella for an underlying CXF JIRA. I suspect that this is likely to be the first of several problems. It's hard for me to hand over a test case for you to use at the moment as  the XTS code is only integrated into AS7 using string and glue. Also, I have limited time to get this integration fixed so I need quick turnaround on a patch here. If you can provide advice on what I need to set up in order to rebuild a patched version of CXF I will happily continue to push on and debug as far as I can.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>regards,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Andrew Dinn</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/607790#607790">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Web Services Development at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2047">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>