客户端调用Web Service,服务端程序需要运行较长时间(10分钟左右),结果服务器端
执行完以后抛出异常:java.io.IOException:Stream closed
请问有人碰到过这个问题么?怎么解决呢?谢谢!附测试代码
服务端:
package plg.paper.ws;import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.ParameterStyle;@SOAPBinding(parameterStyle = ParameterStyle.BARE)
@WebService(targetNamespace = "http://www.wenly.ws", serviceName =
"helloService", name = "sayHello")
public class Hello {
    @WebMethod
    public String sayHello(String name) {
    public String sayHello(String name) {
        try {
            // Wait 10 minutes
            Thread.sleep(1000 * 60 * 10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("[server]hello, " + name);
        return "hello, " + name;
    }
}客户端调用方法:
HelloService helloService = new HelloService();
        SayHello sayHelloPort = helloService.getSayHelloPort();
        ((BindingProvider) sayHelloPort).getRequestContext().put(
                BindingProviderProperties.CONNECT_TIMEOUT, 1000 * 60 * 100);
        ((BindingProvider) sayHelloPort).getRequestContext().put(
                BindingProviderProperties.REQUEST_TIMEOUT, 1000 * 11);
        System.out.println(sayHelloPort.sayHello("wenly"));

解决方案 »

  1.   

    客户端调用方法是这样的:
    HelloService helloService = new HelloService();
      SayHello sayHelloPort = helloService.getSayHelloPort();
      ((BindingProvider) sayHelloPort).getRequestContext().put(
      BindingProviderProperties.CONNECT_TIMEOUT, 1000 * 60 * 100);
      ((BindingProvider) sayHelloPort).getRequestContext().put(
      BindingProviderProperties.REQUEST_TIMEOUT, 1000 * 60 * 100);
      System.out.println(sayHelloPort.sayHello("wenly"));
      

  2.   

    是安全线程的关系 
    你参考下他的解决方法
    http://www.javaeye.com/problems/35753