I know this concern a bit more GWT...
I am developing my first CWT app. And I am using RequestFactory. I take the example from "GWT In Action Second Edition". Inside the ContactService class where are the methods to access the database I wish to connect Neo4J Graph. In the constructor I added this
private static GraphDatabaseService graphDB;
public ContactService () {
String DB_PATH = "/home/myName/Developer/Workspace/MyGWTApp/DATA";
graphDB = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);  
}
I can CRUD with passing the static variable graphDB to the method, fetch(graphDB, id), persist(graphDB, c), and so on. All is working well. The first time the constructor give me a link the the graph. My problem is whenIi develop another service class by example FriendService I need my connection to graphDB again. I cannot recreate the same thing with the constructor
private static GraphDatabaseService graphDB;
public FriendService () {
    String DB_PATH = "/home/myName/Developer/Workspace/MyGWTApp/DATA";
    graphDB = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);  
 }
That is normal with Neo4J. I must retrieve only the value of my static variable graphDB. But how to do that?
I tried to create a servlet like that
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"); 
    }
}
But it is impossible to make this
graphDB = (GraphDatabaseService) getServletContext().getAttribute("neo4j");
I found somewhere in Stack Overflow this line which is running well
graphDB = (GraphDatabaseService) RequestFactoryServlet.getThreadLocalServletContext().getAttribute("neo4j");
				
                        
Correct. If you need to retrieve the
ServletContextinside a running service during a request, use the static methodRequestFactoryServlet.getThreadLocalServletContext().