1

Spring と OSGi にまったく慣れていない開発者であり、久しぶりに Tomcat に戻ってきた私は、この質問を適切に行うことができるかどうかさえわかりません。しかし、誰かが私が行き詰まっている場所と、どのように進めるべきかを理解してくれることを願っています.

このセットアップには、Equinox OSGi コンテナーに Tomcat 7 バンドルが含まれています。バンドルはMainDispatcherServlet、 を拡張する " " を提供しますorg.springframework.web.servlet.DispatcherServlet。他のサービス バンドルは、がリッスンorg.springframework.web.servlet.mvc.Controllerする OSGi ホワイトボードにインスタンスを登録します。URL パターンを登録済みのコントローラーにマップする API を提供します。これにより、個々の要求のハンドラーを識別するために使用されます。多くの場合、サービス バンドルは javax を実装し、登録のためにラップします。MainDispatcherServletMainDispatcherServletSimpleUrlHandlerMappingGenericServletServletWrappingController

このくらいはスムーズに動作します。今、私は次のものが必要です

静的リソース

これらのバンドルで、イメージや jsps などの静的リソース (静的と見なされるかどうかは不明) にディスパッチします。

<mvc:resources>SO で検索すると、正確な xml がよくわからなくても、クライアント バンドルの魔法でこれを行うことができるようです。MainDispatcherServletしかし、私が正しく理解している場合、リクエストは要件である を通過しません。

したがって、私が現在取っているアプローチは、org.apache.catalina.servlets.DefaultServlet上記のように a を使用して Controller にラップすることです。これはこれを達成するための良い方法ですか?ここでの問題は、DefaultServletが必要でServletContextあり、それを与えるものがないことです。

コントローラーに挿入できるを作成する簡単な方法はありますか?ServletContext

静的リソースに転送

さらに、 を使用してバンドル内の jsps にアクセスServletできるようにするには、同じクライアント バンドル内に別のクライアント バンドルが必要です。forwardRequestDispatcherServletContext

要約すると、(エレガントでなくても)実行可能ですか?もしそうなら、どうすれば ServletConteext を作成できますか? これが実行できない場合、代替手段は何ですか?

これはすべて非常に困難です。私は実装されたプロトタイプを求めていません (できません:)) が、「Y に X を挿入し、Z でラップすると、すべて設定されます」のような簡潔な指示よりも感謝します。

4

1 に答える 1

0

Amdatu オープン ソース プロジェクトには、バンドルから静的リソースを簡単に提供できるバンドルがあります。これはエクステンダー パターンを使用します。つまり、バンドルのマニフェストにいくつかの情報を追加するだけで済みます。

X-Web-Resource-Version: 1.0
X-Web-Resource: path/to/resources

このページ [1] に移動し、下にスクロールして詳細を確認してください。もちろん、Amdatu の「リソース ハンドラー」バンドルとその依存関係をデプロイする必要があります。これは、このリポジトリ [2] にあります。

[1] http://amdatu.org/components/web.html

[2] http://repository.amdatu.org/snapshot/org.amdatu.web.resourcehandler/org.amdatu.web.resourcehandler-1.0.2.jar

于 2013-06-10T20:11:11.947 に答える