Embedded Jetty mit annotierten Servlet-Mustern?

8

Der folgende Arbeitscode demonstriert, wie zwei Servlets in eine eingebettete Instanz von jetty eingefügt werden.

%Vor%

Wie sollte das geändert werden, so dass anstelle der URL "/ iphone" die URL-Muster in der Annotation des Servlets verwendet werden, zB

%Vor%     
Jacob 19.12.2012, 12:38
quelle

2 Antworten

6

Die Servlets befinden sich auf dem Klassenpfad Ihres Servers und nicht in einem WAR.

Servlet 3.0-Spezifikation lautet:

  

In einer Webanwendung haben Klassen, die Anmerkungen verwenden, ihre   Anmerkungen werden nur bearbeitet, wenn sie sich in der    WEB-INF/classes -Verzeichnis oder wenn sie in einer JAR-Datei gepackt sind   befindet sich in WEB-INF/lib innerhalb der Anwendung.

     

Der Implementierungsdeskriptor für die Webanwendung enthält ein neues   Attribut " metadata-complete " im Web-App-Element. Das   Das Attribut " metadata-complete " definiert, ob der Webdeskriptor ist   vervollständigen, oder ob die Klassendateien der JAR-Datei sein sollten   zum Zeitpunkt der Bereitstellung auf Annotationen und Webfragmente geprüft. Ob   "% Co_de%" wird auf " metadata-complete " gesetzt, das Deployment-Tool MUSS   Ignoriere alle Servlet - Annotationen, die in den Klassendateien des   Anwendungs- und Webfragmente. Wenn das Attribut Metadaten abgeschlossen ist   nicht angegeben oder auf "false" gesetzt, muss das Deployment-Tool prüfen   die Klassendateien der Anwendung für Anmerkungen und Scannen für das Web   Fragmente.

Sie müssen sich vielleicht ein WAR-Paket ansehen und einen Kontext mit mehr Funktionen wie %Co_de% .

Alternativ können Sie auch einen eigenen Annotations-Scan durchführen. Etwas von der Form:

%Vor%     
McDowell 19.12.2012, 15:16
quelle
0

Bitte sehen Sie meine Antwort hier: Embedded Jetty nicht finden Annotiertes Servlet

Kurz gesagt, müssen Sie:

  1. Legen Sie die erforderlichen Konfigurationen wie in der Antwort
  2. angegeben fest
  3. force Jetty, um die Klassen / Verzeichnisse zu durchsuchen, in die die kompilierten Servlets gehen. Standardmäßig scannt es nur Gläser, glaube ich.
Martin Vysny 24.01.2017 20:18
quelle