Dmitry Stril
Dmitry Stril

Reputation: 1465

JAX-RS support in JBoss (Apache CXF, JBoss Resteasy)

I'm working on a java RESTful client using Apache CXF's Proxy-based API, deploying to JBoss 5.1. Here's my dependency in POM:

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-rs-client</artifactId>
        <version>3.0.1</version>
    </dependency>

I've written a test and it works just fine, but it doesn't work in application after deployment to JBoss. It fails with NPE after application start because @SessionContext was not injected for some reason and is null.

I suppose that there are some conflicts between dependencies, because when I change above POM to:

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-rs-client</artifactId>
    <version>3.0.1</version>
    <exclusions>
        <exclusion>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

the application works fine (!) until it creates a proxy:

authenticationProxy = JAXRSClientFactory.create(
    myServiceUrl, 
    IAuthenticationResource.class,
    Collections.singletonList(jsonProvider));

At this point it hangs and fails by timeout. I've tried to use Resteasy instead of CXF and had the same problem. I've tried to detect conflicts in my POM using maven plugins, but it gave nothing. I think that the problem is in JBoss. Does JBoss 5.1 support JAX-RS 2.0? Is there a default implementation of it within JBoss? Can I use Apache CXF 3.x.x in JBoss 5.1? Please advise

Upvotes: 1

Views: 2588

Answers (1)

dur
dur

Reputation: 16969

JAX-RS 2.0 is part of Java EE 7 Web Profile and JAX-RS 1.1 is part of Java EE 6 Web Profile.

JBoss AS 7.1 uses RESTEasy with JAX-RS 1.1, see JBoss AS 7.1 - JAX-RS Reference Guide.

JBoss AS 6 uses RESTEasy , see RESTEasy JAX-RS.

JBoss AS 5 has no implementation of JAX-RS, see RESTEasy JAX-RS, but some issues:

Resteasy has no special integration with JBoss Application Server so it must be configured and installed like any other container. There are some issues though. You must make sure that there is not a copy of servlet-api-xxx.jar in your WEB-INF/lib directory as this may cause problems. Also, if you are running with JDK 6, make sure to filter out the JAXB jars as they come with JDK 6.

If you use JBoss EAP 5.1 you find versions of JBoss AS, RESTEasy and Apache CXF at JBoss Enterprise Application Platform 5.

Upvotes: 2

Related Questions