如何使用Scala/Java启动Apache MINA FTP服务器?

4
我正在尝试将Apache MINA FTP服务器嵌入到我的Scala应用程序中,但是在实现时遇到了一些问题。我使用的是Apache FtpServer 1.05版本,并在他们的网站上找到了几个示例,但在转换为Scala代码后却无法正常工作。
以下是我的代码:
package aperture

import org.apache.ftpserver.listener.ListenerFactory
import org.apache.ftpserver.ftplet._
import org.apache.ftpserver.{FtpServerFactory, FtpServer}
import java.io.File
import org.apache.ftpserver.usermanager.{UserFactory, SaltedPasswordEncryptor, PropertiesUserManagerFactory}

object Main {
    def main(args: Array[String]) {
        val serverFactory: FtpServerFactory = new FtpServerFactory()
        val listenerFactory: ListenerFactory = new ListenerFactory()

        listenerFactory.setPort(2221);
        listenerFactory.setServerAddress("localhost")
        listenerFactory.setImplicitSsl(false);

        serverFactory.addListener("default", listenerFactory.createListener())

        val userManagerFactory: PropertiesUserManagerFactory = new PropertiesUserManagerFactory()
        userManagerFactory.setFile(new File("myusers.properties"))
        userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor())
        val userManager: UserManager = userManagerFactory.createUserManager()

        val userFact: UserFactory = new UserFactory()
        userFact.setName("myNewUser")
        userFact.setPassword("secret")
        userFact.setHomeDirectory("ftproot")
        val user: User = userFact.createUser()
        userManager.save(user)

        serverFactory.setUserManager(userManagerFactory.createUserManager())

        // start the server
        val server: FtpServer = serverFactory.createServer()
        server.start()
    }
}

代码是有效的,服务器似乎在端口2221上启动,但我无法连接到它:ftp:localhost:2221:没有与主机名关联的地址ftp:127.0.0.1:2221:名称或服务未知。有什么想法吗?
1个回答

3

我做了两件错误的事情:

  1. 我使用命令 ftp localhost:2221 连接到ftp服务器,而不是正确的方式(用空格代替冒号)ftp localhost 2221
  2. 我创建了一个UserManager,但最终没有使用它。我将 serverFactory.setUserManager(userManagerFactory.createUserManager()) 改为 serverFactory.setUserManager(userManager)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接