前提・実現したいこと
ある2つのwarファイルがあるとき、片方のアプリケーションでログインを行ない、もう片方のアプリケーションはログイン処理を行った側のログイン情報を参照したいと考えています。
getContextというメソッドで異なるコンテキストのセッション情報が参照できると聞いたので試してみたのですがNullが返ってきてしまいうまくいきません。
以下にgetContextを利用しているコードを記載します。
参照される側のアプリケーションをMainSystem、参照する側をSubSystemとします。
該当のソースコード
java
1//SubSystemのコード 2@Component 3public class AuthenticationProviderImpl implements AuthenticationProvider { 4 5 @Override 6 public Authentication authenticate(final Authentication pAuth) throws AuthenticationException{ 7 UsernamePasswordAuthenticationToken auth = (UsernamePasswordAuthenticationToken) pAuth; 8 try { 9 System.out.println("AuthenticationProviderImplの呼び出し"); 10 ServletContext ctx = ((ServletRequestAttributes) RequestContextHolder 11 .getRequestAttributes()) 12 .getRequest() 13 .getServletContext() 14 .getContext("/MainSystem");//ここでNullPointerExceptionが発生する 15 Enumeration e = ctx.getAttributeNames(); 16 while(e.hasMoreElements()) { 17 String key = (String)e.nextElement(); 18 System.out.println( key + ":" + ctx.getAttribute(key)); 19 } 20 return auth; 21 } catch (AuthenticationException pE) { 22 pE.printStackTrace(); 23 throw pE; 24 } 25 } 26 27 /** 28 * 認証トークンの型確認. 29 */ 30 @Override 31 public boolean supports(final Class<?> pToken) { 32 33 return UsernamePasswordAuthenticationToken.class.isAssignableFrom(pToken); 34 } 35}
TomcatのWebApps内は以下のようになっています。
webapps
┣MainSystem
┗SubSystem
Tomcatのcontext.xmlにcrossContextという記載が必要という情報があったのでそれも記載しております。
<Context crossContext="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource><WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> </Context>
例外を発生させずに情報を参照するにはどうしたら良いでしょうか。
よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。