Implikationen des Aufbaus eines Java -Programms gegen die Gläser eines Webcontainers und die Bereitstellung des Einsatzes in einem anderen

StackOverflow https://stackoverflow.com/questions/6819688

Frage

Welche Auswirkungen haben die Auswirkungen des Aufbaus eines Java -Programms gegen die Gläser eines Webcontainers (sagen wir Stett) und es in einem anderen ausführen (sagen wir Tomcat)?

Ich habe eine Anwendung, die ich in der Jetty -Durring -Entwicklung betreibe, die aber für die Produktion auf einem Tomcat -Server bereitgestellt wird (warum? Weil es einfacher zu entwickeln scheint, ohne einen ganzen Tomcat -Server auszuführen.)

War es hilfreich?

Lösung

Sie sollten nur gegen die offiziellen Java ee-API für das Niveau zusammenstellen, auf das Sie abzielen, für nicht Developer Builds. Vorzugsweise durch einen Build -Motor. Vorzugsweise auf einem anderen Betriebssystem als Sie entwickeln.

Für eine Webanwendung bedeutet dies die entsprechende Servlet -API, wie sie von Oracle heruntergeladen wurden. Ähnlich für eine Enterprise -Anwendung.

Nach meiner Erfahrung ist dies der beste Weg, um es gerade zu halten.


Bearbeiten: Java ee SDK ist erhältlich http://www.oracle.com/technetwork/java/javaee/downloads/index.html. Wenn Sie eine ältere Version als Java EE 6 benötigen, folgen Sie dem Link "vorherige Veröffentlichungen".

Andere Tipps

Sie können Probleme wie MethodNotFoundError erhalten. Normalerweise können Sie diese beheben, indem Sie sicherstellen, dass Versionen von Gläsern, die auf den Servern installiert sind, übereinstimmen.

Sie möchten normalerweise dort weiterentwickeln, wo Sie bereitstellen. Es könnte sein leicht Mit Tomcat vs Jetty schwerer zu entwickeln, aber Sie haben ein potenzielles Durcheinander eines Problems mit Jar -Konflikten identifiziert. Ist es nicht wert, sich mit Tomcat zu entwickeln, da Sie in Tomcat eingesetzt werden?

In der Regel wird der Schmerz, sich gegen Tomcat/Ihren Container der Wahl zu entwickeln, gemildert, indem die Zeit für das Schreiben einer Ant (oder eine andere) Aufgabe eingesetzt wird, die Ihren Code in Ihrem Entwicklungsbehälter bereitstellt. Der Arbeitszyklus beklagt

1) Schreiben Sie einen neuen Code
2) Stellen Sie sicher, dass die Tests bestehen
3) Führen Sie Ihr "Redeploy" -Skript aus
4) Streicheln Sie in der Laufinstanz herum

Sie wollen das wahrscheinlich tun.

Schließlich möchten Sie im Geiste der losen Kopplung wahrscheinlich nicht auf eine containerspezifische Bibliotheken angewiesen, wenn Sie es vermeiden können. Tun Sie das nur als absolutes letzte Ausweg.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top