簡體   English   中英

java.nio.channels.ClosedChannelException-客戶端關閉SSL

[英]java.nio.channels.ClosedChannelException -Client shuts down SSL

嗨,

我有一台計算機上的glassfish3.1服務器上運行着一個Web服務。

在第二台計算機上,我有一個Java(GUI)應用程序正在運行並調用上述Web服務。

在我的網絡服務呼叫中,我將文件作為SOAP附件發送。 它到達服務器,然后處理文件,然后通過https將其返回給我的客戶端計算機。

如果我的文件太大,並且花費了15分鍾以上,則操作失敗,並且出現以下錯誤:

在客戶端: 由於出現異常而無法創建SOAP消息:org.jvnet.mimepull.MIMEParsingException:javax.net.ssl.SSLException:SSL對等錯誤關閉

在服務器端: org.glassfish.webservices.JAXWSServlet.doPost(JAXWSServlet.java:150)處的javax.servlet.ServletException,javax.servlet.http處的javax.servlet.http.HttpServlet.service(HttpServlet.java:755)處。 org的org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)的HttpServlet.service(HttpServlet.java:848)org的org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)處的.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline) com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)上的com.sun.enterprise.web.Web.PEP.line.invoke(PESessionLockingStandardPipeline.java:91)上的com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)。位於org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)的core.StandardHostValve.invoke(StandardHostValve.java:162) rg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)位於com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)位於com.sun.grizzly.http。 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)(位於com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013))上的ProcessorTask.invokeAdapter(ProcessorTask.java:822) .com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)位於com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)位於com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) )的com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)的com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)的com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask。 com.sun.grizzly.SelectionKeyContextTask.call(java:59)(com.sun.grizzly.ContextTask.run(java:59) com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:532)處的com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:513)處的textTask.java:71) .lang.Thread.run(Thread.java:662)原因:javax.xml.ws.WebServiceException:com.ctc.wstx.exc.WstxIOException:com.sun.xml.ws上的java.nio.channels.ClosedChannelException。 com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:282)處com.sun.xml.ws.transport.http.HttpAdapter.encodePacket()的encoding.MtomCodec.encode(MtomCodec.java:184) com.sun.xml.ws.transport.http.HttpAdapter.access $ 100(HttpAdapter.java:96)處的com.sun.xml.ws.transport.Http.HttpAdapter $ HttpToolkit.handle(HttpAdapter的HttpAdapter.java:400) .java:618)com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259)com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java) :162),位於org.glassfish.webservices.JAXWSServlet.doPost(JAXWSServlet.java:145)...還有27個原因:com.ctc.ws tx.exc.WstxIOException:com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:313)處com.sun.xml.ws.util.xml.XMLStreamWriterFilter.flush(XMLStreamWriterFilter)處的java.nio.channels.ClosedChannelException com.sun.xml.ws.streaming.XMLStreamWriterUtil.getOutputStream(XMLStreamWriterUtil.java:101)處的com.sun.xml.ws.message.jaxb.JAXBMe​​ssage.writePayloadTo(JAXBMe​​ssage.java:320)處的.java:71) com.sun.xml.ws.encoding.MtomCodec.encode(MtomCodec.java:168)處的com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:147)... 34更多原因:org .apache.catalina.connector.ClientAbortException:org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:382)處的org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java.nio.channels.ClosedChannelException java:351)位於org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:175)位於com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)位於com.ctc.wstx.sw .BufferingXmlWriter.flush(Buf com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:311)的feringXmlWriter.java:214)... 39更多原因於:sun.nio.ch.SocketChannelImpl.ensureWriteOpen處的java.nio.channels.ClosedChannelException (SocketChannelImpl.java:133),位於sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:324),位於com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:108),位於com.sun.grizzly。 com.sun.grizzly.util.SSLOutputWriter.flushChannel(SSLOutputWriter.java:102)處util.OutputWriter.flushChannel(OutputWriter.java:76)com.sun.grizzly.ssl.SSLOutputBuffer.flushChannel(SSLOutputBuffer.java:138)在com.sun.grizzly.http.SocketChannelOutputBuffer.flushBuffer(SocketChannelOutputBuffer.java:398)在com.sun.grizzly.http.SocketChannelOutputBuffer.flush(SocketChannelOutputBuffer.java:376)在com.sun.grizzly.http.ProcessorTask.action (com.sun.grizzly.ssl.SSLProcessorTask.action(SSLProcessorTask.java:164)處的(ProcessorTask.java:1241)在com.sun.grizzly.tcp.Response.action(Response.java:268)處 g.apache.catalina.connector.OutputBuffer.doFlush(輸出

...

我認為SSL會話在我的客戶端而不是服務器端超時。

現在,我正在嘗試找出增加客戶端SSL超時的方法,我認為這是15分鍾...

我無法執行此操作,我們將為您提供任何幫助...謝謝

我認為SSL會話在我的客戶端超時

否。您的客戶端未首先從服務器接收SSL close_notify便遇到了關閉(重置)連接。 所以不是客戶。 我猜想服務器強加了一個POST大小限制,並在超出限制時關閉連接。

如果發送的數據過多,您將在某處或其他地方遇到IOExceptions。 遵守或提高限制,然后遵守新的價值。

打開您的domain.xml並嘗試找出您使用的SSL版本。 如果看到類似以下內容的內容[ ssl3-enabled =“ false” ], 則為SSL2 ,其默認超時為100秒。

<ssl classname="com.sun.enterprise.security.ssl.GlassfishSSLImpl"  ssl3-enabled="false" cert-nickname="s1as"></ssl>

在這種情況下,您可以為ssl-session-timeout屬性設置更大的值[您可能需要添加此內容]

或者您可以選擇在默認情況下具有較大超時值的ssl上使用ssl3。

參考: http : //download.oracle.com/docs/cd/E19798-01/821-1753/abhaq/index.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM