gpt4 book ai didi

java - JCIFS jcifs.smb.SmbException : A device attached to the system is not functioning

转载 作者:行者123 更新时间:2023-12-02 11:51:06 36 4
gpt4 key购买 nike

我们使用 JCIFS (1.3.17) 从 Windows 2003 文件服务器加载图像文件。不幸的是,加载到 16384 个文件后停止工作,并且在尝试访问更多文件时出现以下异常:

jcifs.smb.SmbException: A device attached to the system is not functioning.
at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:563) ~[jcifs-1.3.17.jar:na]
at jcifs.smb.SmbTransport.send(SmbTransport.java:663) ~[jcifs-1.3.17.jar:na]
at jcifs.smb.SmbSession.send(SmbSession.java:238) ~[jcifs-1.3.17.jar:na]
at jcifs.smb.SmbTree.send(SmbTree.java:119) ~[jcifs-1.3.17.jar:na]
at jcifs.smb.SmbFile.send(SmbFile.java:775) ~[jcifs-1.3.17.jar:na]
at jcifs.smb.SmbFile.open0(SmbFile.java:989) ~[jcifs-1.3.17.jar:na]
at jcifs.smb.SmbFile.open(SmbFile.java:1006) ~[jcifs-1.3.17.jar:na]
at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:73) ~[jcifs-1.3.17.jar:na]
at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:65) ~[jcifs-1.3.17.jar:na]
at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2844) ~[jcifs-1.3.17.jar:na]

JCIFS 中似乎存在某种限制或设置导致此问题。

这是一些重现问题的测试代码:

    for (int i = 0; i < 20000; i++) {
try {
SmbFile smbFile = new SmbFile("smb://fileserver/share/image.jpg", auth);
byte[] data = IOUtils.toByteArray(smbFile.getInputStream());
System.out.println(smbFile.getPath() + " " + data.length);
} catch (SmbException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

我们已经检查了文件服务器上的错误日志,但没有看到任何内容,因此我们假设我们做错了什么,或者 JCIFS 中有一些我们必须正确配置的内容。

最佳答案

可能找到了解决方案:看起来每个 session 只能通过 new SmbFile() 打开 16384 个文件。您必须调用SmbFileInputStream.close(),它调用包私有(private)SmbFile.close(),它似乎向服务器发送一条SmbComClose消息,该消息关闭请求并释放资源。

关于java - JCIFS jcifs.smb.SmbException : A device attached to the system is not functioning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17942832/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com