From: Tom T. <tom...@se...> - 2006-01-04 17:40:23
|
Hello, I am in the process of porting an application over from using jzkit 1.2.4 to jzkit2 2.0.1. Most everything works, but I am getting a SocketException when I close down the Searchable object (in my case the Z3950Origin). I can reproduce the problem by adding "s.close();" as the last line of the testLOC() method of your Z3950Test.java test case. ============= for ( int i=0; ( ( e.hasMoreElements() ) && ( i < 60 ) ); i++) { System.err.println("Processing result "+i); Object o = e.nextElement(); System.err.println(o); } s.close(); ============== The close is required to shutdown the search thread, unless I'm missing something. If I remove it like you have in your test case, then I get a bunch of threads lying around. Below is the log. It looks like a close is encoded and sent, but the socket is closed before the response can be read. Jan 4, 2006 9:29:46 AM org.jzkit.search.provider.z3950.Z3950Origin close FINE: Z3950Origin::close() Jan 4, 2006 9:29:46 AM org.jzkit.z3950.util.ZEndpoint shutdown FINE: ZEndpoint::shutdown() - host=z3950.loc.gov status=2 running=true Jan 4, 2006 9:29:46 AM org.jzkit.z3950.util.ZEndpoint encodeAndSend FINE: encodeAndSend... Jan 4, 2006 9:29:46 AM org.jzkit.z3950.util.ZEndpoint run SEVERE: problem java.net.SocketException: socket closed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:183) at java.io.BufferedInputStream.read(BufferedInputStream.java:201) at org.jzkit.a2j.codec.runtime.BERInputStream.read(BERInputStream.java:661) at org.jzkit.a2j.codec.runtime.BERInputStream.decodeNextTag(BERInputStream.java:155) at org.jzkit.a2j.codec.runtime.BERInputStream.tag_codec(BERInputStream.java:126) at org.jzkit.a2j.codec.runtime.BERInputStream.constructedBegin(BERInputStream.java:541) at org.jzkit.a2j.codec.runtime.BERInputStream.sequenceBegin(BERInputStream.java:525) at org.jzkit.z3950.gen.v3.Z39_50_APDU_1995.InitializeRequest_codec.serialize(InitializeRequest_codec.java:52) at org.jzkit.a2j.codec.runtime.BERInputStream.implicit_tag(BERInputStream.java:612) at org.jzkit.a2j.codec.runtime.BERInputStream.choice(BERInputStream.java:488) at org.jzkit.z3950.gen.v3.Z39_50_APDU_1995.PDU_codec.serialize(PDU_codec.java:65) at org.jzkit.z3950.util.ZEndpoint.run(ZEndpoint.java:666) Jan 4, 2006 9:29:46 AM org.jzkit.z3950.util.ZEndpoint run INFO: SocketException Jan 4, 2006 9:29:46 AM org.jzkit.z3950.util.ZEndpoint run INFO: java.net.SocketException: socket closed - hostname=z3950.loc.gov Jan 4, 2006 9:29:46 AM org.jzkit.z3950.util.ZEndpoint notifyAPDUEvent FINE: notifyAPDUEvent : 22 Jan 4, 2006 9:29:46 AM org.jzkit.z3950.util.ZEndpoint notifyAPDUEvent FINE: Incoming PDU refid: null Jan 4, 2006 9:29:46 AM org.jzkit.z3950.util.ZEndpoint run FINE: End of ZEndpoint listening thread for host z3950.loc.gov active z thread counter=0 Thanks for looking into this, -- Tom Talbott Serials Solutions <http://www.serialssolutions.com> tom...@se... 206-545-9056 x1081 |