【问题标题】:DB4o database DatabaseFileLockedExceptionDB4o 数据库 DatabaseFileLockedException
【发布时间】:2012-05-08 10:46:52
【问题描述】:

我想从不同的程序并行访问同一个数据库文件。所有程序都在同一个虚拟机上运行。这是我使用的代码:

private ObjectContainer db;

public DatabaseManager(String dbName) {
    ObjectServer server = Db4oClientServer.openServer(Db4oClientServer
            .newServerConfiguration(), dbName, 0);
    try {
         db = server.openClient();

        // Do something with this client, or open more clients

    } catch(Exception ex) {
        ex.printStackTrace();
    }
}

当我运行第二个程序时,我得到了 DatabaseFileLockedException。如何并行使用这个数据库?

【问题讨论】:

    标签: database parallel-processing db4o locked


    【解决方案1】:

    只有一个 db4o 实例可以同时访问数据库文件。如果您在对象容器打开时尝试重新打开它,您将收到此 DatabaseFileLockedException。

    在同一个 JVM 实例中,您可以打开新的session containers like this:

     ObjectContainer rootContainer = // the one you've opened the file with
     ObjectContainer session = rootContainer.ext().openSession()
    

    使用您的代码,您也可以使用 .openClient() 方法来做同样的事情。但是,只要您在同一个 JVM 实例中,您实际上就不需要客户端服务器的东西。您可以将上述内容与常规嵌入式对象容器一起使用。

    如果您需要从多个数据库访问同一个数据库,那么您需要一个完整的client-server setup

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      相关资源
      最近更新 更多