I have an MDB which receives remote location of file. I need to download that file from remote linux server to local file server. I am planning to use J2SSH library. Following are my options/thoughts:
1. Create SSHClient object at MDB startup. So there is one SSHClient (SSH Connection) per MDB. On every onMessage() method, i will open sftpChannel, download file and quit channel. On MDB shutdown i will disconnect sshclient. Now question is with increased load, number of SSH Connections will increase. Is it a good approach ??
2. Create a singleton class at startup which will create SSHClient. On every onMessage() method, I will get SSHClient from Singleton class and use it to create sftpChannel. Now i have only one ssh connection and using across all MDBs. How will it scale with increased load?
3. Create an Mbean which creates SSHClient on startup. On every onMessage() method, i will call mBean method which open sftpChannel and downloads file. Since mBean is single threaded then i can close / reconnect ssh client after n files download or reconnect in case of connection failure. I do not have to deal with multi threaded program. But i am thinking it may affect performance ?
Please share your thoughts on using j2SSH library?