jndi查找DefaultFtpSessionFactory

时间:2014-03-24 06:14:02

标签: java spring tomcat jndi spring-integration

我在.properties文件中有ftp连接属性,并且有以下spring bean代码。

<bean id="ftpConnectionFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
        <property name="host" value="${ftp.host}"/>
        <property name="port" value="${ftp.port}"/>
        <property name="username" value="${ftp.username}"/>
        <property name="password" value="${ftp.password}"/>
    </bean>

上面的方法可以使用Web应用程序和占位符配置中的属性文件。但我想要的是将这些属性保存在服务器中,让我们说tomcat context.xml文件。

我有使用这个工厂的spring集成。

<int-ftp:outbound-channel-adapter id="ftpOutbound"
        channel="ftpChannel"
        remote-directory="${ftp.remoteDir}" 
        remote-file-separator="\"
        session-factory="ftpConnectionFactory"
         />

有没有办法可以在服务器中外部化这些属性并使用jndi查找。对于数据源,我目前正在这样做。但我不知道如何为会议工厂做这件事。我想这样做的原因是隐藏密码和其他细节。

2 个答案:

答案 0 :(得分:1)

您可以使用PropertyPlaceholderConfigurer,如下所示

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
          <value>classpath:external.properties</value>
    </property>
</bean>

5.8.2 Customizing configuration metadata with a BeanFactoryPostProcessorSpring PropertyPlaceholderConfigurer Example

上查看更多示例

答案 1 :(得分:1)

如果Tomcat可以正确地将对象绑定到context.xml的JNDI,那么从JNDI查找中获取对该对象的访问没有区别,就像对DataSource那样。

请显示,您如何从Spring DataSource开始,以及如何配置ftpConnectionFactory,我会尽力帮助您。