簡體   English   中英

JCIFS SMB在本地tomcat服務器而非遠程服務器上創建文件夾

[英]JCIFS SMB is creating folder on local tomcat server and not remote server

我正在使用JCIFS在Windows遠程共享目錄上創建目錄。 它不會使身份驗證失敗,而是繼續調用mkdir()方法。 但是,文件夾是在Tomcat安裝文件夾的根目錄而不是Windows共享目錄的linux文件系統上創建的。 沒有得到任何例外。

我正在使用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);
    }
}

...

我終於找到了問題所在。 我將整個Tomcat服務器環境設置在Windows平台而不是Linux上,以查看是否會有更好的運氣。 事實證明,我在其中一個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環境,做了同樣的事情,並且在那兒也能正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM