当前位置:web 服务器 > Tomcat >>

验证发布到Tomcat的基于JAX-WS的Webservice的并发

在项目中遇到了,需要接受本地请求调用,然后调用其他方的webService提供的服务,将返回的结果加工,处理完成之后返回本地结果。

 \
 

但是中间有一个小的顾虑,如果有A,B,C同时调用前置机提供的服务,比如前置机中需要10S来处理当前的请求信息,那么是否会出现串行执行的情况,也就是最后一个排队的C会等待30S的时间才能够得到所需要的结果,当然,容器或者框架肯定会处理这么低级的问题,保险起见,我们还是验证一下如下:
建立一个WebService,其相关的实现类为:
public class ProvinceCardServiceImpl implements ProvinceCardService {


  public String getMsg(String str) {
    try {
      Thread.sleep(10000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
      return "Hello "+str;
    }
}
本地java客户端调用程序如下:
public class ProvinceCardClient implements Runnable {
  public void run() {
    System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date(System.currentTimeMillis())));
    PcServicePortType service = new PcService().getPcServiceHttpPort();
    System.out.println(service.getMsg("Andy"));
    System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date(System.currentTimeMillis())));
    }
    public static void main(String[] args) {
      new Thread(new ProvinceCardClient()).start();
      new Thread(new ProvinceCardClient()).start();
      new Thread(new ProvinceCardClient()).start();
    }
}
下面是程序的一种可能结果:
2013-04-24 09:43:14
2013-04-24 09:43:14
2013-04-24 09:43:14
Hello Andy
Hello Andy
2013-04-24 09:43:25
2013-04-24 09:43:25
Hello Andy
2013-04-24 09:43:25


可以看到,10S,接受并且同时完成了三个请求,所以,这个处理是并发的也必须是并发的。

补充:Web开发 , 其他 ,
Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,