我正在尝试使用JNDI和Spring从Tomcat的context.xml中加载Marklogic ContentSource对象。

我正在使用Tomcat 8.5和Spring 2.5(不幸的是)

我已经在Tomcat的context.xml中添加了以下内容

<Resource name="MLContentSource" auth="Container" type="com.marklogic.xcc.ContentSource"
factory="com.marklogic.xcc.jndi.ContentSourceBeanFactory"
url="xcc://username:password@mymarklogic-server/DatabaseName"/>


在我的applicationContext.xml中

<bean id="contentSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/MLContentSource"/>
</bean>


我的applicationContext.xml中声明了另一个依赖于ContentSource bean的bean。它期望设置的属性类型为com.marklogic.xcc.ContentSource

<bean id="marklogicRepository" class="org.example.repository.ingestion.MarkLogicRepositoryImpl">
    <property name="contentSource" ref="contentSource" />
</bean>


问题在于contentSource bean的类型为JndiObjectFactoryBean,而不是com.marklogic.xcc.ContentSource。从JndiObjectFactoryBean获得适当的ContentSource是否缺少我的东西?

最佳答案

事实证明,上面的代码实际上有效,我的IDE抱怨类型,但是Spring会在运行时自动将JndiObjectFactoryBean中存储的对象转换为目标类型。

10-06 12:49