java - 为什么升级到 Windows 2012 后我的 samba 连接会失败?

标签 java windows windows-server-2008-r2 windows-server-2012 samba

我有一个运行在 Tomcat 6.0.26 (windows server 2008 r2 sp1) 上的 JSP,它有一个 samba (jcifs-1.3.17.jar) 连接来列出在远程服务器上找到的文件。

在 AD Controller 更新到 Windows 2012(完全修补)之前,这没有任何问题。

现在,我无法再列出 Samba 共享上的文件。

SmbFile sfFile = new SmbFile("smb://myserver.com/share/", "subfolder", new NtlmPasswordAuthentication("MYDOM", session.getAttribute("UserID").toString(), session.getAttribute("UserCode").toString()));
SmbFile[] asfDirectoryList = sfFile.listFiles("webversion" + session.getAttribute("PLCode").toString().substring(0,3) + "*.xls");

第二行返回以下异常:

    org.apache.jasper.JasperException: jcifs.smb.SmbException: The network name cannot be found.
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:407)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause 

    jcifs.smb.SmbException: The network name cannot be found.
    jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:563)
    jcifs.smb.SmbTransport.send(SmbTransport.java:663)
    jcifs.smb.SmbSession.send(SmbSession.java:238)
    jcifs.smb.SmbTree.treeConnect(SmbTree.java:176)
    jcifs.smb.SmbFile.doConnect(SmbFile.java:911)
    jcifs.smb.SmbFile.connect(SmbFile.java:954)
    jcifs.smb.SmbFile.connect0(SmbFile.java:880)
    jcifs.smb.SmbFile.resolveDfs(SmbFile.java:669)
    jcifs.smb.SmbFile.send(SmbFile.java:773)
    jcifs.smb.SmbFile.doFindFirstNext(SmbFile.java:1986)
    jcifs.smb.SmbFile.doEnum(SmbFile.java:1738)
    jcifs.smb.SmbFile.listFiles(SmbFile.java:1715)
    jcifs.smb.SmbFile.listFiles(SmbFile.java:1681)
    org.apache.jsp.financials.frFinancialsFileListing_jsp._jspService(frFinancialsFileListing_jsp.java:220)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

有谁知道为什么会发生这种情况以及如何解决它?

[编辑] 谜团:将 AD Controller 更新到 Windows 2012 应该不会影响网络服务器访问文件服务器上的共享(两者都运行 Windows 2008 r2 sp1)。我就是无法理解。

最佳答案

默认情况下,Windows Server 2012 R2 已禁用 SMB 1.0。因此您需要在 Windows Server 2012 R2 中再次激活 SMB 1.0。

  1. 打开 Windows 的添加角色和功能向导,检查SMB 1.0/CIFS 文件共享支持是否激活: enter image description here
  2. 通过打开注册表编辑器启用 SMB 1.0 支持。转到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer 并将 DependOnService 的值从 SamSS Srv2 更改为 SamSS Srv enter image description here
  3. 重新启动 Windows

您可以通过检查系统服务 Server (LanmanServer) 的属性来验证支持是否已激活,在选项卡 Dependencies 中 SMB 1.xxx 也已激活: enter image description here

来源:http://woshub.com/smb-1-0-support-in-windows-server-2012-r2/#!prettyPhoto

关于java - 为什么升级到 Windows 2012 后我的 samba 连接会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18412178/

相关文章:

sql-server - SSIS 包在一台服务器上的运行时间延长了 500 倍

java - 通过 Web 服务调用的事务选项

c# - Socket.Close 并没有真正关闭 tcp 套接字? (C#)

java - 无法在 Windows 10 上设置 Apache Spark 2.1.1

c# - 字符串结果到多行文本框

Powershell DSC xWebsite 失败

.net - 使用 NGEN 更新 RemoteAPP 应用程序的正确方法

java - 如何从json(url)解析数据并将数据发送到url

java - 将带有偏移字符串的日期时间解析为 LocalDateTime

Java:如何将 Instant 类型转换为 XMLGregorianCalendar 类型?