如何在以声明方式将对象绑定(绑定)到jndi?

我们有一个普通的独立spring应用程序,需要将jdbc数据源放在jndi中。(我们使用jboss treecache,它需要数据源位于jndi中)。

一些谷歌搜索人员发现了大多数使用Spring的jndi查找示例,其中已经在jndi中放置了一个对象(通过tomcat或应用服务器等),但是我们需要另外的方法:我有一个简单的数据源Spring bean,我将其注入到其他服务中,但我无法将其注入TreeCache,因为它仅需要jndi的支持。

Found org.springframework.jndi.JndiTemplate,可以声明为bean,例如:

<bean id="fsJndiTemplate" class="org.springframework.jndi.JndiTemplate">

<property name="environment">

<props>

<prop key="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</prop>

<prop key="java.naming.provider.url">file:///c:\windows\temp</prop>

</props>

</property>

</bean>

但是除了Java代码外,没有找到如何与之绑定:fsJndiTemplate.bind(name, obj)来自其他bean的init-method。有什么办法声明性地做到这一点?

回答:

你可以创建一个使用JndiTemplate绑定名称的对象映射的JndiExporter:

<bean id="jndiExporter" class="org.xxx.JndiExporter">

<property name="jndiTemplate" ref="jndiTemplate">

<property name="objects">

<map>

<entry key="name1" value="bean1"/>

<entry key="name2" value="bean2"/>

<entry key="name3" value="bean3"/>

<entry key="name4" value="bean4"/>

</map>

</property>

</bean>

你的JndiExporter必须实现BeanFactoryAware才能使用注入的BeanFactory检索spring bean。

以上是 如何在以声明方式将对象绑定(绑定)到jndi? 的全部内容, 来源链接: utcz.com/qa/419122.html

回到顶部