2011-02-03 10 views
0

私はspring-wsサーブレットコンテキストをSpringコンテキストの場合と同様にカスタマイズしようとしています。初期コンテキスト(サーバの起動時に初期化される)については、ContextLoaderを拡張してServletContextListenerクラスを実装しました。これはorg.springframework.web.context.ContextLoaderListenerクラスと同様です。私はcustomizeContext(ServletContext servletContext, ConfigurableWebApplicationContext applicationContext)メソッドをオーバーライドして初期コンテキストをカスタマイズし、プロパティに基づいてオプションのコンテキストXMLファイルを追加/削除することができます。このクラスをSpringのデフォルトのContextLoaderListenerの代わりにweb.xmlファイルのリスナーとして設定できました。これは期待どおりに機能します。Spring-WSのカスタムコンテキスト

私はspring-wsサーブレットのコンテキスト(WEB-INF\spring-ws-servlet.xmlで定義されているすべてのBean)に対して同様のアプローチを取っていますが、私はこれに対する解決策を見つけることができませんでした。私が考えることができるのは、私のカスタムコンテキストローダーに 'オプションの' Beanを含むXMLファイルを生成させて、spring-ws-servletコンテキストをインポートすることだけです。しかし、これはソリューションのハック・ジョブであり、よりよいアプローチが必要だと私は考えています。最初のWebサービスが呼び出されたときにspring-wsサーブレットのコンテキストをカスタマイズする方法については、誰でも提案していますか?

私は春に事前に2.5.6 &春-WS 1.5.9

感謝を使用しています。

+0

私はあなたに従うか分からない。 'ContextLoaderListener'ロジックは、サーブレットコンテキストではなく、ルートwebbappコンテキストに適用されます。以前の通常のSpringサーブレットと同様に、Spring-WSサーブレットはルートWebアプリケーションコンテキストにアクセスできます。 – skaffman

+0

Spring-WS Beanを宣言できる別のXMLファイルを宣言できます。ここにhttp://krams915.blogspot.com/2010/12/spring-ws-2-and-spring-3-mvc.htmlの例があります。これはSpring Framework 3.xxとSpring WS 2.xxを使用しています – chris

+0

両方に感謝あなたの応答のためにあなたの。私は、ContextLoaderListenerロジックがサーブレットコンテキストではなく、ルートwebappコンテキストに適用されることを理解しています。私はサーブレットのコンテキストをカスタマイズしようとしています。 EX-私はcontext.xmlにいくつかのbeanを定義しています。これらのBeanには、ルートWebアプリケーションコンテキストがロードされます。次に、spring-ws-context.xmlにエンドポイントがBeanとして定義されています。これらのエンドポイントの中には、特定のプロパティが真または偽でない限り、それらのエンドポイントの一部が必要でないため、ロードする必要はありません。サーブレットコンテキスト(spring-ws-servletで定義)をカスタマイズしたいと思います。アノテーションを使用してエンドポイントがマップされます。 – Steve

答えて

0

私はこれに対する解決策を見つけることができました。私はMessageDispatcherServletを拡張したクラスを作成し、postProcessWebApplicationContextメソッドをオーバーライドしました。その方法では、私は自分のプロパティに応じて条件付きで任意のコンテキストの場所を追加します。このメソッドが呼び出されると、親はコンテキスト上でrefresh()メソッドを呼び出し、追加のコンテキストがロードされます。

私が提案した別の解決策は、カスタム名前空間を作成し、条件が満たされた場合にインポートを実行する名前空間ハンドラを作成することでした。

関連する問題