2 つの異なる Spring Web コンテキストを使用したいと考えています。それぞれに独自の contextConfig、Spring サーブレット、およびフィルターがあり、異なる URL にマップする必要があります。私は
- '/' にマッピングされた標準 Grails プロジェクト
- そして、マップしたい既存のSpring Webアプリ
/extra/
両方を 1 つの Tomcat にデプロイできることはわかっていますが、1 つのアプリ (1 つなど) を作成する方法を探していwar
ます。これにより、デプロイと開発のプロセスが簡素化されるからです。
このアプリケーションは、Bean などを共有する必要はなく、完全に分離する必要があります。どちらにも DispatcherServlet と DispatcherFilter があります (両方とも Spring Security を使用していますが、構成は異なります)
web.xml
このような webappを構成するにはどうすればよいですか?
新しいフィルターを追加しようとしました:
<filter>
<filter-name>extraSpringSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>contextAttribute</param-name>
<param-value>org.springframework.web.servlet.FrameworkServlet.CONTEXT.extraSpring</param-value>
</init-param>
<init-param>
<param-name>targetBeanName</param-name>
<param-value>extraSecurityFilterBean</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>extraSpringSecurityFilterChain</filter-name>
<url-pattern>/extra/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
そして春のディスパッチャーサーブレット:
<servlet>
<servlet-name>extraSpring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>springConfigLocation</param-name>
<param-value>classpath:extra-spring-web.xml</param-value>
</init-param>
</servlet>
どこ:
- クラスパス内の 2 つのコンテキスト xml (exra ライブラリ jar 内):
- extra-spring-web.xml
- extra-spring-security.xml ( !!!どのように設定すればよいですか?)
- extra-spring-security.xml
- かなり標準的なSpring Security構成です
- Beanを構成しました
extraSecurityFilterBean
- -web コンテキストからの Bean への依存関係があります (ただし、そうである必要はありません)
それは今半作業です:
- ログからわかるように、
extraSpring
サーブレットは Bean を正常にロードしますextra-spring-web.xml
/extra/
しかし、URLにアクセスした後、NoSuchBeanDefinitionException
「extraSecurityFilterBean」という名前のBeanが定義されていません。
それで、質問、コンテキストを定義するにはどうすればよいDelegatingFilterProxy
ですか?このファイルをメイン コンテキスト (contextConfigLocation param) に追加しようとしましたが、探しているものではありませんが、機能しませんでした。
DelegatingFilterProxy ソースを調べましたが、コンテキストをロードする方法が明確ではありません。