[英]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.