`
summersun_ym
  • 浏览: 15069 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

一个纯java的ftp服务器——apache ftpserver

阅读更多
项目地址 http://mina.apache.org/ftpserver/

1、底层通信使用mina

2、支持ssl认证

3、支持主动与被动模式

4、用户管理可以基于文件,也可以基于数据库,非常的方便

5、可以独立启动,也可方便的潜入到其他应用中,

6、官方提供了一个与spring集成的例子, 还有一个osgi bundle的例子


官方提供的spring集成的例子使用的是扩展spring NamespaceHandler的方式,由于我们的一个应用还是使用的较老版本的spring,对schema的支持还有些问题,所以我将其转换成了传统的spring配置方式

<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://toolkit.alibaba-inc.com/dtd/spring/spring-beans.dtd">

<beans default-autowire="byName">
	<!-- FtpServer -->
	<bean id="ftpServer" factory-bean="ftpServerFactory" factory-method="createServer" />
	<bean id="ftpServerFactory" class="org.apache.ftpserver.FtpServerFactory">
	 	<property name="userManager" ref="propertiesUserManager"/>
		<property name="connectionConfig" ref="connectionConfig"/>
		<property name="listeners">
			<map>
				<entry key="listeners" value-ref="nioListener" />
			</map>
        </property>
	</bean>
	
	<!-- PropertiesUserManager -->
	<bean id="propertiesUserManagerFactory" class="org.apache.ftpserver.usermanager.PropertiesUserManagerFactory">
		<property name="adminName" value="admin"/>
		<property name="file" value="${ftpserver_user_properties_path}"/>
		<property name="passwordEncryptor">
			<bean class="org.apache.ftpserver.usermanager.Md5PasswordEncryptor" />
		</property>
	</bean>
	<bean id="propertiesUserManager" factory-bean="propertiesUserManagerFactory" factory-method="createUserManager" />
	
	<!-- ConnectionConfig -->
	<bean id="connectionConfigFactory" class="org.apache.ftpserver.ConnectionConfigFactory">
		<property name="maxLogins" value="20"/>
		<property name="anonymousLoginEnabled" value="true"/>
		<property name="maxAnonymousLogins" value="20"/>
		<property name="maxLoginFailures" value="3"/>
		<property name="loginFailureDelay" value="500"/>
		<property name="maxThreads" value="0"/>
	</bean>
	<bean id="connectionConfig" factory-bean="connectionConfigFactory" factory-method="createConnectionConfig" />
	
	<!-- Listener -->
	<bean id="nioListenerFactory" class="org.apache.ftpserver.listener.ListenerFactory">
		<property name="port" value="2121"/>
	</bean>
	<bean id="nioListener" factory-bean="nioListenerFactory" factory-method="createListener" />

	<!--定义FTP SERVER Launcher-->
	<bean id="ftpServerLauncher" class="com.taobao.dw.query.ftp.server.FtpServerLauncher" init-method="startup" destroy-method="shutdown">
 		<property name="ftpServer" ref="ftpServer" />
	</bean>
</beans>


以下是ftp启动类:
package com.igoolu.ftp.server;

import org.apache.ftpserver.FtpServer;


/**
 * Ftp Server的启动与关闭
 *
 * @author summersun_ym
 * @version $Id: FtpServerListener1.java 2010-11-22 上午09:47:00 $
 *
 */
public class FtpServerLauncher {
    /** logger */
    protected final Logger log = LoggerFactory.getLogger(getClass());
    
    FtpServer ftpServer;
    
    public void setFtpServer(FtpServer ftpServer) {
        this.ftpServer = ftpServer;
    }

    /**
     * 停止FTP SERVER
     * 
     * @param sce
     */
    public void shutdown() {
        log.info("Stopping FtpServer");
        if (ftpServer != null) {
            ftpServer.stop();
            log.info("FtpServer stopped");
        } else {
            log.info("No running FtpServer found");
        }
    }
    
    /**
     * 启动FTP SERVER
     * 
     * @param sce
     */
    public void startup() {
        log.info("Starting FtpServer");
        try {
            ftpServer.start();
            log.info("FtpServer started");
        } catch (Exception e) {
            throw new RuntimeException("Failed to start FtpServer", e);
        }
    }
}

分享到:
评论

相关推荐

    (转)Java使用Apache FtpServer实现嵌入式FTP服务器

    Apache FtpServer是一个开源项目,它提供了一个轻量级且可嵌入的FTP服务器,允许开发者在Java应用程序中直接启动和管理FTP服务。 首先,我们需要了解FTP(File Transfer Protocol)的基本概念。FTP是一种用于在网络...

    java FTP server

    开发者可以通过查看这些内容来学习和理解如何实现一个功能完备的Java FTP服务器,也可以直接部署和使用这个服务器。如果需要进一步了解或定制功能,可以深入研究源代码,学习其中的类和方法是如何实现FTP协议规范的...

    apache mina 学习笔记三(子项目FtpServer)

    在本学习笔记中,我们将专注于MINA的子项目——FtpServer,它是实现FTP服务器功能的一个模块。 FTP(File Transfer Protocol)是一种广泛使用的互联网协议,用于在不同主机之间传输文件。Apache MINA FtpServer提供...

    java ftp 上传下载,代码。

    本文将详细介绍如何使用Java实现FTP的上传和下载功能,并结合提供的资源——"WinFtp Server2.0.1特别汉化版",为你提供一个实践环境。 首先,Java中实现FTP功能主要依赖于`java.net`和`java.io`这两个核心库,但...

    java--ftp(server_client).rar_FTP CLIENT_FTP server client_ftp_ja

    Java FTP服务器可能使用了Apache Commons Net库或其他开源库来实现,这些库提供了处理FTP命令、管理用户权限和数据传输等功能。 在Java中实现FTP,主要涉及以下几个关键点: 1. **建立连接**:使用`Socket`类创建...

    java版实现ftp管理工具

    本篇文章将深入探讨如何使用Java来实现一个FTP管理工具,包括其核心概念、关键技术和实现步骤。 首先,理解FTP的基本工作原理至关重要。FTP基于TCP/IP协议,通过建立两个连接——控制连接和数据连接,来实现客户端...

    java ftp操作

    在Java编程中,FTP(File Transfer Protocol)操作主要用于在客户端和服务器之间传输文件。...通过理解和掌握以上知识点,你可以编写出一个完整的Java FTP文件上传程序,实现从本地文件夹到FTP服务器的文件传输。

    基于java的FTP客户端设计与实现

    本项目"基于Java的FTP客户端设计与实现"旨在利用Java语言构建一个能够连接到FTP服务器,实现登录、文件上传和下载等功能的客户端程序。 首先,要实现FTP客户端,我们需要理解FTP的工作原理。FTP基于TCP/IP协议,...

    JAVA中的FtpClient与FTPClient,并实现jsp面下载ftp服务器上的文件.docx

    本文将详细介绍Java中两种不同的FTP客户端库——`FtpClient`与`FTPClient`,并给出具体的示例代码来实现JSP页面下载FTP服务器上的文件功能。 #### 二、FtpClient与FTPClient对比 在开始之前,我们需要明确两个概念...

    commons-net-3.6.jar

    Apache Commons Net还包含了一个FTP服务器模拟器——FTPServer,这对于测试和调试FTP客户端代码非常有用。开发者可以设置规则,模拟不同的服务器响应,以确保客户端代码在各种情况下的正确性。 总结,Apache ...

    JAVA上百实例源码以及开源项目源代码

    Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多...

    http-ftp-server

    《构建HTTP与FTP服务器——基于Java技术》 在IT领域,网络通信是不可或缺的一部分,而HTTP(超文本传输协议)和FTP(文件传输协议)作为最常用的两种协议,广泛应用于数据传输。本篇将深入探讨如何使用Java语言来...

    7款主流WEB服务器软件[归类].pdf

    Tomcat是Apache软件基金会下的开源项目,是一个纯Java的Servlet容器,主要用于运行Java Servlet和JavaServer Pages(JSP)。虽然Tomcat本身不支持完整的J2EE规范,但可以通过与Apache HTTP Server或其他全功能应用...

    ftp client applet

    2. 连接到FTP服务器,使用`connect(String server, int port)`方法。 3. 登录服务器,使用`login(String user, String pass)`方法。 4. 设置传输模式,如`setFileType(FTP.BINARY_FILE_TYPE)`。 5. 执行FTP命令,如`...

    常见的web服务器

    本文介绍了Web服务器的基本概念及其分类,并详细讨论了两种最常见的Web服务器——IIS和Apache HTTP Server。此外,还深入探讨了J2EE环境下的Web服务器和应用程序服务器,特别是Tomcat在其中的作用。通过本文的学习,...

    Android 简单FTP上传文件.zip

    1. FTP客户端库:这里使用的是`commons-net-1.4.1.jar`,这是一个Apache Commons Net库,提供了FTP客户端实现。将此库导入Android项目,通常将其放在项目的`libs`目录下,并在`build.gradle`文件中添加依赖。 ```...

    [详细完整版]WEB服务器.doc

    - **IBM WebSphere**:是一个功能强大的Java应用服务器,适用于构建和部署复杂的Web应用程序。WebSphere提供了一个可伸缩的运行时环境,支持HTTP和IIOP通信,适合企业级应用。 5. **选择Web服务器的考虑因素** 在...

    教师业务管理系统——毕业设计

    当用户请求一个ASP页面时,Web服务器接收到请求并将该页面传递给服务器上的ASP引擎进行编译和执行。执行完毕后,ASP引擎将生成的标准HTML内容发送回客户端浏览器进行显示。这一过程使得ASP能够处理动态内容,同时又...

    试论电子商务网站的运行环境配置.pptx

    - **Tomcat**:Tomcat是一个开源的Java Web应用服务器,专注于Servlet和JSP规范。它是ApacheJakarta项目的一部分,实现了Servlet 2.2和JSP 1.1标准,适用于轻量级的Java应用。 2. **Web站点的创建与管理** 创建...

    四电子商务网站的运行环境配置.pptx

    IIS是由Microsoft开发的一款全面的Web服务组件,它包含Web服务器、FTP服务器、NNTP服务器和SMTP服务器,提供网页浏览、文件传输、新闻服务和邮件发送等功能。IIS以其ISAPI(Intranet Server API)为扩展Web服务器...

Global site tag (gtag.js) - Google Analytics