axis2里面本身并没有什么队列,只要有请求就会直接发送到webservice服务端,如果webservice服务端由于太忙获取它原因没有办法响应,axis会返回一个超时的异常(假设设置了超时时间)。
这里有个问题:假设2或3是在web服务器上,web服务器本身的处理线程是有限的,在1客户很多的时候等待是肯定的。

解决方案 »

  1.   

    webservice是同步的
    多线程处理
      

  2.   

    楼上的tx,axis2支持异步
    但我不是讨论的这个问题因为可以这样认为2上的每一个action其实就是一个单独的线程调度,所以已经是多线程了。我的问题是:
    从底层来看,2上的多个线程(多个webservice客户端实例--用axis2做的)能同时访问3上的webserive服务端吗?也就是能并发访问同一个目标服务器3吗(每个请求的url都完全一样,只有请求的参数不同。)?
    还是说2上的多个客户端是排队执行的?在axis2默认的阻塞模式下,每一个线程的请求返回了,下一个线程的请求才开始?
    上面两种可能那种正确?
    我问这个的目的是:把2上的axis2客户端改成非阻塞的有哪些意义?因为我目前用的axis2客户端是阻塞方式,但是已经是多线程了。在我不明白原理的情况下,我怀疑是各线程排队执行的原因是:当1上同时在线的用户多时,部分用户的2到3的请求会超时(超时原因还有个就是3上的webservice服务端只能容纳很有限的连接,但我目前只研究1和2部分,3部分不在我的控制下,所以我现在不考虑3的容纳数这个问题,而重点考虑2上的webservice客户端的改造问题。)
    但从我看的资料感觉到:多线程(每个线程的axis2客户端都是阻塞模式)应该是可以并发的。所以请教,澄清疑惑。