2010-03-25 9 views
5

Seit EJB 3 haben wir einbettbare EJB-Container, JPA-Implementierungen können ohne einen Anwendungsserver verwendet werden, es gibt Weld für Kontexte und Abhängigkeitsinjektion und so weiter. Da auf vielen Systemen nur Tomcat verfügbar ist, frage ich mich, ob Java EE ohne einen Anwendungsserver aber mit einem Servlet-Container wie Tomcat verwendet werden könnte.Java EE ohne Anwendungsserver

Was müsste ich tun, um eine Java-Umgebung einzurichten? Welche Nachteile sehen Sie?

+0

Aber mit einem Web-Container? –

+0

Ja, basierend auf einem Servlet-Container. Ich habe das hinzugefügt. – deamon

+0

Siehe auch diese Frage, [Was bekomme ich außer EAR und EJB von einem Java EE App-Server, den ich nicht in einem Servlet-Container wie Tomcat bekomme?] (Http://stackoverflow.com/a/9199893/190816) –

Antwort

1

Sie benötigen im Allgemeinen einige Art von Container, auch wenn dieser Container keine Java EE-bezogenen Dienste bietet. Schließlich benötigen Sie einen langlebigen JVM-Prozess, um den von Ihnen ausgeführten Code zu hosten. Tomcat und Jetty werden die Arbeit gut machen und zusätzlich zu den grundlegenden Servlet-Diensten ein paar nützliche Extras bieten, die relevant sein werden, wie das Verbindungspooling.

2

Wenn ich gut verstehe, möchten Sie EJB3/JPA in einem Servlet-Container verwenden.

Es gibt nicht nur Stand-alone-Implementierungen von PPV, sondern auch embeddable EJB3 Container, wie OpenEJB oder Glassfish embeddable container. Nichts hindert Sie daran, einen solchen einbettbaren Container aus dem Servlet-Container zu starten, um EJB3 zu verwenden.

(Hinweis: Ich kenne nicht alle Details über Transaktionen. In einem voll funktionsfähigen App-Server haben Sie JTA und einen verteilten Transaktionsmanager. Sie haben das nicht in einem Servlet-Container wie Tomcat. JPA funktioniert mit JTA und JDBC, aber ich weiß nicht genau, wie ein einbettbarer Container ohne JTA funktioniert, aber ich denke, das würde funktionieren, da solche einbettbaren Container auch für Komponententests gedacht sind, bei denen kein JTA vorhanden ist Transaktionsmanager.)

Ein anderer Ansatz wäre, Spring zu verwenden. Spring und EJB3 sind sich tatsächlich sehr ähnlich geworden. Sie können den Spring-DI-Container innerhalb des Servlet-Containers starten und von den gleichen Funktionen wie EJB3 (deklarative Transaktionen usw.) profitieren. Siehe diesen Beitrag über Spring vs. EJB3.

Alle diese Technologien sind ziemlich modular geworden, vor allem mit Java EE-Profilen. Sie können Sevlets, EJB3, JMS, JPA, sogar JTA irgendwie unabhängig von einander benutzen. Sie können auch eine Umgebung erstellen, in der Sie die gewünschten auswählen, entweder mit Spring oder mit Java EE. Die Frage ist, wann es aufhört, Sinn zu machen und eher eine App zu benutzen. Server mit allem, was verfügbar und leicht zu verwalten ist. Ich denke, Servlet/EJB3/JPA ist die Grenze, wenn mehr benötigt wird, gehen Sie für eine App. Server.

5

Beachten Sie, dass Tomcat ein Anwendungsserver ist. Das heißt, im Oktober veröffentlichten wir Apache TomEE, das ist Tomcat mit den fehlenden JavaEE-Teilen hinzugefügt, dann Java EE 6 zertifiziert mit dem offiziellen TCK von Oracle.

Der Stack entwickelte sich aus dem, was früher einfach "OpenEJB/Tomcat" genannt wurde, was ein nützlicher Stack mit einem schlechten Namen war :) Wegen des "EJB" -Teils wurde er häufig übersehen, er lieferte auch Transactions, JMS, WebServices und mehr zu Tomcat. Der neue Name ist viel besser und jetzt ist es offiziell zertifiziert wie JBoss oder GlassFish. Wir freuen uns sehr auf seine Zukunft.

-1

J2EE ohne Anwendungsserver wurde vor Jahren von mir (Guy Pardon, von Atomikos) eingeführt, mit diesem bahnbrechenden Artikel: http://www.onjava.com/pub/a/onjava/2006/02/08/j2ee-without-application-server.html - konzentrierte sich auf JMS und JDBC zu der Zeit.

Im Allgemeinen ist es dank Spring und Hibernate einfach einzurichten. Tatsächlich wurde ich inspiriert, dies zu tun, nachdem ich ein Java-EE-Projekt gemacht hatte und mit der XML-Hölle konfrontiert wurde, die mit App-Servern und EJBs verbunden ist.Ohne Anwendungsserver wurden Dinge plötzlich viel einfacher und überprüfbarer.

Wenn Sie eine Tomcat-Installation benötigen, kann es etwas mühsamer zu konfigurieren sein, aber kürzlich hat Atomikos die integrierte Tomcat-Integration als Teil seines kommerziellen Angebots unter http://www.atomikos.com eingeführt.

HTH

+1

"Ich wurde inspiriert, dies zu tun, nachdem ich ein Java-EE-Projekt gemacht hatte und mit der XML-Hölle konfrontiert wurde, die mit App-Servern und EJBs verbunden ist" -> Das stimmt nicht mehr. J2EE ist sozusagen "veraltet", und diese Frage erwähnt Java EE, nicht J2EE. Seit Java EE 5 ist die Konfiguration fast 0. Jetzt haben wir Java EE 6 und Java EE 7, die in den meisten Fällen eine Konfiguration von 0 erfordern. Testen ist ebenfalls möglich und einfach. Werfen Sie einen Blick auf http://arquillian.org/ – zmirc