验证发布到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开发 , 其他 ,