Сервер OrientDB частично игнорирует ORIENTDB_HOME - PullRequest
2 голосов
/ 14 июня 2019

Я пытаюсь запустить встроенный сервер OrientDB.Я установил ORIENTDB_HOME в папку, содержащую папки config/ и plugins/.Я также включил мой файл конфигурации в путь к классам, потому что сервер, похоже, не загружал мой файл конфигурации, даже если он имеет имя по умолчанию.

Теперь он запускает и применяет мою конфигурацию, однако, очевидно, каталог приложения используется как ORIENTDB_HOME, потому что мои плагины не загружены и база данных создается там, где я не хочу.

Это мой код:

public void startServer() {
    try {
        System.setProperty("ORIENTDB_HOME", "C:\\my\\orientdb_home\\path");

        server = OServerMain.create(true);
        // server.startup(); // this doesn't load the correct config
        server.startup(getClass().getResourceAsStream("/config/orientdb-server-config.xml")); // workaround
        server.activate();

        OServerNetworkListener httpListener = server.getListenerByProtocol(server.getNetworkProtocols().get("binary"));
        binaryPort = httpListener.getInboundAddr().getPort();
        httpListener = server.getListenerByProtocol(server.getNetworkProtocols().get("http"));
        httpPort = httpListener.getInboundAddr().getPort();

        System.out.println("Started OrientDB Server.\nBinary Port is " + binaryPort + "\nHTTP Port is " + httpPort);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Удивительная вещь в том, что в выводе журнала ясно сказано, что он использует правильный каталог для баз данных, но это не так.

2019-06-14 09:32:23:556 INFO  Loading configuration from input stream [OServerConfigurationLoaderXml]
2019-06-14 09:32:23:731 INFO  OrientDB Server v2.2.37 (build a7541e7ceeabf592dd9a7b2928b6c023cbc73193, branch 2.2.x) is starting up... [OServer]
2019-06-14 09:32:23:741 INFO  Databases directory: C:\my\orientdb_home\path\databases [OServer]
2019-06-14 09:32:23:830 INFO  Configuration of usage of soft references inside of containers of results of SQL execution [OMemoryAndLocalPaginatedEnginesInitializer]
2019-06-14 09:32:23:831 INFO  Initial or maximum values of heap memory usage are NOT set, containers of results of SQL executors will NOT use soft references by default [OMemoryAndLocalPaginatedEnginesInitializer]
2019-06-14 09:32:23:832 INFO  Auto configuration of disk cache size. [OMemoryAndLocalPaginatedEnginesInitializer]
2019-06-14 09:32:23:919 INFO  17066577920 B/16275 MB/15 GB of physical memory were detected on machine [ONative]
2019-06-14 09:32:23:919 INFO  Detected memory limit for current process is 17066577920 B/16275 MB/15 GB [ONative]
2019-06-14 09:32:23:921 INFO  OrientDB auto-config DISKCACHE=3,618MB (heap=3,618MB direct=3,618MB os=16,275MB) [OMemoryAndLocalPaginatedEnginesInitializer]
2019-06-14 09:32:23:922 INFO  Lowering disk cache size from 3,618MB to 3,616MB. [OGlobalConfiguration]
2019-06-14 09:32:24:117 INFO  Listening binary connections on 127.0.0.1:2424 (protocol v.36, socket=default) [OServerNetworkListener]
2019-06-14 09:32:24:120 INFO  Listening http connections on 127.0.0.1:2480 (protocol v.10, socket=default) [OServerNetworkListener]
2019-06-14 09:32:25:081 INFO  Storage 'plocal:databases/pvRelations' is created under OrientDB distribution : 2.2.37 (build a7541e7ceeabf592dd9a7b2928b6c023cbc73193, branch 2.2.x) [OLocalPaginatedStorage]
2019-06-14 09:32:27:607 INFO  {db=pvRelations} -> Loaded plocal database 'pvRelations' [OServer]
2019-06-14 09:32:27:609 INFO  Found ORIENTDB_ROOT_PASSWORD variable, using this value as root's password [OServer]
2019-06-14 09:32:27:621 INFO  ODefaultPasswordAuthenticator is active [ODefaultPasswordAuthenticator]
2019-06-14 09:32:27:623 INFO  OServerConfigAuthenticator is active [OServerConfigAuthenticator]
2019-06-14 09:32:27:625 INFO  OSystemUserAuthenticator is active [OSystemUserAuthenticator]
2019-06-14 09:32:27:634 INFO  Installed GREMLIN language v.2.6.0 - graph.pool.max=50 [OGraphServerHandler]
2019-06-14 09:32:27:638 WARNI Authenticated clients can execute any kind of code into the server by using the following allowed languages: [sql] [OServerSideScriptInterpreter]
2019-06-14 09:32:27:638 INFO  OrientDB Studio available at http://127.0.0.1:2480/studio/index.html [OServer]
2019-06-14 09:32:27:638 INFO  OrientDB Server is active v2.2.37 (build a7541e7ceeabf592dd9a7b2928b6c023cbc73193, branch 2.2.x). [OServer]

Чтобы еще раз уточнить: каталог C:\my\orientdb_home\path\databases не используется, вместо этого он path\to\my\application\databases.

Что я делаю не так?Как мне сказать серверу использовать каталог по своему выбору для поиска конфигурации и плагинов, а также для хранения баз данных?

РЕДАКТИРОВАТЬ: я только что заметил, что на самом деле каталог баз данных используется, но только дляСистемная база данных.Моя собственная база данных хранится не в том месте.Я определил его в своем конфигурационном файле:

...
<storages>
    <storage name="myDB" path="plocal:databases/myDB" userName="admin" userPassword="admin" loaded-at-startup="true" />
</storages>
...

EDIT2: Итак, я заметил, что неправильное расположение базы данных связано с вручную настроенным путем хранения в файле конфигурации.Тем не менее, это по-прежнему не объясняет, почему мне нужно напрямую предоставить свой конфигурационный файл и почему мои плагины (OrientDB Studio) не загружаются.

1 Ответ

1 голос
/ 14 июня 2019

Оказывается, мне следовало бы более внимательно прочитать server.bat. Хотя установка ORIENTDB_HOME, очевидно, устанавливает каталог базы данных по умолчанию, файл конфигурации по умолчанию не находится под %ORIENTDB_HOME%\config\orientdb-server-config.xml. Я должен был установить переменную окружения orientdb.config.file.

Мой плагин не был загружен, потому что он не находился в папке плагинов, но был включен в мой путь к классам, что явно недостаточно.

...