Java 远程访问OrientDB嵌入式服务器

Java 远程访问OrientDB嵌入式服务器,java,orientdb,embedded-database,Java,Orientdb,Embedded Database,使用社区版v2.1.11 我编写了一个简单的数据同步器,它从MS-SQL数据库获取数据,并将其与OrientDB图形中的数据进行同步 更新可能相当大,图表应该每20分钟更新一次,所以我更喜欢使用plocal模式;另外,其他应用程序应该具有对图形的所有时间读取权限,因此我决定将服务器嵌入Java应用程序中,并将同步过程放入调度器(ScheduledExecutorService) 问题是,尽管存在以下问题,但我无法从控制台或studio访问嵌入式服务器上运行的DB: orientdb>连接远程:本

使用社区版v2.1.11

我编写了一个简单的数据同步器,它从MS-SQL数据库获取数据,并将其与OrientDB图形中的数据进行同步

更新可能相当大,图表应该每20分钟更新一次,所以我更喜欢使用plocal模式;另外,其他应用程序应该具有对图形的所有时间读取权限,因此我决定将服务器嵌入Java应用程序中,并将同步过程放入调度器(ScheduledExecutorService)

问题是,尽管存在以下问题,但我无法从控制台或studio访问嵌入式服务器上运行的DB:

orientdb>连接远程:本地主机/测试根myP@ss

正在断开与数据库的连接[null]…连接到数据库正常 [远程:localhost/test]与用户“root”。。。错误: com.orientechnologies.orient.core.exception.OStorageException:无法 使用mode=rw打开本地存储“C:/orientdb/databases/test”

错误: com.orientechnologies.orient.core.exception.OSerializationException: 无法加载数据库的配置。数据库似乎已损坏

错误:com.orientechnologies.common.concur.lock.OLockException:文件 “C:\Oriented b\databases\test\database.ocf”已被另一个锁定 进程,可能另一个进程正在使用该数据库。使用 远程模式,使用OrientDB服务器允许对 同一数据库

以下是我的服务器初始化代码:

String orientdbHome = "C:/orientdb/";
System.setProperty("ORIENTDB_HOME", orientdbHome);
OServer server = OServerMain.create();
server.startup(new File("C:/orientdb/config/embedded_config.xml"));
OGlobalConfiguration.WAL_LOCATION.setValue("/Temp/wal");
server.activate();

OrientGraph g = new OrientGraph("plocal:C:/orientdb/databases/Test");

我是东方人的新手,所以我肯定我错过了一些东西,但即使是谷歌也不能帮我弄清楚到底是什么:(

我认为问题在于,当你使用plocal协议连接时,它会锁定资源


因此,在您已经通过
OrientGraph g=new-OrientGraph(“plocal:C:/orientdb/databases/Test”)创建了一个plocal连接之后,您无法通过控制台(甚至是远程或plocal)进行连接

没错,我知道不可能以任何方式连接到图形,而其他一些实例是通过plocal连接到图形的;不过当您阅读文档时,您可以看到:“与服务器一起运行的Java应用程序可以绕过远程连接,直接以本地模式使用数据库。针对同一数据库的本地和远程连接可以并发工作:OrientDB将同步访问。“这是一个不推荐使用的功能还是什么?据我所知,本地访问已不推荐使用-嵌入式服务器在新的plocal存储中无法以这种方式工作?”?