Wie aus EJB 3.1 als REST-Web-Dienst?
Entdeckte ich eine neue Funktion in java restful bei der Verwendung von EJB 3.1 beim Lesen eines Artikels auf Adam Bien ist blog.
Die Sache ist, dass Stateless und Singleton-beans können ausgesetzt werden als root-Ressourcen. Aber wie?
Ich habe versucht, es zu tun auf diese Weise:
@Stateless
@LocalBean
@Path("Hybrid")
public class RESTEJBSample {
@GET
@Path("/demo")
@Produces(MediaType.TEXT_PLAIN)
public String something() {
return "I am a Hybrid!!!";
}
}
Wenn ich die URL aufrufen http://localhost:8080/HybridSample/resources/Hybrid/demo bekomme ich einen 404-Fehler.
Appart dieses und nur um sicherzugehen, dass JAXRS ist, ist die Arbeit in meinem Projekt, habe ich eine einfache pojo Ressource, nur um zu testen, ob es funktioniert.
@Path("/genericresource")
public class GenericResource {
@GET
@Path("/samplemethod")
@Produces(MediaType.TEXT_PLAIN)
public String saySomething() {
return "Something!";
}
}
Hier, wenn ich die URL aufrufen http://localhost:8080/HybridSample/resources/genericresource/samplemethod funktioniert Es einwandfrei!
Also meine Fragen sind:
-
was fehlt in meinem EJB-so kann es funktionieren, wie eine web-service-Ressource, wie die Klasse GenericResource ist zu tun?
-
Gibt es einige zusätzliche Konfiguration benötigt?
-
Was sind die Einschränkungen bei der Verwendung von EJB als web service?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gemäß dieser NetBeans-tutorial über Jersey RESTFul-web-services, können Sie entscheiden, ob
oder
Ich habe immer die zweite Wahl, die darin besteht, in das hinzufügen dieses zu Ihrem
web.xml
:Einem REST Web service als EJB, nach meiner Erfahrung, äußerst nützlich. Können Sie Spritzen, wo immer Sie möchten, können Sie Spritzen es in Ihre EntityManager, und Sie können sogar verwenden Sie es als DAO, in einigen einfachen Situationen.
Bezüglich Ihrer Frage /Kommentar über die Funktionen und Einschränkungen: enterprise beans laufen in dem EJB-container, ob Sie eingesetzt werden, in eine war-Datei ist oder nicht. Sie können Spritzen in Sie ein JMS-ConnectionFactory-als Ressource wie in dieser Abschnitt der Java EE 6 Tutorial. Durch die Injektion von einer ConnectionFactory, können Sie das senden von JMS-Nachrichten. Wenn Sie möchten empfangen von JMS-Nachrichten asynchron, müssen Sie der Definition eines Message-Driven-Bean wie in dieser Abschnitt der oben erwähnten tutorial.
Ich habe nie versucht zu verlängern, den gleichen EJB verwendet für ein Jersey-web-service, um zu implementieren, die MessageListener-Schnittstelle, aber ich denke, das sollte ebenfalls möglich sein (wenn nicht, können Sie Spritzen auf eine MDB in Ihre Jersey root Stateless bean).
Schließlich können Sie mit Container-Verwalteten Transaktionen wie erklärt hier. Außerdem, von in diesem NetBeans tutorial:
New->Webservice
und nach einem Assistenten ich das Häkchen bei einer option, die sagt, dass das erstellen von web service Stateless bean. Die eingestellten Hinzugefügt, die die EJB in der .die war-Datei und nun funktioniert es einwandfrei. Mein Beispiel funktioniert jetzt, aber ich wäre auch daran interessiert zu wissen, was geschieht hinter den kulissen?, welche Dateien werden zurzeit bearbeitet von Net Beans? Und auch, was sind die Einschränkungen dieser Bohne? Ja, ich denke, das ist eine wirklich Coole Funktion zu.