我正在尝试在JBoss 6上部署.war文件,并且我已经创建了我想要使用JNDI访问的MySql数据源。
我的配置看起来像这样:
myDB-mysql-ds.xml
中的
jndi-name : MyDataSource
in jboss-web.xml
res-ref-name : jdbc/MyDataSource
res-type : javax.sql.DataSource
jndi-name : java:/MyDataSource
applicationContext.xml
中的
property name="jndiName"
& its value : java:comp/env/jdbc/MyDataSource
当我部署这个war文件时,它会绑定到MyDatasource,如
INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=MyDataSource' to JNDI name 'java:MyDataSource'
但我仍然收到错误:
ERROR [[/AppName]] Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: JNDI object with [java:comp/env/jdbc/MyDataSource] not found: JNDI implementation returned null
答案 0 :(得分:1)
这是因为你以错误的方式访问它。您应该执行以下操作,
<use-java-context>false</use-java-context>
然后通过其JNDI name
访问它。