Re: java socket not closing
Nathan Bryant <[email protected]> Tue, 22 Mar 2005 15:18:44 -0500
| Newsgroups | gmane.comp.java.linux.general |
|---|---|
| Message-ID | <[email protected]> |
Remember that a socket isn't closed until both stream directions are shut down. It kinda looks like the remote end has either become unreachable or isn't implementing TCP active close properly. You're sending data which it is not ACKing, and it's not sending an RST either. It may be stuck for some reason, and not calling read(). Does JavaMail provide a way to enable keepalive on its sockets? That might help. Joseph Shraibman wrote: > I have a connection to a mail server that was closed from the other > end, but my local jvm is still hanging on to the socket (for like 6 or > 7 hours): > > Proto Recv-Q Send-Q Local Address Foreign Address State > tcp 1 11796 p5b.selectacast.n:45221 213.38.169.138:smtp > CLOSE_WAIT > > "MsgSender sending via mail.leebaron.com [213.38.169.138]" prio=1 > tid=0x79f74000 nid=0x3ab0 runnable [825b1000..825b1cd8] > at java.net.SocketOutputStream.socketWrite0(Native Method) > at > java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) > at java.net.SocketOutputStream.write(SocketOutputStream.java:136) > at > com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:83) > at > java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:66) > at > java.io.BufferedOutputStream.write(BufferedOutputStream.java:79) > - locked <0x4b188b20> (a java.io.BufferedOutputStream) > at > com.sun.mail.util.CRLFOutputStream.write(CRLFOutputStream.java:41) > at > com.sun.mail.smtp.SMTPOutputStream.write(SMTPOutputStream.java:36) > at > com.sun.mail.util.QPEncoderStream.output(QPEncoderStream.java:162) > at > com.sun.mail.util.QPEncoderStream.write(QPEncoderStream.java:109) > at > com.sun.mail.util.QPEncoderStream.write(QPEncoderStream.java:64) > at > sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336) > at > sun.nio.cs.StreamEncoder$CharsetSE.implWrite(StreamEncoder.java:395) > at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:136) > - locked <0x4b18abd8> (a java.io.OutputStreamWriter) > at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:146) > at java.io.OutputStreamWriter.write(OutputStreamWriter.java:204) > at com.sun.mail.handlers.text_plain.writeTo(text_plain.java:126) > at > javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:839) > at javax.activation.DataHandler.writeTo(DataHandler.java:295) > at > javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1201) > at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1611) > at > com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:493) > - locked <0x4b18abf0> (a com.sun.mail.smtp.SMTPTransport) > > > So how do I get around this problem? > > > ---------------------------------------------------------------------- > To UNSUBSCRIBE, email to [email protected] > with a subject of "unsubscribe". Trouble? Contact [email protected] ---------------------------------------------------------------------- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]