2016-06-13 52 views
0

我試圖將WebAppContext設置爲Jetty服務器處理程序,並且它在server.setHandler()調用時失敗。在例外情況下給出以下消息。任何幫助將不勝感激。 (Lorg/eclipse/jetty/server/HandlerContainer; Ljava/lang/String; Lorg/eclipse/jetty/server/session/SessionHandler; Lorg/eclipse/jetty/security)下載本文檔需要登錄,並付出相應積分。/SecurityHandler; Lorg /蝕/碼頭/ servlet的/ ServletHandler; Lorg /蝕/碼頭/服務器/處理/的ErrorHandler;我)V將WebContextHandler設置爲碼頭服務器失敗

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(); 

我使用碼頭版本9.2.16.v20160414。提前致謝。

求助: 現在就解決了。存在依賴衝突

+0

嗨Rajind,我注意到,在server.setHandler(),您提供一個工廠WebAppContext對象,而不是使用您上面定義的一個。這可能與你得到的錯誤有關嗎? –

+0

@LucasT。抱歉。在那裏添加代碼時我犯了一個錯誤。不,我實際上是在我原來的代碼中使用聲明的。 –

+0

嗨Rajind,這個jetty實例是否與任何java web應用程序框架有關? –

回答

1

完全刪除setConfigurationClasses()調用,並使用默認值。

您擁有的代碼正在取消WebApp的大部分servlet級別要求,導致大約80%的webapps功能無效。

雖然可以使用少於默認webapp配置類的運行,但這種操作是非常高級的用法。除非您完全知道自己在做什麼,並且首先了解現有配置類的全部的作用,否則不要嘗試去除默認配置類。

如果您在網絡上看到了這樣的代碼,請避免它(現在)。

這就是說,如果你看到代碼增加了的默認配置類,這是正常的。

注意:Jetty是高度模塊化的,您可以設置/調整環境到一些真正令人驚歎的模式。一旦你開始挖掘Jetty,你會發現沒有什麼是必需的,甚至不需要服務器!

這種模塊化的特性是獨一無二的Java Web服務器的世界,對於熟悉其他服務器的人們來說,這是非常混亂的根源。它「只是工作」的期望是真實的,但僅限於定義的違約情況。離開默認值越多,你必須做更多的工作。

1

以下是默認Wicket 7 quickstart maven set-up的示例。 這是來自Start類,它爲單元測試目的設置了一個jetty 9服務器。

以下是精簡版,與您的設置略有不同。希望將運用到你:

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); 
}