如何从GWT RequestFactory检索(graph connecion)静态服务器变量

如何从GWT RequestFactory检索(graph connecion)静态服务器变量,gwt,neo4j,requestfactory,Gwt,Neo4j,Requestfactory,我更了解这个问题GWT 我正在开发我的第一个CWT应用程序。我正在使用RequestFactory。我以“GWT行动第二版”为例。在ContactService类中,我希望连接Neo4J Graph的访问数据库的方法在哪里。 在构造函数中,我添加了这个 private static GraphDatabaseService graphDB; public ContactService () { String DB_PATH = "/home/myName/Developer/Workspace/

我更了解这个问题GWT

我正在开发我的第一个CWT应用程序。我正在使用RequestFactory。我以“GWT行动第二版”为例。在ContactService类中,我希望连接Neo4J Graph的访问数据库的方法在哪里。 在构造函数中,我添加了这个

private static GraphDatabaseService graphDB;
public ContactService () {
String DB_PATH = "/home/myName/Developer/Workspace/MyGWTApp/DATA";
graphDB = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);  
}

我可以通过将静态变量graphDB传递给方法、fetch(graphDB,id)、persist(graphDB,c)等来进行CRUD。一切进展顺利。构造器第一次给我图形的链接。我的问题是,当我通过示例FriendService开发另一个服务类时,我需要再次连接到graphDB。我不能用构造函数重新创建相同的东西



这在Neo4J中是正常的。我必须只检索静态变量graphDB的值。但如何做到这一点呢

我试图创建一个这样的servlet

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;


public class Neo4jServletContextListener implements ServletContextListener{

    public static GraphDatabaseService getGraphDB(ServletContext context) {
        return (GraphDatabaseService) context.getAttribute("neo4j");
    }
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        getGraphDB(arg0.getServletContext()).shutdown();
        //System.out.println("ServletContextListener destroyed");
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {

        String DB_PATH = "/home/myName/Developer/Workspace/MyGWTApp/DATA";
        GraphDatabaseService graphDB =
            new   GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);  
        ServletContext context = arg0.getServletContext();
        context.setAttribute ("neo4j", graphDB);

        //System.out.println("ServletContextListener started"); 
    }
}
但这是不可能的

graphDB = (GraphDatabaseService) getServletContext().getAttribute("neo4j");
我在这条线路的某个地方找到了一个运行良好的地方

graphDB = (GraphDatabaseService) RequestFactoryServlet.getThreadLocalServletContext().getAttribute("neo4j");

对。如果在请求期间需要在运行的服务中检索
ServletContext
,请使用静态方法。

正确。如果在请求期间需要在运行的服务中检索
ServletContext
,请使用静态方法

graphDB = (GraphDatabaseService) RequestFactoryServlet.getThreadLocalServletContext().getAttribute("neo4j");