在将spring3 + hibernate J2EE应用程序部署到JBoss 6时找不到jndi数据源

时间:2010-12-16 01:41:27

标签: hibernate spring jboss datasource jndi

我有一个J2EE应用程序,它使用Spring 3.0 +最新版本的Hibernate(3.6),我想在JBoss 6 CR1上部署它。

但是我遇到了一个例外,说明在部署应用程序时找不到数据源。

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [javax.sql.DataSource] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920) [:3.0.5.RELEASE]
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789) [:3.0.5.RELEASE]
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) [:3.0.5.RELEASE]
 at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795) [:3.0.5.RELEASE]
 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723) [:3.0.5.RELEASE]
 ... 159 more

我检查了JBoss Application Server的JMX控制台,我在Spring中声明的数据源在java命名空间下。

我将application-context.xml中的数据源视为

<jee:jndi-lookup id="dataSource" jndi-name="java:ThisIsMyDataSource"/>

在persistence.xml文件中我声明了:

<persistence-unit name="persistenceUnit" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:/ThisIsMyDataSource</jta-data-source>
</persistence-unit>

名为ThisIsMyDataSource的数据源位于/ jboss / server / default / deploy

的deploy文件夹中

看起来我的应用程序试图查找javax.sql.datasource的bean以自动装入其他类的构造函数并失败。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这似乎是一个错字。你能试试

吗?
<jee:jndi-lookup id="dataSource" jndi-name="java:/ThisIsMyDataSource"/>

而不是

<jee:jndi-lookup id="dataSource" jndi-name="java:ThisIsMyDataSource"/>