0

WebAppProviderJettyを使用してWARのディレクトリを監視し、それらをデプロイしようとしています。すべてが正常に機能しているようです。Jettyは、WARを私が期待するコンテキストにデプロイしていると報告しています。しかし、そのページにアクセスしようとすると、Jettyはそこに何も見つかりません。

私のサーバーコードは

public static void main(String[] args) throws Exception {
    Server httpServer = new Server(3030);
    DeploymentManager deploymentManager = new DeploymentManager();
    httpServer.setDumpBeforeStop(true);

    ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection();
    contextHandlerCollection.setServer(httpServer);
    deploymentManager.setContexts(contextHandlerCollection);

    WebAppProvider appProvider = new WebAppProvider();
    appProvider.setMonitoredDirName("/tmp/wars/");
    appProvider.setScanInterval(1);
    appProvider.setDeploymentManager(deploymentManager);
    appProvider.setExtractWars(true);

    httpServer.addBean(deploymentManager);
    httpServer.addBean(contextHandlerCollection);
    httpServer.addBean(appProvider);

    httpServer.start();
}

jetty-runner jarを使用して個別にデプロイすると、WARファイルは正常にデプロイされますが、上記のコードを使用すると、次のような出力が表示されます。

2013-01-16 15:34:30.571:INFO:oejsh.ContextHandler:started o.e.j.w.WebAppContext{/sample,file:/private/var/folders/qg/1t5k32g9567cwwl7y6tfdhj40000gn/T/jetty-0.0.0.0-3030-sample.war-_sample-any-/webapp/},/private/tmp/wars/sample.war
2013-01-16 15:34:30.571:INFO:oejsh.ContextHandler:started o.e.j.w.WebAppContext{/sample,file:/private/var/folders/qg/1t5k32g9567cwwl7y6tfdhj40000gn/T/jetty-0.0.0.0-3030-sample.war-_sample-any-/webapp/},/private/tmp/wars/sample.war
2013-01-16 15:34:30.571:DBUG:oejuc.AbstractLifeCycle:starting HelloServlet

(私のWebアプリが開始されて存在していることを示すデバッグテキストがもっとたくさんあります/sample

アクセスすると127.0.0.1:3030/sample(サーバーをポート3030に配置)、404メッセージが表示され、Jettyログが表示されます

2013-01-16 15:34:47.799:DBUG:oejs.Server:REQUEST /sample on AsyncHttpConnection@63ce0072,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-5,l=10,c=0},r=1
2013-01-16 15:34:47.799:DBUG:oejs.Server:RESPONSE /sample  200 handled=false

何が欠けているのかわかりません。誰かがこの種のセットアップの実用的な例を持っていますか?

4

1 に答える 1

4

WebAppProviderを使用していますが、DeploymentManagerに接続していません(少なくとも正しい方法ではありません)

使用例:http: //git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml .java?h = jetty-8

削除する:

appProvider.setDeploymentManager(deploymentManager);

appProviderを設定した後、どこかに追加します。

deploymentManager.addAppProvider(appProvider);

また、サーバーにハンドラーを追加する必要があります。

HandlerCollection handlers = new HandlerCollection();
RequestLogHandler requestLogHandler = new RequestLogHandler();
handlers.setHandlers(new Handler[] { contextHandlerCollection, new DefaultHandler(), requestLogHandler });
StatisticsHandler stats = new StatisticsHandler();
stats.setHandler(handlers);
httpServer.setHandler(stats);
于 2013-01-16T21:36:40.237 に答える