2016-03-30 7 views
4

Я довольно новичок в H2 Database. Являясь частью PoC, я использую базу данных H2 (версия: 1.4.187) для издевательства над MS SQL Server DB. У меня есть одно приложение, скажем app1, которое генерирует данные и сохраняет их в H2. Другое приложение, app2, необходимо прочитать из базы данных H2 и обработать данные, которые он читает. Я пытаюсь использовать Auto Server mode, так что даже если одно из приложений не работает, другое может читать/записывать в/из базы данных.H2 База данных Автоматический режим сервера: доступ через веб-консоль удаленно

После прочтения нескольких примеров, я нашел, как построить h2 URL и, как показано ниже:

jdbc:h2:~/datafactory;MODE=MSSQLServer;AUTO_SERVER=TRUE; 

Enabled ТСР и удаленного доступа как показано ниже:

org.h2.tools.Server.createTcpServer("-tcpAllowOthers","-webAllowOthers").start() 

С этим, я способный писать в базу данных. Теперь я хочу прочитать данные, используя приложение h2-web-console. Я могу сделать это с моей локальной машины. Однако я не могу понять, как я могу удаленно подключаться к этой базе данных с другой машины.

Мое устройство должно запускать эти два приложения на машине ubuntu, и я могу контролировать данные с помощью веб-консоли с моей машины. Не возможно ли с этим подходом? Как я могу это решить?

Или мне нужно использовать режим сервера и явно запустить сервер h2? Любая помощь будет оценена по достоинству.

+0

Нашел следующую строку в документации по H @, _ Неявные соединения клиент/сервер (с использованием jdbc: h2: tcp: // или ssl: //) не поддерживаются.Этот режим не поддерживается для баз данных в памяти. См. [Автоматический смешанный режим] (http://www.h2database.com/html/features.html#auto_mixed_mode). Возможно, именно по этой причине вы не можете подключиться к нему. Кажется, что порт также случайно выбран. При использовании этой функции по умолчанию сервер использует любой свободный TCP-порт. Порт можно установить вручную с помощью 'AUTO_SERVER_PORT'. – uniknow

+0

Хотя следующий вопрос начинается с исключения [how-to-run-h2-database-in-server-mode] (http://stackoverflow.com/questions/9318116/how-to-run-h2-database-in -server-mode), похоже, что это соединение, поэтому он может дать вам подсказку о том, как должен выглядеть URL-адрес. – uniknow

ответ

1

По умолчанию удаленные подключения отключены для базы данных H2 для защиты. Чтобы включить удаленный доступ к серверу TCP, необходимо запустить TCP-сервер, используя опцию -tcpAllowOthers или другие флаги, -pgAllowOthers .

Чтобы запустить как сервер веб-консоли (инструмент H2 Console) и сервер TCP с удаленными подключениями с поддержкой, вам придется использовать что-то вроде ниже

java -jar /path/to/h2.jar -web -webAllowOthers -tcp -tcpAllowOthers -browser 

Более подробную информацию можно найти в docs here и настройки консоли могут быть настроены from here

+0

Да, я сделал это. Моя путаница заключается в доступе к ним с удаленной машины на веб-консоли. Не получить Url right –

+0

Приложение h2 работает на машине ubuntu (без доступа к пользовательскому интерфейсу, только ssh). Приложение будет вставлять данные в H2, который является локальным файлом на этом компьютере ubuntu. Я хочу просмотреть данные в веб-консоли с моей машины. –

+0

Вы пробовали URL-адрес 'jdbc: h2: tcp: // host_of_server: port/~/datafactory'? Правильно ли настроен брандмауэр на серверной системе? Открыт ли порт к другой машине? –

0

Не совсем уверен, но, глядя на документацию и другие вопросы ответили ранее в отношении той же теме URL-адрес должен быть что-то вроде этого:

jdbc:h2:tcp://<host>:<port>/~/datafactory;MODE=MSSQLServer;AUTO_SERVER=TRUE; 

кажется, что хозяин не может быть локальный и база данных не может быть в памяти

0

Есть ли необходимость в веб-консоли H2?

Вы можете использовать другой инструмент SQL, используя уже запущенный TCP-сервер. Я использую SQuirreL SQL Client (http://squirrel-sql.sourceforge.net/) для подключения к различным базам данных.

Если вам нужен веб-интерфейс, который вы могли бы использовать Adminer (https://www.adminer.org/), которые могут подключаться к различным поставщикам баз данных, включая MS SQL, который происходит в режиме вы работаете Н2. Существует пакет Adminer Debian, который должен работать для Ubuntu.