环境:jdk:1.5.0
应用服务器:jboss:1.4.3
数据库:sqlserver2000
框架:spring + hibernate
webservice:xfire1.2.6
出现错误如下:
11:56:09,437 ERROR [XFireServletController] Couldn't invoke servlet request.
org.codehaus.xfire.XFireRuntimeException: Couldn't parse stream.. Nested exception is com.ctc.wstx.exc.WstxIOException: Read timed out
com.ctc.wstx.exc.WstxIOException: Read timed out
at com.ctc.wstx.stax.WstxInputFactory.doCreateSR(WstxInputFactory.java:536)
at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:592)
at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:617)
at com.ctc.wstx.stax.WstxInputFactory.createXMLStreamReader(WstxInputFactory.java:312)
at org.codehaus.xfire.util.STAXUtils.createXMLStreamReader(STAXUtils.java:762)
at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:297)
at org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:129)
at org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:747)
at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:777)
at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:115)
at org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:712)
at org.apache.coyote.Request.doRead(Request.java:427)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:283)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:379)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:298)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:149)
at com.ctc.wstx.io.UTF8Reader.loadMore(UTF8Reader.java:362)
at com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:110)
at com.ctc.wstx.io.ReaderBootstrapper.initialLoad(ReaderBootstrapper.java:245)
at com.ctc.wstx.io.ReaderBootstrapper.bootstrapInput(ReaderBootstrapper.java:132)
at com.ctc.wstx.stax.WstxInputFactory.doCreateSR(WstxInputFactory.java:531)
... 32 more
11:56:09,437 ERROR [[XFireServlet]] Servlet.service() for servlet XFireServlet threw exception
org.codehaus.xfire.XFireRuntimeException: Couldn't parse stream.. Nested exception is com.ctc.wstx.exc.WstxIOException: Read timed out
com.ctc.wstx.exc.WstxIOException: Read timed out
at com.ctc.wstx.stax.WstxInputFactory.doCreateSR(WstxInputFactory.java:536)
at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:592)
at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:617)
at com.ctc.wstx.stax.WstxInputFactory.createXMLStreamReader(WstxInputFactory.java:312)
at org.codehaus.xfire.util.STAXUtils.createXMLStreamReader(STAXUtils.java:762)
at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:297)
at org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:129)
at org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:747)
at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:777)
at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:115)
at org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:712)
at org.apache.coyote.Request.doRead(Request.java:427)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:283)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:379)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:298)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:149)
at com.ctc.wstx.io.UTF8Reader.loadMore(UTF8Reader.java:362)
at com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:110)
at com.ctc.wstx.io.ReaderBootstrapper.initialLoad(ReaderBootstrapper.java:245)
at com.ctc.wstx.io.ReaderBootstrapper.bootstrapInput(ReaderBootstrapper.java:132)
at com.ctc.wstx.stax.WstxInputFactory.doCreateSR(WstxInputFactory.java:531)
... 32 more

解决方案 »

  1.   

    补充:调用第三方
                    String url =  ResourceBundle.getBundle("jdbc").getString("reserve.url"); 
    HttpClientParams params = new HttpClientParams();
    // 避免'Expect: 100-continue' handshake
    params.setParameter(HttpClientParams.USE_EXPECT_CONTINUE,Boolean.FALSE);
    //设置ws连接超时时间
    params.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 8000l);
    Client client = new Client(new URL(url));
    client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS,params);
    Object[] results = client.invoke("smsReceive", new Object[] {authXml});
    dataXml = results[0].toString();
      

  2.   

    任务执行到这句Object[] results = client.invoke("smsReceive", new Object[] {authXml});
    的时候,下面的不执行了,有trycatche的,不知道怎么回事。
      

  3.   

    webservice服务端一直在等待执行,不知道是什么引起的阻塞
      

  4.   

    看了http://blog.csdn.net/gabbler/article/details/5134550,
    http://www.cnblogs.com/cnsoft/archive/2006/04/18/377967.html 
    应该是设置超时有问题,改成了
    URL _url = new URL(url);
    HttpURLConnection httpConnection = (HttpURLConnection)_url.openConnection();
    httpConnection.setReadTimeout(8000);//设置http连接的读超时,单位是毫秒
    httpConnection.setConnectTimeout(8000);
    httpConnection.connect();
    client = new Client(httpConnection.getInputStream(), null);
    client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "8000");//设置发送的超时限制,单位是毫秒;
     // 设置最大连接数32个,默认是6个
    client.setProperty(CommonsHttpMessageSender.MAX_CONN_PER_HOST, "32");
    client.setProperty(CommonsHttpMessageSender.MAX_TOTAL_CONNECTIONS, "256");
    client.setProperty(CommonsHttpMessageSender.DISABLE_KEEP_ALIVE, "true");
    client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE, "true");
      

  5.   

    但是偶尔会出现两个异常
    1.java.net.SocketTimeoutException: Read timed out
    2.javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing '- WSDL Document -'.: java.net.SocketTimeoutException: Read timed out
      

  6.   

    url是没问题的,一般程序执行个30分钟后就停着不动了