2013-12-12 78 views
1

檢索(圖connecion)靜態服務器變量我知道這個問題有點多GWT ...如何從GWT RequestFactory

我發展我的第一個CWT的應用程序。我正在使用RequestFactory。我以「GWT In Action第二版」爲例。在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該方法CRUD,抓取(graphDB,ID),堅持(graphDB,C),等等。一切正常。第一次構造函數給我一個鏈接圖。我的問題是,當我通過示例FriendService開發另一個服務類時,我需要再次連接到graphDB。我不能用構造


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

這是正常的Neo4j的重建同樣的事情。我必須只檢索我的靜態變量graphDB的值。但如何做到這一點?

我試圖創建類似的

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"); 
    } 
} 

一個servlet但它是不可能做出這種

graphDB = (GraphDatabaseService) getServletContext().getAttribute("neo4j"); 

我在堆棧溢出這條線在什麼地方找到它運行良好

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

回答