2016-12-28 44 views
1

我使用下面的代碼創建ftpSessionfactory -春季FTP集成:如何驗證FTP會話?

@Bean 
@Lazy(false) 
public SessionFactory<FTPFile> ftpSessionFactory() { 
    DefaultFtpSessionFactory sf = new DefaultFtpSessionFactory(); 
    sf.setHost(server); 
    sf.setPort(port); 
    sf.setUsername(username); 
    sf.setPassword(password); 
    return new CachingSessionFactory<FTPFile>(sf); 
} 

和下面的方法來檢查,如果FTP會話是好的 -

private boolean isFTPSessionOK() { 
    try { 
     SessionFactory<FTPFile> ftpSessionFactory = ftpSessionFactory(); 
     boolean open = ftpSessionFactory.getSession().isOpen(); 
     System.out.println("Session is good ? "+ open); 
     return open; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return false; 
} 

是否有任何其他的方式,來驗證FTP會話,而不是寫愚蠢的方法?

感謝

回答

1

嗯,是的,你沒有,如果你使用CachingSessionFactory已經需要這種方法。

每一次執行ftpSessionFactory.getSession()抽象pool確保返回給你一個有效的,開放的實例。

+0

絕對正確。感謝您提供此功能。但是,如果遠程主機關閉,或者我們在創建CachingSessionFactory時傳遞錯誤的遠程主機,應用程序不會在日誌中報告任何錯誤,並且我們無法跟蹤應用程序是否正常工作。有沒有辦法在日誌中發現通知或錯誤,以防ftpSession出現問題?請指教。 – Sushil

+1

那麼,因爲'CachingSessionFactory'以延遲加載的方式工作,所以在啓動時確實沒有任何鉤子來跟蹤錯誤的連接選項。所以,你絕對應該提供自制機制,以便在需要確認時進行驗證。那麼,你的方法是很好的候選人。 –