在 Java 中连接到嵌入式 OrientDB 服务器
Connecting to an embedded OrientDB server in Java
我正在寻找 运行 多台机器上的 Java 进程,每台机器都需要启动本地 OrientBD 服务器、加载图形、执行我们的进程,然后关闭。因此,我需要能够从 Java.
中嵌入 OServer
启动过程
有很多关于如何这样做的建议,包括 SA 问题,但大多数似乎已经过时(所以请不要过早地将其标记为重复)。最直接相关的似乎是 this,但它不起作用 - 至少对我而言。使用以下代码,我得到后续错误:
try {
final OServer server = OServerMain.create();
server.startup(server.getClass().getResourceAsStream("/orientdb-server-config.xml"));
server.activate();
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
2021-12-07 21:47:39:323 INFO Loading configuration from input stream [OServerConfigurationLoaderXml]
2021-12-07 21:47:39:633 INFO OrientDB Server v3.2.3 (build dc98198215aa57baf29b32adb657dc3733acdb55, branch develop) is starting up... [OServer]java.lang.NullPointerException
at com.orientechnologies.orient.core.Orient.onEmbeddedFactoryInit(Orient.java:957)
at com.orientechnologies.orient.core.db.OrientDBEmbedded.<init>(OrientDBEmbedded.java:97)
at com.orientechnologies.orient.core.db.OrientDBInternal.embedded(OrientDBInternal.java:119)
at com.orientechnologies.orient.server.OServer.startupFromConfiguration(OServer.java:388)
at com.orientechnologies.orient.server.OServer.startup(OServer.java:314)
at ems.definitions.instance.Graph.<init>(Graph.java:47)
我正在使用 OrientDB 版本 3.2.3;从 here. Note that this jar does not contain the parameters file orientdb-server-config.xml
, so I have downloaded it directly from the source GitHub.
下载的 'ALL' .jar
我的具体实现、我的一般方法或我使用的默认配置文件是否存在问题?我期待听到您的想法。
问题有三方面:
- 我使用的是网站提供的 'ALL'
.jar
。相反,我需要使用完整源代码中提供的库。
- 我没有考虑到当代码失败时,它没有删除它创建一半的数据库,因此无法执行我试图补救的代码。为了避免这种情况,我必须在初始化之前实施临时故障安全来删除数据库。
- 我总体上使用了错误的(?)策略。
我的工作方法如下
orientDB = new OrientDB("embedded:/tmp/","admin","adminpwd", OrientDBConfig.defaultConfig());
/** THIS IS VERY MUCH ONLY FOR LOCAL TESTING **/
if(orientDB.exists(name))
orientDB.drop(name);
if(!orientDB.exists(name)) // if the database does not already exist, create it.
orientDB.execute("create database " + name + " PLOCAL users ( admin identified by 'adminpwd' role admin)");
db = orientDB.open(name, "admin", "adminpwd");
我正在寻找 运行 多台机器上的 Java 进程,每台机器都需要启动本地 OrientBD 服务器、加载图形、执行我们的进程,然后关闭。因此,我需要能够从 Java.
中嵌入OServer
启动过程
有很多关于如何这样做的建议,包括 SA 问题,但大多数似乎已经过时(所以请不要过早地将其标记为重复)。最直接相关的似乎是 this,但它不起作用 - 至少对我而言。使用以下代码,我得到后续错误:
try {
final OServer server = OServerMain.create();
server.startup(server.getClass().getResourceAsStream("/orientdb-server-config.xml"));
server.activate();
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
2021-12-07 21:47:39:323 INFO Loading configuration from input stream [OServerConfigurationLoaderXml]
2021-12-07 21:47:39:633 INFO OrientDB Server v3.2.3 (build dc98198215aa57baf29b32adb657dc3733acdb55, branch develop) is starting up... [OServer]java.lang.NullPointerException
at com.orientechnologies.orient.core.Orient.onEmbeddedFactoryInit(Orient.java:957)
at com.orientechnologies.orient.core.db.OrientDBEmbedded.<init>(OrientDBEmbedded.java:97)
at com.orientechnologies.orient.core.db.OrientDBInternal.embedded(OrientDBInternal.java:119)
at com.orientechnologies.orient.server.OServer.startupFromConfiguration(OServer.java:388)
at com.orientechnologies.orient.server.OServer.startup(OServer.java:314)
at ems.definitions.instance.Graph.<init>(Graph.java:47)
我正在使用 OrientDB 版本 3.2.3;从 here. Note that this jar does not contain the parameters file orientdb-server-config.xml
, so I have downloaded it directly from the source GitHub.
.jar
我的具体实现、我的一般方法或我使用的默认配置文件是否存在问题?我期待听到您的想法。
问题有三方面:
- 我使用的是网站提供的 'ALL'
.jar
。相反,我需要使用完整源代码中提供的库。 - 我没有考虑到当代码失败时,它没有删除它创建一半的数据库,因此无法执行我试图补救的代码。为了避免这种情况,我必须在初始化之前实施临时故障安全来删除数据库。
- 我总体上使用了错误的(?)策略。
我的工作方法如下
orientDB = new OrientDB("embedded:/tmp/","admin","adminpwd", OrientDBConfig.defaultConfig());
/** THIS IS VERY MUCH ONLY FOR LOCAL TESTING **/
if(orientDB.exists(name))
orientDB.drop(name);
if(!orientDB.exists(name)) // if the database does not already exist, create it.
orientDB.execute("create database " + name + " PLOCAL users ( admin identified by 'adminpwd' role admin)");
db = orientDB.open(name, "admin", "adminpwd");