【问题标题】:How to override getVirtualUserDir() in Apache Mina sshd-core version 0.14.0如何在 Apache Mina sshd-core 版本 0.14.0 中覆盖 getVirtualUserDir()
【发布时间】:2015-04-22 15:27:31
【问题描述】:

我使用 Apache Mina sshd-core 版本 0.10.0。由于文件上传的一些问题,我不得不将版本更改为 0.14.0。在那里我无法覆盖 getVirtualUserDir() 方法。下面是我的示例代码,

sshd.setFileSystemFactory(new NativeFileSystemFactory() {
        @Override
        public FileSystemView createFileSystemView(final Session session) {
            return new NativeFileSystemView(session.getUsername(), false) {
                @Override
                public String getVirtualUserDir() {

                    return "C:/root";
                }
            };
        };
    });

我想知道如何在 Apache Mina sshd-core 版本 0.14.0 中克服这个问题。谢谢。

【问题讨论】:

    标签: java sftp apache-mina


    【解决方案1】:

    Mina SSHD 0.10.0 中getVirtualUserDir 的目的是设置文件系统的初始目录。

    在 Mina SSHD 0.14.0 中,current 构造函数的 current 参数可以达到相同的目的:

    public NativeFileSystemView(String userName, Map<String, String> roots, String current)
    

    请注意,文档声称不直接调用构造函数,而是使用NativeFileSystemFactory。但是NativeFileSystemFactory 从不调用构造函数的重载。要么评论已经过时,要么工厂还没有完成。

    或者它是一个错字,它实际上应该提到VirtualFileSystemFactory。您可能应该使用什么工厂而不是覆盖NativeFileSystemFactory

    sshd.setFileSystemFactory(new VirtualFileSystemFactory("C:/root"));
    

    【讨论】:

    • 你节省了我的时间,伙计。
    猜你喜欢
    • 2015-09-02
    • 2019-05-27
    • 2015-07-01
    • 1970-01-01
    • 2020-11-14
    • 2017-02-09
    • 2023-02-13
    • 2016-04-11
    • 1970-01-01
    相关资源
    最近更新 更多