Kann mir jemand sagen, ob es derzeit möglich ist, ein partielles Java EE 6-Webprofil über Jetty "zusammenzukleben"? Ich habe eine Menge Artikel über die Integration von eigenständigen EJB 3-Containern, JTA-Providern usw. mit älteren Jetty-Versionen gefunden, also wüsste ich, ob ich alles zusammen machen könnte. Ich möchte ein Servlet 3.0 + CDI + EJB 3.1 + JTA (wenn ich will, alles, was ich wirklich will deklarative Transaktionsverwaltung) + JPA 2-Umgebung über Jetty 8 (oder Tomcat 7, wenn keine Jetty-Alternativen verfügbar sind) zusammenstellen. Meine Fragen sind: Kann es getan werden? Hat es jemand geschafft? Irgendwelche Artikel darüber, wie OpenEJB, Atomikos, Weld, EclipseLink und Jetty (oder ein anderer ähnlicher Stapel) zusammenarbeiten? Irgendwelche magischen "do it all" pom.xml Dateien da draußen?
PS: Ja, ich weiß, ich könnte einfach GlassFish benutzen (was ich sehr mag). Ich frage mich nur, wie schwer es wäre, etwas ähnliches mit einem Servlet-Container zu erreichen, und wie die beiden Umgebungen in Bezug auf Komplexität, Leistung, Größe, Bereitstellungsgeschwindigkeit, Hardware-Ressourcenverbrauch usw. verglichen werden würden.
Ich würde dies noch in den frühen Stadien beschreiben, aber hier ist das, was wir bisher haben:
Beachten Sie, dass Apache TomEE auf einem ähnlichen Pfad lebt, d. h. "assembly / openejb-tomcat". Plan ist es, die Jetty-Version Apache JetSet aufzurufen und vollständig einzubetten. Die meisten Leute mit Commit arbeiten derzeit daran, Apache TomEE offiziell als Java EE 6 Web Profile zertifiziert zu machen. Ich würde diese Arbeit als in den späten Stadien beschreiben. Wir haben in Amazon EC2 ein tolles Setup eingerichtet, um das Webprofil TCK gegen TomEE mit hundert EC2 t1.micro Spot-Instanzen auszuführen. Es ist ziemlich süß. Die TCK-Vereinbarung mit Apache und Oracle erlaubt uns keinen öffentlichen Zugriff. Jeder Apache-Committer kann jedoch eine NDA signieren, um Zugriff zu erhalten.
Ok, also erwähne ich das alles über TomEE, denn der Plan ist, sobald wir mit der Tomcat-Version fertig sind, um es noch einmal mit Jetty (JetSet) zu machen. Viele von uns Committern, ich selbst und Jonathan Gallimore zum Beispiel, bevorzugen Jetty mit großem Abstand. Aber da der Tomcat-Integrationscode viel weiter fortgeschritten war und mehr Benutzer hatte, haben wir uns entschieden, diesen zuerst zu beenden. Es gibt unglaublich viel Arbeit, die nicht Tomcat-spezifisch ist, die wir in der Jetty-Version nutzen können; Zugang zum TCK legal, die Menge an Code, um es zum Laufen zu bringen, desto mehr Code, um es zu automatisieren, und zahlreiche Integrationsbits, die generisch und nicht spezifisch für Tomcat sind.
Alles, was gesagt wurde, es gibt keinen Grund, warum andere auf die Arbeit an einer Jetty-Version warten müssen, nur weil die meisten von uns immer noch die Tomcat-Version beenden. Apache-Projekte sollten als Einzelpersonen betrachtet werden, die zusammenarbeiten, nicht wie Oracle oder Redhat oder VMWare. Das kann gut und schlecht sein. Der gute Teil ist, dass wenn Sie oder jemand anderes die Jetty-Version hacken wollen, Sie das jetzt tun können. Sie müssen Patches für eine Weile einreichen, bis Sie Commit verdienen, aber jemand anderen den eigentlichen Commit-Befehl zu tun ist nicht so schlimm. Wenn du klein anfängst und aktiv und offen bleibst, ist es normalerweise ziemlich einfach, Commit zu verdienen. Der Schlüssel zu schnellen Patches ist ein steter Strom von kleinen bis mittelgroßen Patches. Jeder Schritt vorwärts oder seitwärts ohne Rückschritte ist meiner Meinung nach ein guter Patch. Solange die Leute sehen können, wohin Sie gehen, ist es gut genug. Sicherlich agiler als der One-big-patch-Ansatz und ermöglicht all die wirklich Spaß und kollaborative Magie auf dem Weg passieren.
Einige Threads, die gute Orte wären, um Hallo zu sagen. Schritt 1 ist nur Hallo zu sagen. Kein Code in der Hand, um auf der Dev-Liste zu sprechen oder ernst genommen zu werden:
Tomcat hat diesen Stack in einem Server namens TomEE (früher TomTom) implementiert.
Dies sind die Komponenten, die es verwendet.
%Vor%Soweit Jetty bin ich mir nicht sicher. OpenEJB ist Ihre einzige Option für EJB außerhalb eines JavaEE6-Containers (AFAIK) und ich bin mir nicht sicher, ob Jetty zu 100% damit getestet wurde. Für CDI können Sie immer etwas wie Seam verwenden.
Meiner Meinung nach ist das Spring-Framework die beste Option für den Jetty-Container (das ist nur meine Meinung). Nach meiner Erfahrung, nachdem ich versucht habe, Tomcat mit Open EJB zu arbeiten, ist Spring viel einfacher einzurichten.
Sie müssen sich auch daran erinnern, dass Open EJB zu diesem Zeitpunkt nicht den gesamten EJB 3.1-Stack implementiert.
Auch Open EJB wird nicht auf Tomcat 7 getestet. Sie müssen also bei Tomcat 6 bleiben, wenn Sie diese Route gehen.
OpenEjb hat keine Version mit JPA2-Unterstützung veröffentlicht, obwohl ihre Entwicklungsversion JPA2 fine AFAIK unterstützt. Ich benutze eingebettete OpenEjb in Jetty6, weil ich meine App noch nicht in neueren Jetties arbeiten konnte. Ich denke, es wird gerade daran gearbeitet, ein OpenEJB eng mit Jetty wie TomEE zu integrieren, aber das ist vielleicht noch weit weg.