How to use Apache Axis in JBoss EAP 6 and 7

Solution Unverified - Updated -

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP)
    • 6.x
    • 7.x

Issue

  • How do we configure EAP 6 server or the application to use my own class instead of accessing the jboss classes?

Currently we get this error:

    2013-06-06 14:01:57,920 ERROR [stderr] (Timer-2) java.lang.NoClassDefFoundError: javax/xml/rpc/handler/MessageContext
    2013-06-06 14:01:57,920 ERROR [stderr] (Timer-2)        at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    2013-06-06 14:01:57,921 ERROR [stderr] (Timer-2)        at org.apache.axis.client.Service.<init>(Service.java:113)

like for example we have jaxrpc.jar and jboss has jboss-jaxrpc-api_1.1_spec-1.0.1.Final-redhat-1.jar

Resolution

Use this to disable the WS - https://access.redhat.com/site/solutions/161263

In EAP 7 , you can exclude the webservices subsystem in your jboss-deployment-structure.xml as shown below:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
  <deployment>
    <!-- Exclude webservices subsystem so the implicit dependencies will not be added -->
     <exclude-subsystems>
        <subsystem name="webservices"/>
    </exclude-subsystems>
  </deployment>
</jboss-deployment-structure>

Or you could try to use the axis impl classes with the javaee 6 api classes.

If there is a problem and you need to use the axis WS api classes, then in jboss-deployment-structure.xml, you would need either create a module that is the same as javaee.api but doesn't include: javax.xml.ws.api, javax.xml.soap.api and then exclude javaee.api on your deployment and add a dependency on the new module

or in your jboss-deployment-structure.xml exclude javaee.api and list dependencies on:

        <module name="javax.activation.api" export="true"/>
        <module name="javax.annotation.api" export="true"/>
        <module name="javax.ejb.api" export="true"/>
        <module name="javax.el.api" export="true"/>
        <module name="javax.enterprise.api" export="true"/>
        <module name="javax.enterprise.deploy.api" export="true"/>
        <module name="javax.inject.api" export="true"/>
        <module name="javax.interceptor.api" export="true"/>
        <module name="javax.jms.api" export="true"/>
        <module name="javax.jws.api" export="true"/>
        <module name="javax.mail.api" export="true"/>
        <module name="javax.management.j2ee.api" export="true"/>
        <module name="javax.persistence.api" export="true"/>
        <module name="javax.resource.api" export="true"/>
        <module name="javax.rmi.api" export="true"/>
        <module name="javax.security.auth.message.api" export="true"/>
        <module name="javax.security.jacc.api" export="true"/>
        <module name="javax.servlet.api" export="true"/>
        <module name="javax.servlet.jsp.api" export="true"/>
        <module name="javax.transaction.api" export="true"/>
        <module name="javax.validation.api" export="true"/>
        <module name="javax.ws.rs.api" export="true"  services="export"/>
        <module name="javax.xml.bind.api" export="true"/>
        <module name="javax.xml.registry.api" export="true"/>

        <!-- This one always goes last. -->
        <module name="javax.api" export="true"/>

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments