2010-11-22 19 views
1

私はJavaアプリケーションでJetty 6を組み込みWebサーバーとして使用しています。これまで静的なコンテンツを提供する理由はありませんでしたが、今は静的なコンテンツを提供するだけでなく、ディレクトリのリストも表示したいと思います。Jetty 6:静的コンテンツとディレクトリ一覧

これを行うにはResourceHandlerクラスを使用しようとしましたが、いくつかの点ではmortbayがResourceHandlerのディレクトリリスト作成機能を削除しました。

私は、.jspやサーブレットの機能を追加せずにweb.xmlの設定をしないと、これをしたいと思っています。要するに私はプログラムでこれをやろうとしています。

私の人生にとって、私はこのオンラインの例を見つけることができません。誰かが私を正しい方向に向けることができますか?

ありがとうございます!

答えて

3

さて、Jettyに私が望んだことをやり遂げる方法を考えました。これは、いくつかのカスタムサーブレットの処理に加えて静的コンテンツをホストすることでした。

これを行う方法は、DefaultServletを作成し、それに応じてresourceBaseとpathSpecを設定し、/ www/*のディレクトリをホストできるようにすることです。しかし、これは決してうまくいかなかった。実際、pathSpecがどのように実際に動作するのか、定義されるべきかについては何の説明も見つけられませんでした。

したがって、追加のServletHandlerとContextを作成し、サーバーに静的コンテンツをホスティングするための元のコンテキストと新しいContextの両方を追加する必要がありました。

私はそうのようなことをやった:

 

Server srv = new Server(port); 

// create context and handler for my servlets 
Context ctx = new Context(); 
ServletHandler sh = new ServletHandler(); 

// ... adding servlets here ... 

// create context and handler for static content 
ServletHandler sh2 = new ServletHandler(); 
ServletHolder holder = new ServletHolder(new DefaultServlet()); 
holder.setInitParameter("resourceBase", staticResourceBase); 
sh2.addServletWithMapping(holder, "/*"); 
staticContext.setContextPath(staticPathSpec); 
staticContext.setServletHandler(sh2); 

// add both contexts to server 
ContextHandlerCollection contexts = new ContextHandlerCollection(); 
contexts.setHandlers(new Handler[] { staticContext, ctx }); 
srv.setHandler(contexts); 


 

これは、これを行うための好ましい方法ではないかもしれないが、それは私がプログラムで私の桟橋ベースのアプリをホスティング静的なコンテンツを追加することができませんでした。

0

webappを持っていて、突堤だけを走っているのなら、デフォルトではwebappのルートディレクトリ(WEB-INFがあるディレクトリなど)から静的なコンテンツを提供することがデフォルトだと思います。だから、例えば、あなたが以下のディレクトリれている場合があります。

mywebapp 
- WEB-INF 
- static 
    - site_img.gif 

をそして、あなたが今http://mysite.com/static/site_img.gif

を提供することができます私が間違っていると私はこの回答を削除しますならば、これはちょうど私の上からである私を修正頭。

+0

情報をいただきありがとうございますが、それは私が達成しようとしているものではありません。私はWEB-INFディレクトリを持っていません(私は推測するWebアプリケーションを提供していないのですか?)私はプログラムでDefaultServletをセットアップしようとしていて、コード内のパラメータを設定しようとしていますが、 – Tom

関連する問題