0

クラス 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 セクションは何ですか?

4

1 に答える 1

0

ここで多くのことが起こっています。まず、典型的な使用法です... 通常、ProxyServlet を使用する人は、単純に jetty-proxy とその依存関係を war ファイルに入れ、web.xml で他のサーブレットと同じように構成します。

次に、jetty-web.xml ファイルについて言及します。それが webapp内にある xml ファイルである場合、それはwebapp コンテキストが基本的に構成された後に処理されるため、Webapp コンテキストのクラスローダー構成に影響を与えるには遅すぎます。Web アプリケーション コンテキストのサーバー クラスを微調整するために編集する必要があるファイルは、デプロイする Web アプリケーションのコンテキスト xml ファイルです。言い換えれば...このタイプ:

http://www.eclipse.org/jetty/documentation/current/quickstart-config-what.html#intro-jetty-configuration-contexts

これらのコンテキスト ファイルは通常、jetty 9 の jetty.home/webapps ディレクトリにあり、以前は 6、7、および 8 の jetty.home/contexts ディレクトリにありました。ディストリビューションを使用している場合は、これは、テスト webapp に使用される例です。

于 2013-05-10T18:45:14.600 に答える