2011-05-16 44 views
1

我寫程序的Apache服務器的這樣的啓動代碼:測試是否嵌入米娜FTPServer的真正開始

public void _start() 
{ 
    String Path = "C:\\Dokumente und Einstellungen\\andjock\\Desktop\\ab"; 

    File ftpDirectory = new File(Path); 
    ftpDirectory.mkdirs(); 


    FtpServerFactory serverFactory = new FtpServerFactory(); 
    ListenerFactory factory = new ListenerFactory(); 
    factory.setPort(2221); 

    try { 
     serverFactory.addListener("default", factory.createListener()); 

     PropertiesUserManagerFactory userFactory = new PropertiesUserManagerFactory(); 
     File userFile = new File("C:\\Dokumente und Einstellungen\\andjock\\Desktop\\ftpusers.properties"); 
     userFactory.setFile(userFile); 


     UserManager um = userFactory.createUserManager(); 


     BaseUser user = new BaseUser(); 
     user.setName("myNewUser"); 
     user.setPassword("secret"); 
     user.setHomeDirectory(Path); 


     um.save(user); 

     serverFactory.setUserManager(um); 

     FtpServer ftpServer = serverFactory.createServer(); 
     ftpServer.start(); 


    } catch (Exception e) { 

     Logger LOGGER = Logger.getLogger(TestapacheFtpServer.class); 
     LOGGER.log(Level.FATAL, "Unable to start test ftpserver", e); 
    } 

我怎麼知道該服務器真正的工作?

如何從「外部」訪問此apache服務器?

我試着與我的機器上的telnet和ftp(FTP 127.0.0.1),但我收到:

FTP:連接:未知的錯誤代碼

不會有人有任何想法?我只是不想依靠jvm日誌,而是測試它,並使其開始它

回答

2

我想出來了!我使用FTP客戶端庫(apache commons庫)編寫了一個客戶端來測試連接性並列出文件;類似的東西

FTPClient ftp = new FTPClient(); 


    ftp.connect(InetAddress.getLocalHost(), 2221);// or "localhost" in your case 
     String loging_success = ftp.login("myNewUser", "secret") == true ? "success" : "failed"; 
     System.out.println("login: "+ loging_success); 


     FTPFile[] files = ftp.listFiles(); 
     System.out.println("Listed "+files.length+" files."); 
     for(FTPFile file : files) { 
     System.out.println(file.getName()); 
     }