我試圖部署一個擴展類的web應用程序:org.eclipse.jetty.proxy.ProxyServlet。無法在Jetty 9上配置Webapp Classloading並設置系統類
在start.ini文件,我設置:
OPTIONS=Server,client,proxy
和我覈實,碼頭,分佈9.0.3.v20130506/lib目錄/碼頭,代理9.0.3.v20130506.jar文件
java -jar start.jar --dry-run
當我嘗試啓動服務器,我仍然得到以下異常:
java.lang.ClassNotFoundException: org.eclipse.jetty.proxy.ProxyServlet
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:420)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:382)
[...]
到類路徑中,通過使用命令實際上包括210
所以我通過文檔搜索,並從部分Jetty Classloading我意識到我必須配置WebAppContext,以便將ProxyServlet設置爲服務器類(因爲服務器類對於Web應用程序是隱藏的)。因此,我修改了jetty-web.xml文件,添加了以下幾行:
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Call name="prependServerClass"><Arg>-org.eclipse.jetty.proxy.</Arg></Call>
</Configure>
但它沒有奏效!然後我讀到:
您可以通過WebAppContext上的幾種方法配置webapp類加載。如果您正在使用Jetty API,則可以直接調用這些方法,或者如果使用上下文提供程序(???),則可以從上下文XML文件注入方法。您不能從jetty-web.xml文件設置這些方法,因爲它在設置了類加載器配置後執行。
這是什麼意思?我沒有在代碼中配置應用程序,而只是通過XML文件。因此,如果它不在jetty-web.xml文件中,我應該在哪裏放置WebAppContext配置?準確地說,我必須修改什麼路徑,文件名和XML部分?
好的,這真的有幫助,非常感謝! – Genny 2013-05-13 08:47:29