Hi all,

I suggest a small improvement in order to better integrate mina sshd (sftp part in my case) into a JEE environment allowing to provide the ThreadFactory. In JEE application container, ThreadFactory are managed by the server and it's better, in my opinion, to allow SftpSubsystem to use the ManagedThreadFactory of the server.

In my case, I create the sshd daemon in a Singleton EJB Bean and I'd like to be able to provide the ThreadFactory managed by the application server and injected in my bean. To do that I need to override the wall SftpSubsystem to allow a custom ThreadFactory :

public class MySftpSubsystem extends SftpSubsystem {

    protected final Logger log = LoggerFactory.getLogger(getClass());
    private Environment env;
    private ThreadFactory factory;

    public static class Factory implements NamedFactory<Command> {

        private ThreadFactory threadFactory;

        public Factory(ThreadFactory threadFactory) {
            this.threadFactory = threadFactory;
        }

        public Command create() {
            MySftpSubsystem dsftp = new MySftpSubsystem();
            dsftp.setThreadFactory(threadFactory);
            return dsftp;
        }

        public String getName() {
            return "sftp";
        }
    }

    public void setThreadFactory(ThreadFactory factory) {
        this.factory = factory;
    }

    @Override
    public void start(Environment env) throws IOException {
        this.env = env;
        factory.newThread(this).start();
    }

}


It's a very small improvement but, I think, fullfill with the JEE application server components.

Best regards, Jérôme Blanchard.

Reply via email to