Comment exposer un EJB 3.1 comme un Service Web REST?

J'ai découvert une nouvelle fonctionnalité de java reposant lors de l'utilisation d'EJB 3.1 lors de la lecture d'un article sur le Adam Bien de l' blog.

Le truc, c'est que les Apatrides et Singleton haricots peuvent être exposées comme des ressources à la racine. Mais comment?
J'ai essayé de faire de cette façon:

@Stateless
@LocalBean
@Path("Hybrid")
public class RESTEJBSample {

    @GET
    @Path("/demo")
    @Produces(MediaType.TEXT_PLAIN)
    public String something() {
        return "I am a Hybrid!!!";
    }

}

Lorsque j'appelle l'URL http://localhost:8080/HybridSample/resources/Hybrid/demo j'ai une erreur 404.

Appart de cela et juste pour s'assurer que JAXRS est de travailler dans mon projet, j'ai créé un simple pojo de ressources juste pour tester si cela fonctionne bien.

@Path("/genericresource")
public class GenericResource {
    @GET
    @Path("/samplemethod")
    @Produces(MediaType.TEXT_PLAIN)
    public String saySomething() {
        return "Something!";
    }
}

Ici lorsque j'appelle l'URL http://localhost:8080/HybridSample/resources/genericresource/samplemethod Il fonctionne très bien!

Donc mes questions sont:

  • ce qui est manquant dans mon EJB de sorte qu'il peut fonctionner comme un service web de ressources telles que la classe GenericResource est en train de faire?
  • Est-il une configuration supplémentaire est nécessaire?
  • Quelles sont les limitations lors de l'utilisation d'EJB en tant que service web?

OriginalL'auteur sfrj | 2012-03-27