У меня есть приложение 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
Я проверил консоль JMX сервера приложений JBoss, и источник данных, который я объявил в 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
Похоже, что мое приложение пыталось найти bean-компонент для javax.sql.datasource для автоматической передачи в конструкторы некоторых других классов и не удалось.
Кто-нибудь знает, как решить эту проблему?