为了简化 JNDI API 的使用,Spring 2.0框架专门提供了org.springframework.jndi包。其中,JndiTemplateEditor类继承于PropertyEditorSupport类,供实现JndiTemplate对象的属性编辑器使用,即开发者能够通过字符串方式实现对JndiTemplate值得设置(或者在IDE中编辑它)。
通常,开发者可以通过如下4种方式对JNDI资源进行CRUD操作。
1. 单独使用JndiObjectFactroyBean:这种方式最常见(Spring1.x)。这是负责查找JNDI对象的FactroyBean。
2. 同时使用JndiObjectTargetSource和ProxyFactoryBean:这种组合使用较少,因为这同上述单独使用JndiObjectFactoryBean的效果一样,而且在配置上也没有占有优势。
3. 使用JndiTemplate:辅助类,类似于JdbcTemplate,以简化对JNDI的CRUD操作。如果用户需要进行高级自定义工作,则还可以使用JndiCallback回调接口。
4. Spring2.0引入的<jndi-lookup/>内容模式。
单独使用JndiObjectFactoryBean
为了展示JndiObjectFactoryBean的功力,我们来使用JBoss应用服务器提供的JNDI服务。通过JBoss的JMX控制台应用,开发者能够获得全局JNDI名。
我们以消息队列“queue/testQueue”为例,并结合Jbossjndidemo项目进行阐述。
[code] <bean id="tq"
class="org.springframework.jndi.JndiObjectFactoryBean">
<!-- 指定JNDI模板 -->
<property name="jndiTemplate" ref="jndiTemplate" />
<!-- 指定JNDI名字 -->
<property name="jndiName" value="queue/testQueue" />
<!-- 是否缓存查找到的Java对象 -->
<property name="cache" value="true"></property>
<!-- 启动时是否去JNDI树查找目标资源(即,由jndiName指定的) -->
<property name="lookupOnStartup" value="true"></property>
<!-- 是否为资源引用 -->
<property name="resourceRef" value="false"></property>
</bean>
<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>[/code]
通常,开发者可以通过如下4种方式对JNDI资源进行CRUD操作。
1. 单独使用JndiObjectFactroyBean:这种方式最常见(Spring1.x)。这是负责查找JNDI对象的FactroyBean。
2. 同时使用JndiObjectTargetSource和ProxyFactoryBean:这种组合使用较少,因为这同上述单独使用JndiObjectFactoryBean的效果一样,而且在配置上也没有占有优势。
3. 使用JndiTemplate:辅助类,类似于JdbcTemplate,以简化对JNDI的CRUD操作。如果用户需要进行高级自定义工作,则还可以使用JndiCallback回调接口。
4. Spring2.0引入的<jndi-lookup/>内容模式。
单独使用JndiObjectFactoryBean
为了展示JndiObjectFactoryBean的功力,我们来使用JBoss应用服务器提供的JNDI服务。通过JBoss的JMX控制台应用,开发者能够获得全局JNDI名。
我们以消息队列“queue/testQueue”为例,并结合Jbossjndidemo项目进行阐述。
[code] <bean id="tq"
class="org.springframework.jndi.JndiObjectFactoryBean">
<!-- 指定JNDI模板 -->
<property name="jndiTemplate" ref="jndiTemplate" />
<!-- 指定JNDI名字 -->
<property name="jndiName" value="queue/testQueue" />
<!-- 是否缓存查找到的Java对象 -->
<property name="cache" value="true"></property>
<!-- 启动时是否去JNDI树查找目标资源(即,由jndiName指定的) -->
<property name="lookupOnStartup" value="true"></property>
<!-- 是否为资源引用 -->
<property name="resourceRef" value="false"></property>
</bean>
<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>[/code]
本文介绍了Spring框架中用于简化JNDI操作的多种方法,包括JndiTemplate的使用及JndiObjectFactoryBean的具体配置示例。
169

被折叠的 条评论
为什么被折叠?



