4

API として Jetty 8.1.9 を使用し、サーバーに WebAppContext ハンドラーを追加して手動でデプロイしています。

Server server = new Server();

WebAppContext webapp = new WebAppContext();
webapp.setContextPath(CONTEXT_PATH);
webapp.setWar(WEBAPP_PATH);
webapp.setExtractWAR(false);
server.setHandler(webapp);

server.start();
server.join();

Web アプリケーションの WEB-INF/lib に jar が含まれていない場合、これは問題なく機能します。ただし、webapp に jar が含まれている場合、次の例外が発生します。

java.lang.IllegalArgumentException: !file: jar:file:/F:/projects/jetty-example/webapps/app.war!/WEB-INF/lib/whatever.jar
    at org.eclipse.jetty.webapp.WebAppClassLoader.addClassPath(WebAppClassLoader.java:245)

設定すると動作しますwebapp.setCopyWebInf(true);

私は間違っていますか、それはバグですか、それとも Jetty は war から直接ライブラリをロードできませんか?

編集:
私のセットアップに関するもう少し情報を提供するために、Jetty は、start.jar と同様に、すべてをセットアップするメイン クラスを持つ jar の内部に埋め込まれています。これは、標準的な桟橋の配置を単純化すること (もしそうなら、ファサード) を意図しています。特定の war パッケージのみが使用されますが、オプションである可能性があるため、実行可能 jar の外部にあります。したがって、ディレクトリ構造は次のようになります。

/ baseDirectory
  | embedded-jetty.jar
  / webapps
    | myWar1.war
    | myWar2.war
4

1 に答える 1

4

jetty jira のこのページwebapp.setCopyWebInf(true);に従って設定する必要があるようです。

于 2013-03-08T14:56:47.300 に答える