Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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
Java 如何从servlet中访问相应servlet过滤器中的变量集?_Java_Google App Engine_Servlets_Scope_Servlet Filters - Fatal编程技术网

Java 如何从servlet中访问相应servlet过滤器中的变量集?

Java 如何从servlet中访问相应servlet过滤器中的变量集?,java,google-app-engine,servlets,scope,servlet-filters,Java,Google App Engine,Servlets,Scope,Servlet Filters,我想使用以下过滤器打开和关闭持久性管理器 public final class PersistenceFilter implements Filter { private static final PersistenceManagerFactory persistenceManagerFactory = JDOHelper.getPersistenceManagerFactory("transactions-optional"); private static

我想使用以下过滤器打开和关闭持久性管理器

public final class PersistenceFilter implements Filter {
    private static final PersistenceManagerFactory persistenceManagerFactory
        = JDOHelper.getPersistenceManagerFactory("transactions-optional");

    private static PersistenceManagerFactory factory() {
        return persistenceManagerFactory;
    }

    private static ThreadLocal currentManager = new ThreadLocal();

    public static PersistenceManager getManager() {
        if (currentManager.get() == null) {
            currentManager.set(factory().getPersistenceManager());
        }
        return currentManager.get();
    }
    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        PersistenceManager manager  = null;
        try {
            manager = getManager();
            //Optional: allow all persistent objects implementing a custom interface
            //to be notified of when they are saved and loaded.
            manager.addInstanceLifecycleListener(new PersistHookListener(), PersistHooks.class);
            chain.doFilter(req, res);
        } finally {
            if (manager != null) {
                manager.flush();
                manager.close();
            }
        }
    }
    @Override
    public void init(FilterConfig arg0) throws ServletException {}
    @Override
    public void destroy() {}
}

我不知道如何从相应的servlet内部访问
manager
变量,该servlet在此筛选器之后被调用。

在筛选器中,将管理器作为请求属性:

request.setAttribute("persistenceManager", manager);
然后,在servlet中,可以通过以下方式访问:

PersistenceManager manager = 
     (PersistenceManager) request.getAttribute("persistenceManager");