Проблемы JNDI: Jboss 4.2.2 Spring 2.5 и спящий ejb - PullRequest
0 голосов
/ 21 апреля 2010

У меня странная проблема, которая вызывает у меня некоторое горе. Если в моем classpath есть следующая банка:

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>org.hibernate.ejb</artifactId>
<version>3.3.2.GA</version>
</dependency>

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

InitialDirContext ctx = new InitialDirContext(env);
DataSource dataSource = (DataSource)ctx.lookup("java:dataContent");

В противном случае DataSource возвращает штраф из контекста. К сожалению, мне нужен jar, чтобы избежать исключений ClassCastException в Jboss 4.2.2.

Любая помощь приветствуется.

<datasources>
<local-tx-datasource>
<jndi-name>dataContent</jndi-name>
<connection-url>jdbc:oracle:thin:@server.net:1521:XXX</connection-url>
<min-pool-size>1</min-pool-size>
<max-pool-size>5</max-pool-size>
<user-name>dbuser</user-name>
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<password>dbpasswd</password>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</local-tx-datasource>
</datasources>

Ответы [ 2 ]

0 голосов
/ 21 апреля 2010

Похоже, в том числе и то, что зависимость вводит транзитивно и некоторые другие банки. Убедитесь, что ваше приложение не упаковывает JAR-файлы, специфичные для JBoss. В этом случае я думаю, что в вашем приложении может присутствовать jboss-common-core.jar, что может привести к этой проблеме. Удалите этот jar (и любые другие специфичные для JBoss файлы jar) - вы можете добавить его в зависимость maven.

0 голосов
/ 21 апреля 2010

Насколько я помню, JBoss 4.2 совместим с EJB3 / JPA, и поэтому реализацию персистентности в спящем режиме следует использовать только для компиляции. Следующая зависимость maven должна выполнить это:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>org.hibernate.ejb</artifactId>
    <version>3.3.2.GA</version>
    <scope>provided</scope>
</dependency>

Если вы используете только часть JPA, вы можете урезать ее только в зависимости от javax.persistence api.

...