如何从GWT RequestFactory检索(graph connecion)静态服务器变量
我更了解这个问题GWT 我正在开发我的第一个CWT应用程序。我正在使用RequestFactory。我以“GWT行动第二版”为例。在ContactService类中,我希望连接Neo4J Graph的访问数据库的方法在哪里。 在构造函数中,我添加了这个如何从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/
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");