2013-08-21 101 views
0

我需要从运行在Tomcat 6上的Web应用程序访问FTP服务器。我想使用JNDI来执行此操作。Tomcat:通过JNDI使用FTP连接

如何使用JNDI在Tomcat中配置此FTP连接? 我必须写入web.xmlcontext.xml才能配置资源?然后,我如何才能从Java源代码访问此连接?

+0

一个问题。为什么? – EJP

+0

我需要将URL存储到某个地方的FTP服务器。 Web应用程序的上下文似乎是合乎逻辑的地方。这也是配置数据库URL的地方。 – Bob

回答

3

从这个帖子:http://codelevain.wordpress.com/2010/12/18/url-as-jndi-resource/

定义你的FTP URL在你的context.xml这样的:

<Resource name="url/SomeService" auth="Container" 
type="java.net.URL" 
factory="com.mycompany.common.URLFactory" 
url="ftp://ftpserver/folder" /> 

提供的com.mycompany.common.URLFactory实施,并确保所产生的类可到Tomcat:

import java.net.URL; 
import java.util.Hashtable; 
import javax.naming.*; 
import javax.naming.spi.ObjectFactory; 

public class URLFactory implements ObjectFactory { 
public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment) throws Exception { 
Reference ref = (Reference) obj; 
String urlString = (String) ref.get("url").getContent(); 
return new URL(urlString); 
} 
} 

创建在web.xml中

您参考
<resource-ref> 
<res-ref-name> 
    url/SomeService 
</res-ref-name> 
<res-type> 
    java.net.URL 
</res-type> 
<res-auth> 
    Container 
</res-auth> 
</resource-ref> 

然后在你的代码做一个JNDI查找获取FTP网址:

InitialContext context = new InitialContext(); 
URL url = (URL) context.lookup("java:comp/env/url/SomeService"); 
+0

谢谢,那正是我所期待的。 – Bob

0

你不需要JNDI。只需使用一个URLConnection Java类,其URL从"ftp:"开始,请参见e。 G。 URL Connection (FTP) in Java - Simple Question

+0

感谢您的回答。我澄清了我的问题:我特别想使用JNDI来配置FTP服务器。 – Bob

+0

因此,即使Apache commons net项目的FTPClient类不能满足您的需求?请参阅:http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html – FrankPl