Exposing EJB method as REST service

ejb, rest

Solution

JAX-RS annotated enterprise beans in a stand-alone or in a separate ejb-jar file that is included in an EAR is not supported.

See below

http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.nd.iseries.doc%2Finfo%2Fiseriesnd%2Fae%2Ftwbs_jaxrs_ejb_localinterface.html

Problem

In J2EE 6 you can expose your EJB session bean as a REST web service as below ``` @Stateless @Path("/test") public class TestSessionBean { @GET @Produces("application/xml") public String getTest() { return "<?xml version='1.0' encoding='UTF-8'?><val>test session bean</val>"; } } ``` This works when I packaged the EJB in the .war, however, when I try to package my project into separate web and ejb modules inside an EAR I get an HTML 404 not found error. Can someone please explain? I'm using Glassfish v3 Here is my web.xml ``` <servlet> <servlet-name>TaskRestService</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>TaskRestService</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> ```

Original source