spring中对于jndi的访问,提供了便捷的方法,在spring的org.springframework.jndi包中包含了所有的类。其中提供了一下核心类:
1)jnditemplate:它是这个包的核心类,用来简化对jndi的操作。它提供了对于lookup、bind方法。
<bean id="jnditemplate" class="org.springframework.jndi.jnditemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">org.jnp.interfaces.namingcontextfactory</prop>
<prop key="java.naming.provider.url">jnp://localhost:1099</prop>
<prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
</props>
</property>
</bean>
2)jndiobjectfactorybean:looks up 一个jndi对象,暴露在jndi中找到的对象给其他bean引用,例如在数据源情况下作为数据访问对象的 "datasource" property
使用jndiobjectfactorybean,例如
<bean id="datasource" class="org.springframework.jndi.jndiobjectfactorybean">
<property name="jndiname">
<value>java:/mysqlds</value>
实例:
数据源的配置:
(1)配置可以访问到同一应用服务器的jndi数据源
<value>jdbc/cqccms</value>
(2)配置能访问远程jndi数据源
方法1:直接通过jndiobjectfactorybean的jndienvironment属性定义远程jndi参数
<property name="jndiname">
<value>jdbc/cqccms</value>
</property>
<property name="jndienvironment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.wlinitialcontextfactory
</prop>
<prop key="java.naming.provider.url">t3://172.16.101.42:7001</prop>
<prop key="java.naming.security.principal">weblogic</prop>
<prop key="java.naming.security.credentials">weblogic</prop>
</props>
</property>
方法2:先定义jnditemplate,由jnditemplate定义远程jndi参数
<prop key="java.naming.factory.initial">weblogic.jndi.wlinitialcontextfactory</prop>
<prop key="java.naming.provider.url">t3://172.16.101.42:7001</prop>
<prop key="java.naming.security.principal">weblogic</prop>
<prop key="java.naming.security.credentials">weblogic</prop>
<property name="jnditemplate" ref="jnditemplate" />