Java jndi查找DefaultFtpSessionFactory

Java jndi查找DefaultFtpSessionFactory,java,spring,tomcat,jndi,spring-integration,Java,Spring,Tomcat,Jndi,Spring Integration,我在.properties文件中有ftp连接属性,下面是Springbean的代码 <bean id="ftpConnectionFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory"> <property name="host" value="${ftp.host}"/> <property name="port" v

我在.properties文件中有ftp连接属性,下面是Springbean的代码

<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进行查找。对于datasource,我目前正在这样做。但我不知道如何为会话工厂做这件事。我想这样做的原因是隐藏密码和其他详细信息

您可以使用PropertyPlaceHolderConfiguration,如下所示

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

类路径:external.properties

请参阅和的更多示例。如果Tomcat可以从
context.xml
将对象正确绑定到JNDI,那么从JNDI查找访问该对象与对
数据源的访问没有区别


请展示您如何为Spring中的
DataSource
执行此操作,以及如何配置
ftpConnectionFactory
,我将尽力帮助您。

是的,现在我正在使用属性文件。上述方法确实有效。我想从web应用程序中删除属性文件,并将它们添加到server context.xml中,就像我们对datasourceI所做的那样,我在spring配置中使用了
,而资源位于上下文文件中。我也可以对这个ftp会话工厂做同样的事情,对吗?没错!JNDI与您绑定并想要获取的对象没有区别。如果您的Tomcat是为您做的,那么您可以使用
JndiObjectFactoryBean
从JNDI获取所需的对象