I need to access an FTP server from my Web Application which runs on Tomcat 6. I want to use JNDI to do this.
How can I configure this FTP connection in Tomcat using JNDI? What do I have to write into web.xml
and context.xml
to configure the resource? And how can I then access this connection from the Java source code?
From this post : http://codelevain.wordpress.com/2010/12/18/url-as-jndi-resource/
Define your FTP URL in your context.xml like this :
<Resource name="url/SomeService" auth="Container" type="java.net.URL" factory="com.mycompany.common.URLFactory" url="ftp://ftpserver/folder" />
Provide the com.mycompany.common.URLFactory implementation and make sure the resulting class is available to 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); } }
Create your reference in 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>
Then in your code obtain the FTP URL by doing a JNDI lookup:
InitialContext context = new InitialContext(); URL url = (URL) context.lookup("java:comp/env/url/SomeService");
You do not need JNDI for that. Just use an URLConnection
Java class with an URL starting with "ftp:"
, see e. g. URL Connection (FTP) in Java - Simple Question