有什么方法可以在多个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");
希望这可以帮助。