【问题标题】:neo4j servlet concurrent accessneo4j servlet 并发访问
【发布时间】:2014-03-11 20:17:37
【问题描述】:

我可以使用打开 neo4j 数据库吗

new GraphDatabaseFactory().newEmbeddedDatabase( A_CERTAIN_PATH );

在许多不同的 servlet 中,或者我无法从两个不同的 java 进程访问同一个数据库?

【问题讨论】:

    标签: servlets neo4j


    【解决方案1】:

    根据我的经验,您无法从两个不同的进程访问同一个数据库,如果您尝试这样做,您会收到一个锁定异常,说明您的数据库已经打开。

    您应该使用对数据库进行静态引用的类,并在每次需要时使用该类来获取数据库的实例(查询..)

    【讨论】:

    • 那么唯一可以同时从不同线程并发访问同一个数据库的wai就是使用rest apis?
    • 你使用什么样的服务器?嵌入与否?
    • 嵌入。但我想出了一个简单的解决方案,那就是:通过在 ServletContextListener 中初始化来创建一个静态 GraphDatabaseService 类。任何想要使用它的 servlet 只需要 context.getAttribute("that_class")
    • 是的,这就是想法,但要小心你稍后将在本课程中进行的操作,它们应该是线程安全的,带有同步关键字
    • 是的,我知道。但我读到这个类本质上是线程安全的。在这种情况下我也应该关心同步吗?
    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    相关资源
    最近更新 更多