2

私はSpringを使用した依存性注入に不慣れで、一見困難なシナリオに直面しています。

私のアプリケーションは、プレーン オールド ソケットを介してレガシー システムからデータを受信し、そのデータで Interesting Things (tm) を実行し、埋め込みの Jetty インスタンスを使用して、Really Interesting Results (tm) を HTML5 Web ソケット経由で送り出します。さらに、Jetty サーバーは、すべての Interesting Stuff (tm) への RESTful インターフェイスを提供する Jersey サーブレットをホストします。

Spring を使用して、共有 DAO とアプリケーション サービス オブジェクトをレガシー側と Jersey リソースの両方に挿入したいと考えています。これには、ApplicationContext をレガシー コンポーネントと Jersey の間で共有する必要があります。アプリケーションコンテキストを作成し、レガシーコンポーネントに接続してから、組み込みの Jetty サーバーを構成するときにアプリケーションコンテキストを Jersey ServletContext に渡す必要があるようです (これは現在プログラムで行っています)。

残念ながら、既存のアプリケーション コンテキストを Jersey ServletContext に渡す方法は明確ではありません。それはできますか?より良いアプローチはありますか?

これは、SOで見つけた他のJersey + Jetty + Springの質問とは異なることに注意してください.Jerseyの外部でアプリケーションコンテキストを共有する必要はありません。

4

1 に答える 1

1

Jetty を開始するコードは次のようなものだと思います。

Server server = new Server(...);
server.setHandler(new WebAppContext(...));

ServletContextから取得しWebAppContextて、SpringContext を設定できます。

WebAppContext wac = new WebAppContext(...);
ServletContext sc = wac.getServletContext();
sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, springContext);
于 2012-05-09T12:56:46.363 に答える