发现几个博客提供了定义jndi数据源的步骤,然后从Spring Container访问。
方法1:
1. Creating a file context.xml in srcmainwebappMETA-INF folder and defining all
relevant jndi datasources.
2. Accessing jndi datasource from spring application context.xml file by using
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/MyDB"/>
</bean>
我尝试了上面的配置,这是有效的。
我也找到了其他一些方法。
方法2:http://makecodeeasy.blogspot.in/2013/05/jndi-datasource-in-spring.html和Tomcat 6/7 JNDI,具有多个数据源,其中
1. Datasources are defined in server.xml file (tomcat) and refered in web.xml file.
2. Accessing jndi datasources from spring application context.xml file
using JndiObjectFactoryBean with an additional resource ref attribute.
再说一遍。那么使用下面的线来实现上面两种方法中的第二步呢。
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/MyDB" />
基本上我想知道哪一种是更好的服务器连接池机制。一种方法比另一种方法有优势吗。哪一个是高级的,为什么?
===编辑===
一旦spring应用程序上下文通过context.xml中定义的jndi获得了与数据源相关的信息,不在Web容器中运行Standalone的Junit测试用例将如何访问jndi资源
有人能帮我弄清楚这些吗。
查看此文档,两种方法的作用似乎完全相同。
就连接池而言,JNDI查找与此无关。Spring将查找并使用您在context.xml
中声明的任何连接池(或使用的任何等效连接池)。如果您将BoneCP声明为您的连接池,那么它将被使用,同样,如果您使用Tomcat连接池或其他任何池。