2013-08-21 2 views
0

Мне нужно получить доступ к FTP-серверу из моего веб-приложения, которое работает на Tomcat 6. Я хочу использовать JNDI для этого.Tomcat: используйте FTP-соединение через JNDI

Как настроить это FTP-соединение в Tomcat с помощью JNDI? Что мне нужно написать в web.xml и context.xml, чтобы настроить ресурс? И как я могу получить доступ к этому соединению из исходного кода Java?

+0

один вопрос. Зачем? – EJP

+0

Мне нужно где-то сохранить URL-адрес на FTP-сервере. Контекст веб-приложения кажется логичным местом. Это также место, где настроен 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> 

Затем в коде получить URL FTP, выполнив JNDI поиск:

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

Спасибо, это именно то, что я искал. – Bob

0

Для этого вам не нужен JNDI. Просто используйте класс Java URLConnection с URL-адресом, начинающимся с "ftp:", см. E. г. URL Connection (FTP) in Java - Simple Question

+0

Спасибо за ваш ответ. Я уточнил свой вопрос: я специально хочу использовать JNDI для настройки FTP-сервера. – Bob

+0

Значит, даже класс FTPClient проекта Apache commons net не отвечает вашим потребностям? См. Http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html – FrankPl

Смежные вопросы