3 Replies Latest reply on Dec 11, 2009 8:21 AM by longbeach

    JBoss 5.1.0 GA + EJB 3.0: RESTful Web Services with Jersey

    longbeach

      Hi,
      I am using the Jersey implementation of the RESTful API (JSR -311) in an Enterprise application using JBoss as a server.

      I am using EJB 3.0 of course. Not EJB 3.1, which is still not available with JBoss.

      I'd like to expose a stateless session bean as a restful web service. Here is the code of its interface :

      import javax.ejb.Remote;
      import javax.ws.rs.GET;
      import javax.ws.rs.Path;
      
      @Path("/something")
      @Remote
      public interface blablaRemote {
      
       @GET
       String get();
      
       //public boolean doSomething(String one);
      
      }
      


      And the code of the bean :

      import javax.ejb.Stateless;
      
      @Stateless
      public class blablaBean implements blablaRemote {
      
       public String get() {
      
       return "HELLO FROM SESSION BEAN";
       }
      
      }
      


      My EJBs are located in an EJB project which is inside an Enterprise application (EAR file). How do you call that exposed resftul web service ?
      I do have a Web project in that Enterprise application.

      If using an URL, for a GET resource, what would it be like ?

      http://localhost/EARname/something ?
      http://localhost/EARname/EJBProjectName/something ?
      ...

      Thanks for helping.



        • 1. Re: JBoss 5.1.0 GA + EJB 3.0: RESTful Web Services with Jers
          longbeach

          Hi,
          i got it working. It was just a basic configuration problem in Eclipse.

          But now I have a question regarding injection of resources.
          I am using the Jersey implementation of JSR-311.

          I use EJB 3.0 (not 3.1). I have exposed a stateless session bean as a RESTful web service.

          @Path("/blabla")
          @Stateless
          public class MyBean implements MyBeanRemote{

          @PersistenceContext
          private EntityManager em;
          ...
          }

          I try to inject a persistence context but it is not working. em is null.

          So my question is :
          do injection of resources (@PersistenceContext, @EJB ...) cease to work in a stateless session bean that has been exposed as a RESTful web service ?

          Thanks

          • 2. Re: JBoss 5.1.0 GA + EJB 3.0: RESTful Web Services with Jers
            jaikiran

            Before i answer this, let me tell you that i don't have experience with RESTful web services (and haven't yet found time to read through the docs).

            "longbeach" wrote:

            How do you call that exposed resftul web service ?

            "longbeach" wrote:

            Hi,
            i got it working.

            Can you tell us how you got that working? I mean how did you call the exposed RESTful web service? I even don't know whether exposing a SLSB as a RESTful web service guarantees any EJB semantics (like tx). Does it?



            • 3. Re: JBoss 5.1.0 GA + EJB 3.0: RESTful Web Services with Jers
              longbeach

              Jaikiran, I got it working by adding the EJB project as a library in my Web project, so that was just a configuration problem in Eclipse.

              Now regarding the "theory", you might want to check the exchanges i just had with Adam Bien here :
              http://www.adam-bien.com/roller/abien/entry/restful_calculator_with_javascript_and