我这里有一个WebService负责接收客户端的请求,之后要把客户端要的数据返回给客户端。有一个问题,现在Service会报java.net.SocketException: There is no process to read data written to a pipe.
到网上查了一下说是连接太多了,有的就超时断了现在Service接收的请求的确很多,而且每个请求的数据处理都需要一定时间,这样怎么才能保证每一个请求都安全的执行完并且返回呢?能不能让Service阻塞在那里呢?

解决方案 »

  1.   

    你的WebService是用什么实现的,是Axis还是CXF,还是别的呢?
      

  2.   

    先谢谢各位阻塞应该是有作用的吧,我用的是XFirezhongxiutao123
    你可以写一个排队的东西 嗯,我想过,可是排队了客户端还在那等着收呢,我都是同步返回结果的,排队之后我就不知道怎么搞啦
      

  3.   

    再问一个哦,这个排队和阻塞以及同步都不是一样的意思吗???都是让Service一个一个的执行下去,是不是这个意思呢?
      

  4.   

    我现在这样搞,在Service里加一个同步的锁 synchronized (downLock){},其实也就是让客户端的请求在排队,前一个处理完了再处理下一条,这个可以不??
      

  5.   


    嗯,我再说清楚一点!
    有很多客户端会同时到Service取数据,Service根据客户端的要求从数据库取每个表的数据并转成XML发给客户端。
    这些数据我是采用同步的方式发给客户端的,也就是在客户端调用的这个方法上返回的,而且用完数据库连接就关了。
    现在的问题是,很多客户端都来取数据,我在把每个结果集打包成XML的时候总是会出现“Closed Connection: next ”以及“There is no process to read data written to a pipe.”这样的错。
    在网上查了一下大概是说连接太多了所以就想让Service处理完一个再处理下一个。
      

  6.   

    我前面说的,LZ 一直没有弄明白,你没有让service一个一个处理都出现超时关闭现象了,更何况一个一个处理,你这样导致排在后面的客户端请求也会超时关闭的。