我已经使用Apache CXF实现了一个web服务。流程如下:
1。当向我们的Webservice发出请求时,我们将从中获取Input参数。2. 从获得的输入参数,我们内部调用另一个web服务。
在我的JSP中,我给出了以下
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(MyWebService.class);
factory.setAddress(host);
MyWebService client = (MYWebService) factory.create();
Client clientProxy = ClientProxy.getClient(client);
HTTPConduit conduit = (HTTPConduit) clientProxy.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(200000000);
policy.setReceiveTimeout(10000000);
conduit.setClient(policy);
但是仍然得到Socket超时异常
SEVERE: Servlet.service() for servlet CXFServlet threw exception
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:740)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:764)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:126)
at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:573)
at org.apache.coyote.Response.doWrite(Response.java:560)
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:353)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
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.writeEndTag(BufferingXmlWriter.java:803)
at com.ctc.wstx.sw.BaseNsStreamWriter.doWriteEndTag(BaseNsStreamWriter.java:669)
at com.ctc.wstx.sw.BaseNsStreamWriter.writeEndElement(BaseNsStreamWriter.java:282)
at org.apache.cxf.staxutils.StaxUtils.writeElement(StaxUtils.java:633)
at org.apache.cxf.staxutils.StaxUtils.writeElement(StaxUtils.java:525)
at org.apache.cxf.staxutils.StaxUtils.writeNode(StaxUtils.java:642)
at org.apache.cxf.staxutils.StaxUtils.writeElement(StaxUtils.java:628)
at org.apache.cxf.staxutils.StaxUtils.writeElement(StaxUtils.java:525)
at org.apache.cxf.staxutils.StaxUtils.writeNode(StaxUtils.java:642)
at org.apache.cxf.staxutils.StaxUtils.writeElement(StaxUtils.java:628)
at org.apache.cxf.staxutils.StaxUtils.writeElement(StaxUtils.java:525)
at org.apache.cxf.staxutils.StaxUtils.writeNode(StaxUtils.java:642)
at org.apache.cxf.staxutils.StaxUtils.writeElement(StaxUtils.java:628)
at org.apache.cxf.staxutils.StaxUtils.writeElement(StaxUtils.java:525)
我从我的web服务中调用其他web服务作为方法调用的方式(而不是使用JaxWsProxyFactoryBean)这会是个问题吗?
socketexception:管道破裂之前这不是一个超时异常。这基本上表示服务器由于某种原因关闭了连接,我们无法再写入套接字。您可能需要检查服务器端日志以找出原因。