2017-06-12 28 views
0

からの移行バルブjavacode私は、Tomcat 8.5へのTomcat 7から、当社のカスタム・バルブ・コードのいずれかを移行する必要があります。のTomcat 8.5:Tomcatの7

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpSession; 

import org.apache.catalina.Container; 
import org.apache.catalina.Manager; 
import org.apache.catalina.Session; 
import org.apache.catalina.connector.Request; 
import org.apache.catalina.connector.Response; 
import org.apache.catalina.valves.ValveBase; 

public class SessionManagerValve extends ValveBase { 

    @Override 
    public void invoke(Request request, Response response) throws IOException, ServletException { 
     // ... 
    } 

    public HttpSession findSession(String id, boolean updateLastAccessTime) { 
     try { 
      Container container = getContainer(); 

      // works with Tomcat 7.x, but not with Tomcat 8.5 anymore... 
      Manager man = container.getManager(); 

      Session sess = man.findSession(id); 
      return sess.getSession(); 
     } catch (Exception e) { 
      return null; 
     } 
    } 
} 

ContainerインターフェースはもうgetManager()方法を提供していません。 Tomcat移行ガイドによれば、ManagerへのアクセスはContainerからContextに移動しました。

ValveBaseオブジェクトからManagerにアクセスする方法を教えていただけますか?事前に

おかげで、 ライナー

EDIT:コンテキスト設定がある - として正しく答えに注意 -

<Context path="" ...> 
    <Valve className="SessionManagerValve" /> 
</Context> 

答えて

1

を仮定すると、あなたのValveContextレベルである(それがなければならないでしょう上記のコードで動作するようにする必要があります)

((Context) getContainer()).getManager(); 
+0

正解、getContaiこの場合、ner()はorg.apache.catalina.core.StandardContextのインスタンスを返します。ありがとうございました! –

関連する問題