Spring と OSGi にまったく慣れていない開発者であり、久しぶりに Tomcat に戻ってきた私は、この質問を適切に行うことができるかどうかさえわかりません。しかし、誰かが私が行き詰まっている場所と、どのように進めるべきかを理解してくれることを願っています.
このセットアップには、Equinox OSGi コンテナーに Tomcat 7 バンドルが含まれています。バンドルはMainDispatcherServlet
、 を拡張する " " を提供しますorg.springframework.web.servlet.DispatcherServlet
。他のサービス バンドルは、がリッスンorg.springframework.web.servlet.mvc.Controller
する OSGi ホワイトボードにインスタンスを登録します。URL パターンを登録済みのコントローラーにマップする API を提供します。これにより、個々の要求のハンドラーを識別するために使用されます。多くの場合、サービス バンドルは javax を実装し、登録のためにラップします。MainDispatcherServlet
MainDispatcherServlet
SimpleUrlHandlerMapping
GenericServlet
ServletWrappingController
このくらいはスムーズに動作します。今、私は次のものが必要です
静的リソース
これらのバンドルで、イメージや jsps などの静的リソース (静的と見なされるかどうかは不明) にディスパッチします。
<mvc:resources>
SO で検索すると、正確な xml がよくわからなくても、クライアント バンドルの魔法でこれを行うことができるようです。MainDispatcherServlet
しかし、私が正しく理解している場合、リクエストは要件である を通過しません。
したがって、私が現在取っているアプローチは、org.apache.catalina.servlets.DefaultServlet
上記のように a を使用して Controller にラップすることです。これはこれを達成するための良い方法ですか?ここでの問題は、DefaultServlet
が必要でServletContext
あり、それを与えるものがないことです。
コントローラーに挿入できるを作成する簡単な方法はありますか?ServletContext
静的リソースに転送
さらに、 を使用してバンドル内の jsps にアクセスServlet
できるようにするには、同じクライアント バンドル内に別のクライアント バンドルが必要です。forward
RequestDispatcher
ServletContext
要約すると、(エレガントでなくても)実行可能ですか?もしそうなら、どうすれば ServletConteext を作成できますか? これが実行できない場合、代替手段は何ですか?
これはすべて非常に困難です。私は実装されたプロトタイプを求めていません (できません:)) が、「Y に X を挿入し、Z でラップすると、すべて設定されます」のような簡潔な指示よりも感謝します。