[jcifs] Timeout while reading a directory or file

Donato Marro marro at e-spirit.de
Tue Jul 13 12:32:53 GMT 2004


Hi,

i wrote this simple application to test the access to a share
by using the jcfis-classes:

public class NpaTest {

	public static void main(String[] args) {
		NtlmPasswordAuthentication ntlm = new NtlmPasswordAuthentication("myDomain", args[0], args[1]);
		try {
			SmbFile directory = null;
			SmbFile[] content = null;
			System.out.println("Press enter to read the directory");
			int c = 0;
			while ((c = System.in.read()) != -1) {
				if (c == '\r') {
					try {
						System.out.print("Reading directory... ");
						directory = new SmbFile("smb:" + args[2] + "/", ntlm);
						content = directory.listFiles();
						System.out.println("ok!");
					}
					catch(Exception e) {
						System.out.println("failed!");
						e.printStackTrace();
						ntlm = new NtlmPasswordAuthentication("myDomain", args[0], args[1]);
					}
				}
			}
		}
		catch(IOException ioe) {
			System.out.println("failed!");
			ioe.printStackTrace();
		}
	}
}


Now i've got the following output:

D:\>java NpaTest myUsername myPass //server/share
Press enter to read the directory

Reading directory... ok!

Reading directory... ok!

Reading directory... ok!

Reading directory... ok!

(and so on for 30 seconds...)

Reading directory... failed!
jcifs.smb.SmbException: An error occured sending the request.
java.net.ConnectException: Connection timed out: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at jcifs.netbios.NbtSocket.<init>(NbtSocket.java:59)
        at jcifs.smb.SmbTransport.ensureOpen(SmbTransport.java:275)
        at jcifs.smb.SmbTransport.send(SmbTransport.java:602)
        at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:847)
        at jcifs.smb.SmbTree.treeConnect(SmbTree.java:119)
        at jcifs.smb.SmbFile.connect(SmbFile.java:790)
        at jcifs.smb.SmbFile.connect0(SmbFile.java:760)
        at jcifs.smb.SmbFile.sendTransaction(SmbFile.java:630)
        at jcifs.smb.SmbFile.doFindFirstNext(SmbFile.java:1661)
        at jcifs.smb.SmbFile.listFiles(SmbFile.java:1553)
        at jcifs.smb.SmbFile.listFiles(SmbFile.java:1461)
        at NpaTest.main(NpaTest.java:22)

        at jcifs.smb.SmbTransport.send(SmbTransport.java:633)
        at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:847)
        at jcifs.smb.SmbTree.treeConnect(SmbTree.java:119)
        at jcifs.smb.SmbFile.connect(SmbFile.java:790)
        at jcifs.smb.SmbFile.connect0(SmbFile.java:760)
        at jcifs.smb.SmbFile.sendTransaction(SmbFile.java:630)
        at jcifs.smb.SmbFile.doFindFirstNext(SmbFile.java:1661)
        at jcifs.smb.SmbFile.listFiles(SmbFile.java:1553)
        at jcifs.smb.SmbFile.listFiles(SmbFile.java:1461)
        at NpaTest.main(NpaTest.java:22)

Reading directory... failed!
jcifs.smb.SmbException: An error occured sending the request.
java.net.ConnectException: Connection timed out: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at jcifs.netbios.NbtSocket.<init>(NbtSocket.java:59)
        at jcifs.smb.SmbTransport.ensureOpen(SmbTransport.java:275)
        at jcifs.smb.SmbTransport.send(SmbTransport.java:602)
        at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:847)
        at jcifs.smb.SmbTree.treeConnect(SmbTree.java:119)
        at jcifs.smb.SmbFile.connect(SmbFile.java:790)
        at jcifs.smb.SmbFile.connect0(SmbFile.java:760)
        at jcifs.smb.SmbFile.sendTransaction(SmbFile.java:630)
        at jcifs.smb.SmbFile.doFindFirstNext(SmbFile.java:1661)
        at jcifs.smb.SmbFile.listFiles(SmbFile.java:1553)
        at jcifs.smb.SmbFile.listFiles(SmbFile.java:1461)
        at NpaTest.main(NpaTest.java:22)

        at jcifs.smb.SmbTransport.send(SmbTransport.java:633)
        at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:847)
        at jcifs.smb.SmbTree.treeConnect(SmbTree.java:119)
        at jcifs.smb.SmbFile.connect(SmbFile.java:790)
        at jcifs.smb.SmbFile.connect0(SmbFile.java:760)
        at jcifs.smb.SmbFile.sendTransaction(SmbFile.java:630)
        at jcifs.smb.SmbFile.doFindFirstNext(SmbFile.java:1661)
        at jcifs.smb.SmbFile.listFiles(SmbFile.java:1553)
        at jcifs.smb.SmbFile.listFiles(SmbFile.java:1461)
        at NpaTest.main(NpaTest.java:22)

(and so on... until restarting the application)


The exception is always thrown after 30 seconds. But the strange
thing is that i get it only on one of our servers. Running the
application with another server as argument does fine. Only one
server causes this timeout-exception.

Anyone an idea on how to avoid this exception or what exactly causes
this problem?

I'm using Jcifs 0.9.4

Greets,
Donato Marro



More information about the jcifs mailing list