【问题标题】:JCIFS SMB is creating folder on local tomcat server and not remote serverJCIFS SMB 在本地 tomcat 服务器而不是远程服务器上创建文件夹
【发布时间】:2019-07-15 18:19:45
【问题描述】:

我正在使用 JCIFS 在 Windows 远程共享目录上创建一个目录。它不会失败验证,并继续调用 mkdir() 方法。但是,文件夹是在 linux 文件系统上创建的,位于 tomcat 安装目录的根目录,而不是在 Windows 共享目录中。没有任何异常。

我使用的是 JCIFS SMB 1.3.19 版。 Java 应用程序是一个 servlet,使用 Tomcat 在 linux 机器上运行。在进行 SMB 调用时,如代码块所示,应用程序会创建请求的目录,但它是在 Tomcat 安装目录的根目录下创建的。我在调用 mkdir() 方法之前使用了 NtlmPasswordAuthentication 。

public void create() {
    try {
        String smbUrl = String.format("smb://WIN-2016-AD-DNS/profiles/" + userName);
        LOGGER.info("smbUrl = " + smbUrl);

        NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(domain, "jdoe", "password");
        SmbFile dir = new SmbFile(smbUrl, auth);
        if (dir.isDirectory()) {
            LOGGER.info("Directory already exists");
        } else {
            try {
                dir.mkdir();
                LOGGER.info("Successfully created folder on share");
            } catch (Exception e) {
                logExceptionError("Failed to create Directory with SMB mkdir", e, 0);
            }
        }
    } catch (Exception e) {
        logExceptionError("Failed to create Directory with SMB", e, 0);
    }
}

...

【问题讨论】:

    标签: java jcifs


    【解决方案1】:

    我终于找到了问题所在。我在 Windows 平台而不是 Linux 上设置了我的整个 Tomcat 服务器环境,看看我是否会有更好的运气。事实证明,我在其中一个 Tomcat 日志中找到了一个条目...

    SEVERE [ajp-nio-8009-exec-10] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [ADuser] in context with path [] threw exception [Servlet execution threw an exception] with root cause
        java.lang.ClassNotFoundException: jcifs.smb.NtlmPasswordAuthentication
    

    我不知道为什么我的应用程序没有捕获到这个异常。所以我将 jcifs 库复制到 Tomcats 'lib' 文件夹,重新启动 Tomcat 并且它工作。我回到 Linux 环境并做了同样的事情,它也在那里工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      相关资源
      最近更新 更多