クラス org.eclipse.jetty.proxy.ProxyServlet を拡張する Web アプリケーションをデプロイしようとしています。
start.ini ファイルで、次のように設定しました。
OPTIONS=Server,client,proxy
次のコマンドを使用して、jetty-distribution-9.0.3.v20130506/lib/jetty-proxy-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)
[...]
そのため、ドキュメントを検索したところ、Jetty Classloadingのセクションから、 ProxyServlet をサーバー クラスとして設定解除するために、WebAppContext を構成する必要があることに気付きました (サーバー クラスは 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 を使用している場合は、これらのメソッドを直接呼び出すことができます。また、Context Provider (???) を使用している場合は、コンテキスト XML ファイルからメソッドを注入できます。クラスローダー構成が設定された後に実行されるため、jetty-web.xml ファイルからこれらのメソッドを設定することはできません。
どういう意味ですか??コード内でアプリケーションを構成するのではなく、XML ファイルのみで構成します。では、jetty-web.xml ファイルにない場合、WebAppContext 構成をどこに配置すればよいでしょうか? 正確に変更する必要があるパス、ファイル名、および XML セクションは何ですか?