2017-03-15 8 views
1

Für Servlet 2.5, ein Jersey-Servlet Container in web.xml deklariert Servlet angeschlossen werden muss Jersey anschließen zu Tomcat.wie ist Jersey 3 Container

<web-app> 
    <servlet> 
     <servlet-name>MyApplication</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      ... 
     </init-param> 
    </servlet> 
</web-app> 

Für Servlet 3.x können wir das gleiche tun. Aber wir können auch das Jersey-Container-Servlet in web.xml loswerden und eine Unterklasse Application direkt darin einfügen.

Meine Frage ist, wie ist Jersey in Tomcat in diesem Fall integriert? Führt die Application Klasse implizit etwas aus, oder entdeckt Servlet Jersey Jar im Klassenpfad automatisch?

+0

Es gibt auch eine andere Alternative: nicht enthalten 'Servlet-mapping' in web.xml aber fügen Sie' @ javax.ws.rs.ApplicationPath ("/ rest-Pfad") 'in der Anwendungsunterklasse. –

Antwort

1

Ich bin nicht genau sicher, wie Trikot implementiert, aber es gibt mehrere Ansätze, sie könnten mit werden:

  • Es gibt eine Funktion namens ServletContainerInitializer in Servlets eingeführt 3.0 (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContainerInitializer.html), die eine Bibliothek erlaubt/Laufzeit benachrichtigt eines Startphase werden die Web-Anwendung und führen Sie alle erforderlichen programmatische Registrierung von Servlets, Filter und Hörer als Reaktion auf das

  • man kann seine Bibliothek als web-fragment erstellen, die Sie Web-fragment.xml haben können in deinem Glas wh Bevor Sie Servlets/Filter/etc. Dann wird diese beim Start web-fragment.xml mit der web.xml zusammengeführt. Als Ergebnis der im Web-Fragment registrierten Komponenten behandelt werden, als ob sie in der web.xml

  • registriert wurden

Edit: (von @peeskillet Kommentar) Jersey verwendet Servlet-Container initializer: https://github.com/jersey/jersey/blob/master/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/init/JerseyServletContainerInitializer.java

+1

erste -> https://github.com/jersey/jersey/blob/master/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/init/JerseyServletContainerInitializer.java –

+0

@peeskillet Dank , Habe ich meine Antwort aktualisiert –

Verwandte Themen