訪問數據源,我有一個JBoss,我已經成功部署了數據源mydatasource-ds.xml
。 它的JNDI名稱是java:mydatasourceDS
。 JBoss聲稱數據源已成功部署。 JMX控制檯也是如此。
問題
我想用這個數據源從一個單獨的JVM推出了客戶端的Java應用程序。 但我收到一個異常說java:mydatasourceDS
無法找到。
java.lang.ClassCastException: javax.naming.Reference cannot be cast to javax.sql.DataSource
詳細
這裏是persistence.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
<persistence-unit name="mydatasource-db" transaction-type="JTA">
<jta-data-source>java:mydatasourceDS</jta-data-source>
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.default_schema" value="rec" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
</properties>
</persistence-unit>
這裏是jndi.properties
文件:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
這裏是應用程序類路徑:
jndi.properties
log4j.properties
META-INF\persistence.xml
hibernate-jpa-2.0-api-1.0.0.Final.jar
jnp-client-5.0.3.GA.jar
jboss-common-core-2.2.14.GA.jar
jboss-logging-spi-2.1.0.GA.jar
hibernate-entitymanager-3.6.4.Final.jar
hibernate-core-3.6.4.Final.jar
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-3.2.0.Final.jar
jta-1.1.jar
javassist-3.12.0.GA.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
log4j-1.2.16.jar
xstream-1.4.1.jar
xmlpull-1.1.3.1.jar
xpp3_min-1.1.4c.jar
編輯 我已經找到了問題的根源。可用於我的客戶端應用程序的javax.sql.DataSource
不是從JNDI收到的。我從JNDI收到的是JBoss javax.sql.DataSource
。名稱相同,但略有不同類別因此ClassCastException異常...
在撰寫本文時,JBoss的javax.sql.DataSource中可以在此包中找到:的jboss-J2EE的4.2.3.GA.jar
很高興知道你解決了它:D – oers 2011-12-22 19:50:04
好不是真的。我找到了根本原因,但我無法解決它。我如何擺脫JDK中的javax.sql.DataSource來支持JBoss中的javax.sql.DataSource?我可以從類路徑中刪除rt.jar,但我需要java.lang.String:-o – Stephan 2011-12-24 02:32:46