Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tomcat 8.5.X:从Tomcat 7迁移Java代码_Java_Migration_Tomcat7_Tomcat8 - Fatal编程技术网

Tomcat 8.5.X:从Tomcat 7迁移Java代码

Tomcat 8.5.X:从Tomcat 7迁移Java代码,java,migration,tomcat7,tomcat8,Java,Migration,Tomcat7,Tomcat8,我需要将一个自定义阀门代码从Tomcat 7迁移到Tomcat 8.5: 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.Sess

我需要将一个自定义阀门代码从Tomcat 7迁移到Tomcat 8.5:

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;
       } 
    }
}
容器
接口不再提供
getManager()
方法。根据Tomcat迁移指南,访问
管理器
已从
容器
移动到
上下文

有人能告诉我如何从
ValveBase
对象中访问
Manager

提前感谢,, 雷纳

编辑:上下文配置为-正如答案中正确指出的那样-

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

假设您的
阀门
处于
上下文
级别(必须是上述代码才能工作),则您需要:

((Context) getContainer()).getManager();
正确,在本例中,getContainer()为我提供了org.apache.catalina.core.StandardContext的一个实例。谢谢您!