我正在尝试使用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中存储的对象转换为目标类型。