如何跨多个JSP页面共享EmbeddedGraphDatabase实例?

时间:2012-06-10 15:47:57

标签: jsp tomcat neo4j embedded-database

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

1 个答案:

答案 0 :(得分:0)

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

您需要将其实例放到应用程序范围中,并且所有应用程序的类和JSP页面都可以看到它。

为此,您需要实现ServletContextListener interface:

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

希望这有帮助。