2010-01-22 13 views
2

我們有一個應用程序接受上載文件,但會間歇性地拋出一個Socket關閉異常。[com.ctc.wstx.exc.WstxIOException:使用.NET WCF與WebLogic WebService進行互操作的套接字關閉異常

客戶端是使用WCF連接到WebLogic 10.3中的WebService並使用JAX-WS批註創建Web服務的.NET。

間歇性地,在上傳大文件時,我們收到Socket關閉的異常,並且在診斷問題時遇到了問題。

應用程序和用例信息: - 文件來自Excel,大約9k行 - 上傳完成後的數據庫插入通常需要7分鐘。去完成。無論何時需要更長的時間,我們都會看到這些錯誤。 - 基礎架構是:.NET客戶端 - > Linux上的WebLogic 10.3 - > Oracle - 我們無法弄清楚是什麼引發了錯誤。它是WebLogic服務器卡住的線程嗎?這是JAX-WS服務中缺少的註釋嗎?它是Linux(主機)?

我們有的問題是: - 是否需要配置Linux以允許長時間運行的請求? - JAX-WS是否有配置允許長時間運行的請求?

下面是一個完整的堆棧跟蹤:

Root cause of ServletException. 
javax.xml.ws.WebServiceException: javax.xml.bind.MarshalException 
- with linked exception: 
[com.ctc.wstx.exc.WstxIOException: Socket closed] 
    at com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:322) 
    at com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:142) 
    at com.sun.xml.ws.encoding.MtomCodec.encode(MtomCodec.java:158) 
    at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:258) 
    at com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:320) 
    at com.sun.xml.ws.transport.http.HttpAdapter.access$100(HttpAdapter.java:93) 
    at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:454) 
    at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244) 
    at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:134) 
    at weblogic.wsee.jaxws.HttpServletAdapter$AuthorizedInvoke.run(HttpServletAdapter.java:272) 
    at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:185) 
    at weblogic.wsee.jaxws.JAXWSServlet.doPost(JAXWSServlet.java:180) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at weblogic.wsee.jaxws.JAXWSServlet.service(JAXWSServlet.java:64) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at weblogicx.servlet.gzip.filter.GZIPFilter.doFilter(GZIPFilter.java:63) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(Unknown Source) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 
javax.xml.bind.MarshalException 
- with linked exception: 
[com.ctc.wstx.exc.WstxIOException: Socket closed] 
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:286) 
    at com.sun.xml.bind.v2.runtime.BridgeImpl.marshal(BridgeImpl.java:90) 
    at com.sun.xml.bind.api.Bridge.marshal(Bridge.java:107) 
    at com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:317) 
    at com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:142) 
    at com.sun.xml.ws.encoding.MtomCodec.encode(MtomCodec.java:158) 
    at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:258) 
    at com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:320) 
    at com.sun.xml.ws.transport.http.HttpAdapter.access$100(HttpAdapter.java:93) 
    at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:454) 
    at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244) 
    at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:134) 
    at weblogic.wsee.jaxws.HttpServletAdapter$AuthorizedInvoke.run(HttpServletAdapter.java:272) 
    at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:185) 
    at weblogic.wsee.jaxws.JAXWSServlet.doPost(JAXWSServlet.java:180) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at weblogic.wsee.jaxws.JAXWSServlet.service(JAXWSServlet.java:64) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at weblogicx.servlet.gzip.filter.GZIPFilter.doFilter(GZIPFilter.java:63) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(Unknown Source) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 
com.ctc.wstx.exc.WstxIOException: Socket closed 
    at com.ctc.wstx.sw.BaseNsStreamWriter.doWriteStartTag(BaseNsStreamWriter.java:579) 
    at com.ctc.wstx.sw.SimpleNsStreamWriter.writeStartOrEmpty(SimpleNsStreamWriter.java:273) 
    at com.ctc.wstx.sw.BaseNsStreamWriter.writeStartElement(BaseNsStreamWriter.java:319) 
    at com.sun.xml.ws.util.xml.XMLStreamWriterFilter.writeStartElement(XMLStreamWriterFilter.java:183) 
    at com.sun.xml.bind.v2.runtime.output.XMLStreamWriterOutput.beginStartTag(XMLStreamWriterOutput.java:113) 
    at com.sun.xml.bind.v2.runtime.output.XmlOutputAbstractImpl.beginStartTag(XmlOutputAbstractImpl.java:98) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.leafElement(XMLSerializer.java:319) 
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$StringImpl.writeLeafElement(RuntimeBuiltinLeafInfoImpl.java:158) 
    at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.writeLeafElement(TransducedAccessor.java:250) 
    at com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty.serializeBody(SingleElementLeafProperty.java:98) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681) 
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65) 
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168) 
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:152) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681) 
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65) 
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168) 
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:152) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681) 
    at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:150) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681) 
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:277) 
    at com.sun.xml.bind.v2.runtime.BridgeImpl.marshal(BridgeImpl.java:90) 
    at com.sun.xml.bind.api.Bridge.marshal(Bridge.java:107) 
    at com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:317) 
    at com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:142) 
    at com.sun.xml.ws.encoding.MtomCodec.encode(MtomCodec.java:158) 
    at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:258) 
    at com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:320) 
    at com.sun.xml.ws.transport.http.HttpAdapter.access$100(HttpAdapter.java:93) 
    at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:454) 
    at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244) 
    at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:134) 
    at weblogic.wsee.jaxws.HttpServletAdapter$AuthorizedInvoke.run(HttpServletAdapter.java:272) 
    at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:185) 
    at weblogic.wsee.jaxws.JAXWSServlet.doPost(JAXWSServlet.java:180) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at weblogic.wsee.jaxws.JAXWSServlet.service(JAXWSServlet.java:64) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at weblogicx.servlet.gzip.filter.GZIPFilter.doFilter(GZIPFilter.java:63) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(Unknown Source) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 
