[jbossws-issues] [JBoss JIRA] Created: (JBWS-3305) jbossws-cxf wrongly assumes that code using WSA must be employing a request-reply exchange.

Jim Ma (JIRA) jira-events at lists.jboss.org
Tue May 31 01:28:00 EDT 2011


jbossws-cxf wrongly assumes that code using WSA must be employing a request-reply exchange.
-------------------------------------------------------------------------------------------

                 Key: JBWS-3305
                 URL: https://issues.jboss.org/browse/JBWS-3305
             Project: JBoss Web Services
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: jbossws-cxf
    Affects Versions: jbossws-cxf-4.0.0.Beta1
            Reporter: Jim Ma


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."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"
    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


The null pointer exception which causes the problem is in the following code taken from JaxWsServiceFactoryBean.buildWSAActions

 

 

        . . .
        if (action == null && addressing != null) {

 

            operation.getInput().addExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME,

                                                       inputAction);

            operation.getInput().addExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME,

                                                       inputAction);

            operation.getOutput().addExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME,

                                                       computeAction(operation, "Response"));

            operation.getOutput().addExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME,

                                                        computeAction(operation, "Response"));

 

        } else {

            MessageInfo input = operation.getInput();

            input.addExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME, inputAction);

            if (!StringUtils.isEmpty(action.input())) {

                input.addExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME, inputAction);

            }

 

            MessageInfo output = operation.getOutput();

            if (output != null && !StringUtils.isEmpty(action.output())) {

                output.addExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME, action.output());

                . . .

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.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jbossws-issues mailing list