有什么方法可以在多个JSP页面之间共享EmbeddedGraphDatabase实例?
问题是,一旦启动tomcat服务器并为特定的Neo4j DB实例化EmbeddedGraphDatabase,则如果您尝试为其实例化另一个graphDB,则数据库将保持锁定状态。

最佳答案

据我了解,EmbeddedGraphDatabase是您的对象,并且您希望它的实例在应用程序的多个JSP页面中共享。

您需要将其实例放入应用程序范围,并且对所有应用程序的类和JSP页面都是可见的。

为此,您需要实现ServletContextListener接口:

public class YourContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
       EmbeddedGraphDatabase db = new EmbeddedGraphDatabase();
       event.getServletContext().setAttribute("yourAttrName", db);
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
       event.getServletContext().removeAttribute("yourAttrName");
    }
}


在web.xml中定义

<listener>
    <listener-class>your.package.YourContextListener</listener-class>
</listener>


并使用它:

EmbeddedGraphDatabase db = getServletContext().getAttribute("yourAttrName");


希望这可以帮助。

10-08 09:10