2015-04-22 1 views
2

Я развертываю свое веб-приложение на сервере WildFly 8.02 Final. Я использую по умолчанию из коробки DataSource, который поставляется с сервером с JNDI пространства имен:Где мои таблицы в H2?

java:jboss/datasources/ExampleDS 

, и я использую по умолчанию URL:

jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 

доступ H2 из инструмента IntelliJ клиента базы данных IDEA или другого клиента приложений (я использую соединение url, потому что соединение tcp через порт по умолчанию не работает).

Приложение представляет собой пустую WAR с только объектными компонентами и файлом persistence.xml. Я намерен проверить, какие таблицы будут созданы в базовом источнике данных в соответствии с моими аннотациями.

Вот вещь: когда я установил в persistence.xml:

<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/> 

война успешно развернута, но при подключении с помощью любого клиентского инструмента к источнику данных H2 я могу видеть только заранее определенные таблицы после:

SELECT * FROM INFORMATION_SCHEMA.TABLES 

Я могу создавать таблицы через клиентские инструменты, и я могу отслеживать их существование по предыдущему SQL-запросу. Таким образом, кажется, что таблицы просто не были созданы рамкой JPA.

Но когда я изменяю persistence.xml в другой режим создания схемы:

<property name="javax.persistence.schema-generation.database.action" value="create"/> 

Развертывание проваливается с JDBC исключение, сообщающее, что JPA пытается создать уже существующие таблицы, но в то же время клиентские инструменты до сих пор не показывать созданные пользователем таблицы.

Thx.

ответ

2

Взгляните на http://www.h2database.com/html/features.html#in_memory_databases:

To access an in-memory database from another process or from another computer, 
you need to start a TCP server in the same process as the in-memory database 
was created. The other processes then need to access the database over TCP/IP 
or TLS, using a database URL such as: jdbc:h2:tcp://localhost/mem:db1. 

Посмотрите здесь для примера:

H2 database in memory mode cannot be accessed by Console

+0

Великий, ТНХ много. Теперь, по крайней мере, я понимаю, что происходит, надеюсь, что я смогу настроить базу данных Wildfly по умолчанию для работы в качестве TCP-сервера. – Ivan

 Смежные вопросы

  • Нет связанных вопросов^_^