Spring对JNDI的支持

Spring对JNDI的支持

Spring中对于JNDI的访问,提供了便捷的方法,在Spring的org.springframework.jndi包中包含了所有的类。其中提供了一下核心类:

1)JndiTemplate:它是这个包的核心类,用来简化对JNDI的操作。它提供了对于lookup、bind方法。

<beanid="jndiTemplate"class="org.springframework.jndi.JndiTemplate">

<propertyname="environment">

<props>

<propkey="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>

<propkey="java.naming.provider.url">jnp://localhost:1099</prop>

<propkey="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>

</props>

</property>

</bean>

2)JndiObjectFactoryBean:looksup一个JNDI对象,暴露在JNDI中找到的对象给其他Bean引用,例如在数据源情况下作为数据访问对象的"dataSource"property

使用JndiObjectFactoryBean,例如

<beanid="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean">

<propertyname="jndiName">

<value>java:/MySqlDS</value>

</property>

</bean>

实例:

数据源的配置:

(1)配置可以访问到同一应用服务器的jndi数据源

<beanid="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean">

<propertyname="jndiName">

<value>jdbc/cqccms</value>

</property>

</bean>

(2)配置能访问远程jndi数据源

方法1:直接通过JndiObjectFactoryBean的jndiEnvironment属性定义远程JNDI参数

<beanid="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean">

<propertyname="jndiName">

<value>jdbc/cqccms</value>

</property>

<propertyname="jndiEnvironment">

<props>

<propkey="java.naming.factory.initial">

weblogic.jndi.WLInitialContextFactory

</prop>

<propkey="java.naming.provider.url">t3://172.16.101.42:7001</prop>

<propkey="java.naming.security.principal">weblogic</prop>

<propkey="java.naming.security.credentials">weblogic</prop>

</props>

</property>

</bean>

方法2:先定义jndiTemplate,由jndiTemplate定义远程JNDI参数

<beanid="jndiTemplate"class="org.springframework.jndi.JndiTemplate">

<propertyname="environment">

<props>

<propkey="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>

<propkey="java.naming.provider.url">t3://172.16.101.42:7001</prop>

<propkey="java.naming.security.principal">weblogic</prop>

<propkey="java.naming.security.credentials">weblogic</prop>

</props>

</property>

</bean>

<beanid="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean">

<propertyname="jndiName">

<value>jdbc/cqccms</value>

</property>

<propertyname="jndiTemplate"ref="jndiTemplate"/>

</bean>

相关推荐