2015-06-17 8 views
0

Я боролся с этим в течение нескольких дней, и я искал десятки статей в StackOverflow и других сайтах-разработчиках.Все, что я хочу, - это получить доступ к базе данных H2 mem в Websphere V8 с использованием JPA 2.0

Я использовал интерфейс диспетчера развертывания для настройки WebSphere Application Server 8.0.0.3 с поставщиком H2 JDBC и источником данных для моего приложения, используя учебник, который я нашел here.

JDBC Источник данных:

Name: H2 JDBC Provider 
Classpath: $(H2_JDBC_DRIVER_PATH)/h2-1.3.161.jar 
Implementation class name: org.h2.jdbcx.JdbcDataSource 

Источник данных:

Provider: H2 JDBC Provider 
Name: SGO_datasource 
JNDI name: jdbc/sgodb 
Use this data source in container managed persistence (CMP): true 
Data store helper class name: com.ibm.websphere.rsadapter.ConnectJDBCDataStoreHelper (user-defined) 
(default values for all the rest) 
Custom properties: 
    URL: jdbc:h2:mem:test;DB_CLOSE_DELAY=-1 
    user: sa 
    password: sa 

Я проверил этот источник данных с помощью кнопки Test соединения в DM, и она работала отлично.

Когда я пытаюсь открыть источник данных из моего приложения я получаю эту ошибку на первом доступе:

Caused by: <openjpa-2.1.2-SNAPSHOT-r422266:1227818 fatal user error> org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property. 

После прочтения этой issue, я проверил расположение моего файла persistence.xml в WAR генерироваться и похоже, находится в правильном месте: WEB-INF/classes/META-INF/persistence.xml.

persistence.xml:

<persistence version="2.0" 
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://java.sun.com/xml/ns/persistence 
     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="sgo"> 
     <jta-data-source>java:comp/env/jdbc/sgodb</jta-data-source> 
    </persistence-unit> 
</persistence> 

Любые идеи? Заранее спасибо.

+0

что «причиненном» сообщение об ошибке является общее сообщение, если источник данных не может быть посмотрел. Посмотрите ранее в журналах сообщение об ошибке CWWJPxxxxxE (где xxxxx - это числа), чтобы узнать, есть ли более подробная информация о том, почему источник данных не может быть просмотрен. Скорее всего, либо ресурс-ссылка 'jdbc/sgodb' не определен, либо не привязан к источнику данных' jdbc/sgodb'. –

+0

Пожалуйста, добавьте код, в котором используется контекст persistence. – Gas

ответ

0

Найденный!

Эти полные имена JNDI, похоже, не работают в Websphere. Вместо этого я использовал простой «jdbc/sgodb», и он смог найти контекст.

<jta-data-source>jdbc/sgodb</jta-data-source> 

вместо

<jta-data-source>java:comp/env/jdbc/sgodb</jta-data-source>