我在 Spring applicationContext.xml 文件中使用 JNDI 配置 dataSource bean 时遇到问题。
这就是我的 applicationContext.xml 条目的样子:
<jee:jndi-lookup id="dataSource" jndi-name="jdbc/myApp" expected-type="javax.sql.DataSource"/>
我在 web.xml 中做了一个条目:
<resource-env-ref>
<resource-env-ref-name>jdbc/myApp</resource-env-ref-name>
<resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
<resource-env-ref>
Tomcat 中的 Context.xml 文件:
<Resource
auth="Container"
factory="bitronix.tm.resource.ResourceObjectFactory"
name="jdbc/myApp" type="javax.sql.DataSource"
uniqueName="jdbc/myApp" />
使用这些配置,我在 Tomcat 控制台上不断收到此错误:
原因:javax.naming.NameNotFoundException:名称 [jdbc/myApp] 未绑定在此上下文中。找不到 [jdbc]。在 org.apache.naming.NamingContext.lookup(NamingContext.java:819) 在 org.apache.naming.NamingContext.lookup(NamingContext.java:167) 在 org.apache.naming.SelectorContext.lookup(SelectorContext.java:156 ) 在 javax.naming.InitialContext.lookup(InitialContext.java:392) 在 org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155) 在 org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87 ) 在 org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152) 在 org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:179) 在 org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java: 104) 在 org.springframework.jndi。
请帮我解决这个问题。在我看来,Context.xml 中的 bitronix 事务工厂导致了这个问题。