2011-09-05 120 views
2

我有一些將碼頭服務器嵌入到Java應用程序中的掙扎。我使用Spring配置的實際對象,我可以建立web應用程序沒有問題 - 但啓動服務器時,我得到這個問題...嵌入碼頭服務器問題

0 [main] INFO test.Server - Starting server in 'c:/workspace/test/war/' on port 9090 
34615 [main] INFO test.Server - Using resource base: src/main/webapp 
34615 [main] INFO test.Server - Using descriptor file: src/main/webapp/WEB-INF/web.xml 
2011-09-05 12:29:36.961:INFO::Logging to STDERR via org.mortbay.log.StdErrLog 
36344 [main] INFO test.Server - Starting Server! 
2011-09-05 12:29:37.023:INFO::jetty-6.1H.22 
2011-09-05 12:29:37.039:WARN::Failed startup of context [email protected]{/TestServer,file:/C:/workspace/test/war/src/main/webapp/} 
java.lang.ClassNotFoundException: org.mortbay.jetty.plus.webapp.EnvConfiguration 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
    at org.mortbay.util.Loader.loadClass(Loader.java:91) 
    at org.mortbay.util.Loader.loadClass(Loader.java:71) 
    at org.mortbay.jetty.webapp.WebAppContext.loadConfigurations(WebAppContext.java:859) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:431) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.Server.doStart(Server.java:224) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at test.Server.main(Server.java:84) 
2011-09-05 12:29:37.054:INFO::Started [email protected]:9090 

的問題似乎是與我的一些路徑的東西。 ..the目錄結構是直線前進(什麼行家 '建議') -

工作區/測試/戰爭/ -src /主/ JAVA /測試/ Server.java -src /主/ web應用/ WEB-INF /web.xml

除此之外,它屬於春天的東西,我已經在嘗試和真正的(通過tomcat)web.xml中設置。

主相關的代碼是這樣的(否則它是性能廢話):

svrLogger.info ("Starting server in '" + home + "' on port " + port); 

String rsrcBase = "src/main/webapp"; 
String webXml = rsrcBase + "/WEB-INF/web.xml"; 

svrLogger.info ("Using resource base: " + rsrcBase); 
svrLogger.info ("Using descriptor file: " + webXml); 

Server server = new Server(port); 
WebAppContext webapp = new WebAppContext(); 

webapp.setContextPath ("/TestServer"); 
webapp.setDescriptor (home + "/" + webXml); 
webapp.setResourceBase (home + "/" + rsrcBase); 
webapp.setParentLoaderPriority (true); 
server.setHandler(webapp); 

svrLogger.info ("Starting Server!"); 
server.start(); 
server.join(); 
svrLogger.info ("Joined and exiting"); 

任何幫助是非常有幫助的...。這是我第一次試圖讓自己的Web服務器(所以其他的建議是歡迎呢!)

+2

嘗試將jetty-plus.jar添加到您的類路徑中。我不知道爲什麼org.mortbay.jetty.plus.webapp.EnvConfiguration是必需的。 – gawi

+0

可能是我問了一個愚蠢的問題,但是如果你想將Jetty嵌入Java應用程序,爲什麼你需要web.xml?只需使用嵌入式jetty並啓動服務器 – Cratylus

+0

在這種情況下,您需要一個使用webapp體系結構 - 網絡應用程序需要一些描述符 – rybit

回答

2

嘗試包括

<dependency> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-jndi</artifactId> 
    <version>${jetty.version}</version> 
</dependency> 

它試圖加載這個類,因爲在碼頭JNDI沒有配置默認。

這是爲了更多地瞭解碼頭

https://jersey.java.net/documentation/latest/index.html

好運一個很好的資源!