Conectándose a un servidor OrientDB integrado en Java
Estoy buscando ejecutar un proceso de Java en varias máquinas, cada una de las cuales necesitará iniciar un servidor local de OrientDB, cargar un grafo, realizar nuestros procesos y luego cerrar. Por lo tanto, necesito poder incrustar el proceso de inicio de OServer
desde Java.
Hay muchos consejos sobre cómo hacerlo, incluidas preguntas en SA, sin embargo, la mayoría parece estar desactualizada (así que por favor no marques esto como un duplicado prematuramente). El más relevante directamente parece ser este, sin embargo, no funciona, al menos para mí. Con el código a continuación, obtengo el siguiente error:
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 Cargando configuración desde el flujo de entrada [OServerConfigurationLoaderXml]
2021-12-07 21:47:39:633 INFO OrientDB Server v3.2.3 (build dc98198215aa57baf29b32adb657dc3733acdb55, branch develop) se está iniciando... [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)
Estoy utilizando la versión 3.2.3 de OrientDB; el archivo .jar
‘ALL’ descargado de aquí. Tenga en cuenta que este archivo jar no contiene el archivo de parámetros orientdb-server-config.xml
, así que lo he descargado directamente de la fuente GitHub.
¿Hay algún problema con mi implementación específica, con mi enfoque en general o con el archivo de configuración predeterminado que estoy usando? Espero tus comentarios.
davy.ai
Para incrustar el proceso de inicio de
OServer
desde Java, puedes utilizar el siguiente código:En este código,
OServerMain.create()
crea una nueva instancia deOServer
,server.startup()
inicia el servidor con el archivo de configuraciónorientdb-server-config.xml
yserver.activate()
activa el servidor para que pueda empezar a recibir solicitudes.Basándonos en el mensaje de error que recibiste, parece que puede haber un problema con la implementación o enfoque específico que estás utilizando. Es posible que el archivo de configuración predeterminado
orientdb-server-config.xml
que estás utilizando no sea compatible con la versión 3.2.3 de OrientDB.Para solucionar este problema, puedes intentar actualizar el archivo
orientdb-server-config.xml
para que coincida con la versión de OrientDB que estás utilizando. También puedes intentar utilizar un enfoque diferente para iniciar la instancia deOServer
, como utilizar la claseOrientDB
en lugar deOServerMain
.En general, es posible incrustar una instancia de
OServer
en Java, pero requiere una configuración cuidadosa y solución de problemas para asegurarse de que funcione correctamente.