java.net.SocketException: Socket closed 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
    at weblogic.servlet.internal.ChunkOutput.writeChunkTransfer(ChunkOutput.java:525) 
    at weblogic.servlet.internal.ChunkOutput.writeChunks(ChunkOutput.java:504) 
    at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java:382) 
    at weblogic.servlet.internal.ChunkOutput.checkForFlush(ChunkOutput.java:469) 
    at weblogic.servlet.internal.ChunkOutput.write(ChunkOutput.java:304) 
    at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:139) 
    at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:169) 
    at com.ctc.wstx.io.UTF8Writer.write(UTF8Writer.java:139) 
    at com.ctc.wstx.sw.BufferingXmlWriter.flushBuffer(BufferingXmlWriter.java:1103) 
    at com.ctc.wstx.sw.BufferingXmlWriter.fastWriteRaw(BufferingXmlWriter.java:1149) 
    at com.ctc.wstx.sw.BufferingXmlWriter.writeStartTagStart(BufferingXmlWriter.java:697) 
    at com.ctc.wstx.sw.BaseNsStreamWriter.doWriteStartTag(BaseNsStreamWriter.java:576) 
    at com.ctc.wstx.sw.SimpleNsStreamWriter.writeStartOrEmpty(SimpleNsStreamWriter.java:273) 
    at com.ctc.wstx.sw.BaseNsStreamWriter.writeStartElement(BaseNsStreamWriter.java:319) 
    at com.sun.xml.ws.util.xml.XMLStreamWriterFilter.writeStartElement(XMLStreamWriterFilter.java:183) 
    at com.sun.xml.bind.v2.runtime.output.XMLStreamWriterOutput.beginStartTag(XMLStreamWriterOutput.java:113) 
    at com.sun.xml.bind.v2.runtime.output.XmlOutputAbstractImpl.beginStartTag(XmlOutputAbstractImpl.java:98) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.leafElement(XMLSerializer.java:319) 
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$StringImpl.writeLeafElement(RuntimeBuiltinLeafInfoImpl.java:158) 
    at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.writeLeafElement(TransducedAccessor.java:250) 
    at com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty.serializeBody(SingleElementLeafProperty.java:98) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681) 
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65) 
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168) 
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:152) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681) 
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65) 
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168) 
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:152) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681) 
    at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:150) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681) 
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:277) 
    at com.sun.xml.bind.v2.runtime.BridgeImpl.marshal(BridgeImpl.java:90) 
    at com.sun.xml.bind.api.Bridge.marshal(Bridge.java:107) 
    at com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:317) 
    at com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:142) 
    at com.sun.xml.ws.encoding.MtomCodec.encode(MtomCodec.java:158) 
    at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:258) 
    at com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:320) 
    at com.sun.xml.ws.transport.http.HttpAdapter.access$100(HttpAdapter.java:93) 
    at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:454) 
    at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244) 
    at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:134) 
    at weblogic.wsee.jaxws.HttpServletAdapter$AuthorizedInvoke.run(HttpServletAdapter.java:272) 
    at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:185) 
    at weblogic.wsee.jaxws.JAXWSServlet.doPost(JAXWSServlet.java:180) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at weblogic.wsee.jaxws.JAXWSServlet.service(JAXWSServlet.java:64) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at weblogicx.servlet.gzip.filter.GZIPFilter.doFilter(GZIPFilter.java:63) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(Unknown Source) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 
+0

你有沒有得到這個解決?我使用glassfish和JAXWS有類似的問題,我開始認爲這是由於我的郵件大小不變而導致超時。也許這可能是J2EE服務器? – simgineer 2012-02-14 03:22:08

回答

1

如果它總是在發生上傳需要一個特定的時間量之後那麼它可能是:

  • 超時
  • 的問題與文檔的大小相關

WCF中的相關默認超時值爲10分鐘,所以最好的選擇是它與尺寸有關。 (除非網絡邏輯/您的應用程序的默認設置不同)

嘗試增加WCF配置文件中的MaxReceivedMessageSize。

0
  1. 轉到Web邏輯的啓動腳本。
  2. 編輯startWebLogic.sh/startWebLogic.cmd下面的Java選項文件
  3. 附加:
set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS% -Djavax.xml.stream.XMLInputFactory=weblogic.xml.stax.XMLStreamInputFactory 
+0

這是什麼? – styfle 2013-04-16 21:00:54

相關問題