Установка JNDI источника данных в встраиваемый контейнер WebSphere EJB - PullRequest
0 голосов
/ 13 марта 2012

Я использую встраиваемый EJB-контейнер WebSphere 8 для написания некоторых модульных тестов для моих EJB-компонентов с JUnit4. У меня есть простой проект Java в MyEclipse, где я ссылаюсь на проект EJB. Проект EJB использует Hibernate 3.5 для постоянного хранения, а JNDI источника данных в hibernate.cfg.xml - это jdbc / connectionname. Когда он работает в стандартном WebSphere 8, я настроил источник данных через веб-консоль, и все работает нормально. В встраиваемом контейнере источник данных настраивается в embeddable.properties с:

снова введите имя как jdbc / connectionname среди другой информации источника данных (имя пользователя, пароль и т. Д.) И Bean. # TestProjectName # ClassNameForTests.ResourceRef.BindingName.jdbc / ConnectionName = JDBC / ConnectionName

Мои встраиваемые свойства следующие:

DataSource.ds1.name=jdbc/connectionname
DataSource.ds1.className=com.ibm.db2.jcc.DB2Driver
DataSource.ds1.createDatabase=create
DataSource.ds1.databaseName=DBNAME
DataSource.ds1.user=dbusername
DataSource.ds1.password=dbpassword
DataSource.ds1.transactional=true
DataSource.ds1.createDatabase=create

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

ERROR org.hibernate.connection.DatasourceConnectionProvider.configure:78 - Could not find datasource: jdbc/connectionname
javax.naming.NameNotFoundException: Name jdbc not found in context "serverlocal:CELLROOT/SERVERROOT".
at com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1969)
at com.ibm.ws.naming.ipbase.NameSpace.retrieveBinding(NameSpace.java:1376)
at com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1219)
at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:1141)
at com.ibm.ws.naming.urlbase.UrlContextImpl.lookupExt(UrlContextImpl.java:1436)
at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1314)
at javax.naming.InitialContext.lookup(InitialContext.java:436)
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)

Любой совет будет оценен.

1 Ответ

0 голосов
/ 14 марта 2012

Настроен ли источник данных jdbc/connectionname через встраиваемые свойства?См. Свойства конфигурации встраиваемого контейнера EJB Инфоцентр.Ваши свойства должны выглядеть примерно так:

DataSource.ds1.name=jdbc/connectionname
DataSource.ds1.className=org.apache.derby.jdbc.EmbeddedXADataSource
DataSource.ds1.createDatabase=create
DataSource.ds1.databaseName=jtest1

Если у вас уже есть это, можете ли вы показать свойства, которые вы используете?Обратите внимание, что Hibernate не использует вашу ссылку на ресурс, поэтому ResourceRef.BindingName в этом случае не действует.

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