1

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

4

1 回答 1

0

据我了解,这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");

希望这可以帮助。

于 2012-06-10T19:30:28.593 回答