2016-06-13 6 views
0

Ich versuche, WebAppContext als Jetty-Server-Handler festzulegen, und es schlägt bei dem Aufruf von server.setHandler() fehl. Gibt folgende Nachricht in Ausnahme. Jede Hilfe würde sehr geschätzt werden.Einstellung WebContextHandler zu Jetty-Server schlägt fehl

org.eclipse.jetty.servlet.ServletContextHandler (Lorg/eclipse/Anlegestelle/server/HandlerContainer;. Ljava/lang/String; Lorg/eclipse/Anlegesteg/server/session/SessionHandler; Lorg/eclipse/Anlegestelle/Sicherheit SecurityHandler /; Lorg/eclipse/Anlegestelle/Servlet/ServletHandler; Lorg/eclipse/Anlegesteg/Server/handler/Fehlerbehandler; I) V

WebAppContext webAppContext = new WebAppContext("samples/webapp", "/"); 
    webAppContext.setConfigurationClasses(new String[]{ 
      "org.eclipse.jetty.webapp.WebInfConfiguration", 
      "org.eclipse.jetty.webapp.WebXmlConfiguration"});   
Server server = new Server(port); 
server.setHandler(webAppContext); 
server.start(); 

ich bin mit Anlegesteg Version 9.2.16.v20160414. Danke im Voraus.

Gelöst: Dies ist jetzt gelöst. Es gab einen Abhängigkeitskonflikt

+0

Hallo Rajind, bemerkte ich, dass auf server.setHandler(), können Sie eine Fabrik bieten WebAppContext Objekt anstelle der Verwendung der von Ihnen oben erklärt haben. Könnte das etwas mit dem Fehler zu tun haben, den Sie bekommen? –

+0

@LucasT. Es tut uns leid. Ich hatte gerade einen Fehler gemacht, als ich den Code dort hinzufügte. Nein. Ich benutze den angegebenen Code in meinem ursprünglichen Code. –

+0

Hi Rajind, läuft diese Jetty-Instanz in Bezug auf ein Java-Webanwendungs-Framework? –

Antwort

1

Lassen Sie den setConfigurationClasses() Aufruf vollständig und verwenden Sie die Standardeinstellungen.

Der Code, den Sie haben, hebt die meisten Anforderungen der Servlet-Ebene für WebApps auf, wodurch etwa 80% der Funktionen von Webapps ungültig werden.

Obwohl es möglich ist, mit weniger als Standard-Webapp-Konfigurationsklassen zu arbeiten, ist diese Art der Operation sehr weit fortgeschritten. Versuchen Sie nicht, die Standardkonfigurationsklassen zu entfernen, wenn Sie nicht genau wissen, was Sie tun, und die Rolle aller der vorhandenen Konfigurationsklassen zuerst verstehen.

Wenn Sie Code im Web sehen, der dies tut, vermeiden Sie es (vorerst).

Das heißt, wenn Sie Code sehen, fügt die Standardkonfiguration Klassen, das ist normal.

Hinweis: Jetty ist sehr modular, und Sie können Umgebungen auf einige wirklich beeindruckende Modi einstellen/optimieren. Sobald Sie anfangen, in Jetty zu graben, werden Sie sehen, dass nichts benötigt wird, nicht einmal der Server!

Diese modulare Art ist einzigartig in der Welt der Java-Webserver und ist die Quelle vieler Verwirrung für Leute, die mit anderen Servern vertraut sind. Die Erwartungen, dass es "nur funktioniert" ist wahr, aber nur im Zusammenhang mit definierten Vorgaben. Je mehr Sie sich von den Standardeinstellungen entfernen, desto mehr Arbeit müssen Sie selbst erledigen.

1

Hier ist ein Beispiel von Standard Wicket 7 quickstart maven set-up. Dies ist von der Start-Klasse, die einen Anlegesteg 9-Server für Unit-Testzwecke einrichtet.

Unten ist die abgespeckte Version, die auf eine etwas andere Weise zu Ihrer eingerichtet ist. Hoffentlich wird Ihnen von Nutzen sein:

Server server = new Server(); 
ServerConnector http = new ServerConnector(server); 
http.setPort(8080); 
server.addConnector(http); 

WebAppContext bb = new WebAppContext(); 
bb.setServer(server); 
bb.setContextPath("/"); 
bb.setWar("src/main/webapp"); 

server.setHandler(bb); 

try 
{ 
    server.start(); 
    server.join(); 
} 
catch (Exception e) 
{ 
    e.printStackTrace(); 
    System.exit(100); 
}