es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para incrustar el proceso de inicio de OServer desde Java, puedes utilizar el siguiente código:

    try {
        OServer server = OServerMain.create();
        server.startup(getClass().getResourceAsStream("/orientdb-server-config.xml"));
        server.activate();
    } catch (Exception e) {
        e.printStackTrace();
        System.exit(-1);
    }
    

    En este código, OServerMain.create() crea una nueva instancia de OServer, server.startup() inicia el servidor con el archivo de configuración orientdb-server-config.xml y server.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 de OServer, como utilizar la clase OrientDB en lugar de OServerMain.

    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.

Comments are closed.