[jboss-user] [JBoss Web Services] - Module Dependency for supporting external Handler

Paul Robinson do-not-reply at jboss.com
Thu Sep 29 10:35:05 EDT 2011


Paul Robinson [http://community.jboss.org/people/paul.robinson] created the discussion

"Module Dependency for supporting external Handler"

To view the discussion, visit: http://community.jboss.org/message/629328#629328

--------------------------------------------------------------
Hello,

I'm trying to configure module dependencies for a JAX-WS Web service. The complication seems to come from the fact that the service uses a Handler that lives inside a dependency rather than the same deployment archive as the Web service. The problem is appearing in the TXBridge and XTS demos in the JBossTS project. I would ask someone on the Transactions team to fix this, but unfortunately that is me ;-)

In more detail this is what we have:

The application (txbridge-demo-service.jar) that I am deploying depends on org.jboss.xts, which is where the handler that is specified in the handler chain lives. The Web service only uses JAX-WS annotations (rather than CXF) so I have the following dependencies specified in the manifest.mf of the txbridge-demo-service.jar:

{code} 
Dependencies: javax.xml.ws.api, org.jboss.xts, org.jboss.ws.cxf.jbossws-cxf-client services export
{code}

The module "org.jboss.xts" has the following module.xml, which includes dependencies to JBossWS:

{code:xml}
<module xmlns="urn:jboss:module:1.0" name="org.jboss.xts">

    <resources>
        <resource-root path="jbossxts-4.15.3.Final.jar"/>
        <resource-root path="jbossxts-api-4.15.3.Final.jar"/>
        <resource-root path="jbosstxbridge-4.15.3.Final.jar"/>
        <!-- Insert resources here -->
    </resources>

    <dependencies>
        <module name="javax.transaction.api"/>
        <module name="javax.resource.api" />
        <module name="system"/>
        <module name="org.jboss.jts"/>
        <module name="org.jboss.ws.api" services="export"/>
        <module name="org.jboss.ws.jaxws-client" services="export"/>
        <module name="org.jboss.ws.cxf.jbossws-cxf-client" services="export"/>
        <module name="org.jboss.logging"/>
        <module name="javax.xml.soap.api"/>
        <module name="javax.xml.ws.api"/>
        <module name="javax.xml.stream.api"/>
        <!-- this is needed to get javax.xml.namespace.QName but it would be better if it were exposed on its own -->
        <module name="javax.api"/>
        <!-- this is needed because our endpoints are not in a normal deployment and we need to be able
            to resolve the javax.jws.WebService annotation attached to them. presumably an endpoint
            found in a deployment gets this package auto-added to its module loader
            -->
        <module name="javax.jws.api"/>
        <!-- this is needed to ensure @Resource annotations on the JaxWS endpoint classes are in the
             classloader scope-->
        <module name="javax.annotation.api"/>
        <!-- this is needed to ensure the JaxWS endpoint classes canb refer to HttpServletRequest etc -->
        <module name="javax.servlet.api"/>
    </dependencies>
</module>
{code}

When I deploy my application I get the following stack trace:

{code}
10:14:55,883 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC00001: Failed to start service jboss.deployment.unit."txbridge-demo-service.jar".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."txbridge-demo-service.jar".INSTALL: Failed to process phase INSTALL of deployment "txbridge-demo-service.jar"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121) [jboss-as-server-7.1.0.Alpha2-SNAPSHOT.jar:7.1.0.Alpha2-SNAPSHOT]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [:1.6.0_22]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [:1.6.0_22]
    at java.lang.Thread.run(Thread.java:679) [:1.6.0_22]
Caused by: javax.xml.ws.WebServiceException: javax.xml.ws.WebServiceException: Failed to instantiate handler
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:350)
    at org.jboss.wsf.stack.cxf.deployment.EndpointImpl.doPublish(EndpointImpl.java:88)
    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:116)
    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:79)
    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.1.0.Alpha2-SNAPSHOT.jar:7.1.0.Alpha2-SNAPSHOT]
    ... 5 more
Caused by: javax.xml.ws.WebServiceException: Failed to instantiate handler
    at org.apache.cxf.jaxws.handler.HandlerChainBuilder.buildHandlerChain(HandlerChainBuilder.java:131)
    at org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder.processHandlerElement(AnnotationHandlerChainBuilder.java:267)
    at org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder.processHandlerChainElement(AnnotationHandlerChainBuilder.java:167)
    at org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder.buildHandlerChainFromClass(AnnotationHandlerChainBuilder.java:120)
    at org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder.buildHandlerChainFromClass(AnnotationHandlerChainBuilder.java:284)
    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.buildHandlerChain(JaxWsServerFactoryBean.java:237)
    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.initializeResourcesAndHandlerChain(JaxWsServerFactoryBean.java:216)
    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:203)
    at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:433)
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:322)
    ... 14 more
Caused by: java.lang.ClassCastException: class org.jboss.jbossts.txbridge.inbound.JaxWSTxInboundBridgeHandler
    at java.lang.Class.asSubclass(Class.java:3039) [:1.6.0_22]
    at org.apache.cxf.jaxws.handler.HandlerChainBuilder.buildHandlerChain(HandlerChainBuilder.java:121)
    ... 23 more
{code}

The ClassCastException refers to org.jboss.jbossts.txbridge.inbound.JaxWSTxInboundBridgeHandler which is the handler that lives in the org.jboss.xts module. I think the problem is that when JBossWS creates the endpoint it does not have JaxWSTxInboundBridgeHandler in it's Classloader as JBossWS does not depend on org.jboss.xts (which of course it shouldn't as org.jboss.xts depends on JBossWS). However, the application does depend on org.jboss.xts, which I don't think is of any help to JBossWS.

Is my reasoning about what is wrong correct and can anyone suggest how I can fix this?

Many thanks,

Paul Robinson.
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/629328#629328]

Start a new discussion in JBoss Web Services at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2044]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110929/41a892da/attachment-0001.html 


More information about the jboss-user mailing list