2009-09-22 15 views
21

テストアプリケーションにJettyを正常に埋め込みました。それは問題なしでファイルを提供することができます。 ここで、Jettyが独自のJarファイル内にあるファイルを処理できるかどうかを知りたいと思います。組み込みJettyがJarファイル内のファイルを探します

これが可能なら誰でも知っていますか?

答えて

-2

実際にはZIPファイルではないJARファイルではありますか? (わからない)それらを一時フォルダに解凍してそこから提供できますか?

+1

私はできますが、簡単にするために、Jar内に自己完結型のWebアプリケーションが必要です。 :) – LaSombra

+1

実際にjettyはwebappフォルダを設定しようとするとこれを内部的に行います。 – fd8s0

-7

答えが見つかりました。それは桟橋ではなく、Winstoneです。 http://winstone.sf.net

+0

しかし、OPはJettyについて尋ねました。 – MTCoster

+1

この回答はOPによるものです... – Asaf

+1

あなたがOPであるにもかかわらず、このソリューションは実際には解決策ではないので、ダウン投票してください。そして、あなたが直面した問題を抱えている人がこの解決策をとることは非常にまれな状況になります。 – alok

37

例は、トリックは、あなたのクラスパスの場所にファイルのURLを作成することですhttp://docs.codehaus.org/display/JETTY/Embedding+Jetty

で桟橋埋め込むページに記載されています。

String webDir = this.class.getClassLoader().getResource("com/company/project/mywebdir").toExternalForm(); 

ServletContextHandler context = new ServletContextHandler(); 
context.setContextPath("/"); 
context.setResourceBase(webDir); 
+1

どのクラスがこのコードを実行するはずですか? – phtrivier

+0

@phtrivier org.mortbay.jetty.Serverまたはorg.eclipse.jetty.server.Serverをインスタンス化するクラス。 –

+0

'request.getRequestDispatcher(...).forward(req、resp)'がJARファイルから実行しているときに 'WEB-INF'で' .jsp'ファイルを見つけられない場合、 –

5

Springを方程式に投げ込むとかなり簡単です。そして、それは行く:

 
... 

WebAppContext webAppContext = new WebAppContext(); 
webAppContext.setServer(server); 
webAppContext.setContextPath("/"); 
webAppContext.setResourceBase(new ClassPathResource("webapp").getURI().toString()); 

server.addHandler(webAppContext); 

.... 

これは、jettyがjarファイル内に必要なWebリソースを見つけるようになります。

+0

ありがとうございます。私はMaven + Assemblyプラグインでそれをやったよ:) – LaSombra

+1

どのようなタイプの 'サーバ'ですか? –

+1

@WimDeblauwe org.eclipse.jetty.server.Server – fionbio

関連する問題