本文介绍通过spring 集成的方式来实现。创建spring-apacheFtpServer.xml文件如下图所示
<?xml version="1.0" encoding="UTF-8"?> <server xmlns="http://mina.apache.org/ftpserver/spring/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd " id="apacheFtpServer"> <listeners> <nio-listener name="default" port="21"> </nio-listener> </listeners> <file-user-manager file="ftpConfig.properties" /> </server>
引入的属性文件ftpConfig.properties如下所示
# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # Password is "admin" ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3 ftpserver.user.admin.homedirectory=F:\\temp ftpserver.user.admin.enableflag=true ftpserver.user.admin.writepermission=true ftpserver.user.admin.maxloginnumber=0 ftpserver.user.admin.maxloginperip=0 ftpserver.user.admin.idletime=0 ftpserver.user.admin.uploadrate=0 ftpserver.user.admin.downloadrate=0 ftpserver.user.anonymous.userpassword= ftpserver.user.anonymous.homedirectory=F:\\temp ftpserver.user.anonymous.enableflag=true ftpserver.user.anonymous.writepermission=false ftpserver.user.anonymous.maxloginnumber=20 ftpserver.user.anonymous.maxloginperip=2 ftpserver.user.anonymous.idletime=300 ftpserver.user.anonymous.uploadrate=4800 ftpserver.user.anonymous.downloadrate=4800
实现如下java代码。
package com.sdjxd.util; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.impl.DefaultFtpServer; import org.apache.log4j.Logger; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; /** * 项目启动的时候,就开启ftp服务器 * * @author zhen * */ public class ApacheFtpServerListener implements ServletContextListener { private static final Logger logger = Logger .getLogger(ApacheFtpServerListener.class); private static final String FTPSERVER_CONTEXT_NAME = "FTPSERVER_CONTEXT_NAME"; public void contextDestroyed(ServletContextEvent sce) { logger.info("正在停止FTP服务...."); DefaultFtpServer server = (DefaultFtpServer) sce.getServletContext() .getAttribute(FTPSERVER_CONTEXT_NAME); if (server != null) { server.stop(); sce.getServletContext().removeAttribute(FTPSERVER_CONTEXT_NAME); logger.info("FTP服务已停止!"); } else { logger.info("停止FTP服务出错!"); } } public void contextInitialized(ServletContextEvent sce) { logger.info("正在开启FTP服务...."); ApplicationContext ac = WebApplicationContextUtils .getWebApplicationContext(sce.getServletContext()); DefaultFtpServer server = (DefaultFtpServer) ac .getBean("apacheFtpServer"); sce.getServletContext().setAttribute(FTPSERVER_CONTEXT_NAME, server); try { server.start(); logger.info("FTP服务已开启!"); } catch (FtpException e) { logger.error(e.getMessage()); } } }
最后在web.xml文件中加入监听
<listener>
<description>apache ftp server监听器</description>
<listener-class>com.sdjxd.util.ApacheFtpServerListener</listener-class>
</listener>
至此Ftp文件服务器架设成功,让我们用ftp客户端来测试一下我们的Ftp服务器吧。
由于附件大小的限制,源码放到了CSDN,有需要的童鞋请到这里下载