2016-12-28 56 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'以延迟加载的方式工作,所以在启动时确实没有任何钩子来跟踪错误的连接选项。所以,你绝对应该提供自制机制,以便在需要确认时进行验证。那么,你的方法是很好的候选人。 –