2016-03-10 4 views
3

с помощью Community Edition v2.1.11Удаленный доступ к встроенному серверу OrientDB

написать простой синхронизатор данных, который получает данные из MS-SQL DB, и синхронизирует его с данными, которые я имею в OrientDB графике.

Обновления могут быть довольно массивными, и график должен обновляться каждые 20 минут, поэтому я предпочел бы использовать режим plocal; Кроме того, другие приложения должны иметь постоянный доступ на чтение к графику, поэтому я решил встроить сервер в приложение Java и поместить процесс синхронизации в планировщик (ScheduledExecutorService).

Проблема заключается в том, что, несмотря на docs, я не могу получить доступ к БД, который работает на встроенном сервере с консоли или студии:

orientdb> connect remote:localhost/test root [email protected]

Disconnecting from the database [null]...OK Connecting to database [remote:localhost/test] with user 'root'... Error: com.orientechnologies.orient.core.exception.OStorageException: Cannot open local storage 'C:/orientdb/databases/test' with mode=rw

Error: com.orientechnologies.orient.core.exception.OSerializationException: Cann ot load database's configuration. The database seems corrupted

Error: com.orientechnologies.common.concur.lock.OLockException: File 'C:\orientd b\databases\test\database.ocf' is locked by another process, maybe the database is in use by another process. Use the remote mode with a OrientDB server to allo w multiple access to the same database

Вот мой сервер код инициализации:

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"); 

Я новичок в Orient, поэтому я уверен, что что-то пропустил, но даже Google не может помочь мне выяснить, что именно :(

ответ

0

Я думаю, проблема в том, что когда вы подключаетесь t используя протокол plocal, он блокирует ресурсы.

Таким образом, вы не можете подключиться через консоль (даже удаленного или plocal) после того, как вы уже создали plocal соединение через OrientGraph g = new OrientGraph("plocal:C:/orientdb/databases/Test");

+0

Привет Иван, спасибо за Ваш ответ. – grreeenn

+1

Правильно, я знаю, что невозможно подключиться к графику каким-либо образом, в то время как какой-то другой экземпляр связан с ним с помощью plocal; хотя при чтении документов вы можете увидеть это: «Java-приложение, которое работает с сервером, может обойти удаленное соединение и использовать базу данных напрямую в локальном режиме. Локальные и удаленные подключения к одной базе данных могут работать в параллелизме: OrientDB будет синхронизировать доступ ». Это устаревшая функция или что-то еще? Как я знаю, локальный доступ устарел, поскольку встроенный сервер не будет работать с новым хранилищем данных? – grreeenn