[jcifs] Problem with pre-auth

Ashok.Chindam at barclayscapital.com Ashok.Chindam at barclayscapital.com
Tue Aug 21 06:21:26 GMT 2007


Hi 

I am using jcifs 1.2.13 and using pre-auth to support our win2k3 Active
Directory systems. It is now working with win2k3 AD servers but this
introduced a new problem to us.

My filter configuration is provided below. If one of our AD servers goes
down, the whole system becomes unavailable because my SYSTEM_MAIN_USER
authentication keep timing out. I am assuming that JCIFS somehow caching
the IP address of AD server and keep trying to connect the same server,
even if it times out. Following error was found in logs continuously. I
guess one of our AD servers which jcifs had in cache went down and jcifs
still trying to connect the same. Once we restart our App server,
problem disappeared.

Tried to read the source codes and found that
Jcifs.util.transport.Transport class's sendrecv() method not
disconnecting the connection when it times out. I could be wrong, as I
haven't' read all the codes thoroughly, but I  guess it is trying to use
the same AD server (IP, not alias name) even for next user.

Appreciate help on it.

==================== FILTER CONFIG=====================

<filter>
		<filter-name>NtlmHttpFilter</filter-name>
		<filter-class>jcifs.http.NtlmHttpFilter</filter-class>
        <init-param>
            <param-name>jcifs.http.domainController</param-name>
            <param-value>ALIAS NAME FOR FEW A.D.SERVERS</param-value>

        </init-param>
        <init-param>
            <param-name>jcifs.smb.client.domain</param-name>
            <param-value>OUR_DOMAIN</param-value>
        </init-param>
        <init-param>
            <param-name>jcifs.smb.client.username</param-name>
            <param-value>SYSTEM_MAIN_USER</param-value>
        </init-param>
        <init-param>
            <param-name>jcifs.smb.client.password</param-name>
            <param-value>PASSWORD_OF_USER</param-value>
        </init-param>
        <init-param>
            <param-name>jcifs.util.loglevel</param-name>
            <param-value>2</param-value>
        </init-param>
    </filter>


==================== EXCEPTION LOG=====================
jcifs.smb.SmbException: 
jcifs.util.transport.TransportException: Transport2 timedout waiting for
response to
SmbComSessionSetupAndX[command=SMB_COM_SESSION_SETUP_ANDX,received=false
,errorCode=0,flags=0x0018,flags2=0xC007,signSeq=0,tid=0,pid=11134,uid=0,
mid=173,wordCount=13,byteCount=137,andxCommand=0x75,andxOffset=198,snd_b
uf_size=16644,maxMpxCount=10,VC_NUMBER=1,sessionKey=0,passwordLength=24,
unicodePasswordLength=24,capabilities=4180,accountName=SYSTEM_MAIN_USER,
primaryDomain=OUR_MAIN_DOMAIN,NATIVE_OS=Windows
2003,NATIVE_LANMAN=jCIFS]
	at jcifs.util.transport.Transport.sendrecv(Transport.java:76)
	at jcifs.smb.SmbTransport.send(SmbTransport.java:606)
	at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:277)
	at jcifs.smb.SmbSession.send(SmbSession.java:233)
	at jcifs.smb.SmbTree.treeConnect(SmbTree.java:154)
	at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:270)
	at jcifs.smb.SmbSession.send(SmbSession.java:233)
	at jcifs.smb.SmbTree.treeConnect(SmbTree.java:154)
	at jcifs.smb.SmbSession.logon(SmbSession.java:169)
	at jcifs.smb.SmbSession.logon(SmbSession.java:162)
	at jcifs.http.NtlmHttpFilter.negotiate(NtlmHttpFilter.java:182)
	at jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:114)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:186)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:157)
	at
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.
java:118)
	at
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.j
ava:52)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:186)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:157)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:214)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
textValve.java:198)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:144)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:137)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:118)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:102)
	at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535
)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:102)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:109)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
9)
	at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
onnection(Http11Protocol.java:705)
	at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
7)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:683)
	at java.lang.Thread.run(Thread.java:534)

	at jcifs.smb.SmbTransport.send(SmbTransport.java:611)
	at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:277)
	at jcifs.smb.SmbSession.send(SmbSession.java:233)
	at jcifs.smb.SmbTree.treeConnect(SmbTree.java:154)
	at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:270)
	at jcifs.smb.SmbSession.send(SmbSession.java:233)
	at jcifs.smb.SmbTree.treeConnect(SmbTree.java:154)
	at jcifs.smb.SmbSession.logon(SmbSession.java:169)
	at jcifs.smb.SmbSession.logon(SmbSession.java:162)
	at jcifs.http.NtlmHttpFilter.negotiate(NtlmHttpFilter.java:182)
	at jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:114)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:186)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:157)
	at
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.
java:118)
	at
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.j
ava:52)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:186)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:157)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:214)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
textValve.java:198)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:144)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:137)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:118)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:102)
	at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535
)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:102)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:109)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
9)
	at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
onnection(Http11Protocol.java:705)
	at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
7)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:683)
	at java.lang.Thread.run(Thread.java:534)


After few of these exceptions, it started printing the below
continously.

jcifs.smb.SmbException: 
jcifs.util.transport.TransportException
java.net.SocketException: Connection reset by peer: socket write error
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
	at
java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:263)
	at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:299)
	at jcifs.util.transport.Transport.run(Transport.java:240)
	at java.lang.Thread.run(Thread.java:534)

	at jcifs.util.transport.Transport.run(Transport.java:256)
	at java.lang.Thread.run(Thread.java:534)

	at jcifs.smb.SmbTransport.connect(SmbTransport.java:289)
	at jcifs.smb.SmbSession.getChallenge(SmbSession.java:146)
	at jcifs.smb.SmbSession.getChallenge(SmbSession.java:140)
	at jcifs.http.NtlmHttpFilter.negotiate(NtlmHttpFilter.java:157)
	at jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:114)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:186)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:157)
	at
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.
java:118)
	at
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.j
ava:52)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:186)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:157)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:214)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
textValve.java:198)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:144)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:137)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:118)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:102)
	at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535
)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:102)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:109)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntext.java:104)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
9)
	at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
onnection(Http11Protocol.java:705)
	at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
7)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:683)
	at java.lang.Thread.run(Thread.java:534)

2007-08-20 18:04:06 Invalid state: 4


Thanks and regards,
Ashok Chindam
IT AP - Corporate Systems, Barclays Capital
Direct: +65 6828 4219 | Fax : +65 6828 5922


------------------------------------------------------------------------
For important statutory and regulatory disclosures and more information about Barclays Capital, please visit our web site at http://www.barcap.com.

Internet communications are not secure and therefore the Barclays Group does not accept legal responsibility for the contents of this message.  Although the Barclays Group operates anti-virus programmes, it does not accept responsibility for any damage whatsoever that is caused by viruses being passed.  Any views or opinions presented are solely those of the author and do not necessarily represent those of the Barclays Group.  Replies to this email may be monitored by the Barclays Group for operational or business reasons.

Barclays Capital is the investment banking division of Barclays Bank PLC, a company registered in England (number 1026167) with its registered office at 1 Churchill Place, London, E14 5HP. This email may relate to or be sent from other members of the Barclays Group.
------------------------------------------------------------------------


More information about the jcifs mailing list