Java Axis Web服务重载控制
我们希望在axis Web服务上实现过载机制。 基本上,我们希望在TPS(每秒事务数)值达到指定值(例如100或150)时拒绝传入的SOAP请求。 为了做到这一点,我们需要计算收到的请求数和发送的响应数 你能建议我从哪里开始实施吗?如何计算请求和响应 非常感谢,,Java Axis Web服务重载控制,java,controls,overloading,axis,Java,Controls,Overloading,Axis,我们希望在axis Web服务上实现过载机制。 基本上,我们希望在TPS(每秒事务数)值达到指定值(例如100或150)时拒绝传入的SOAP请求。 为了做到这一点,我们需要计算收到的请求数和发送的响应数 你能建议我从哪里开始实施吗?如何计算请求和响应 非常感谢,, Sekhar我认为应该在处理程序中实现消息计数和丢弃。以下是Axis文档中关于如何在web服务中编写和注册处理程序的详细说明: 基本上,代码方面的工作是:创建一个处理程序类,实现javax.xml.ws.handler.soap.SO
Sekhar我认为应该在处理程序中实现消息计数和丢弃。以下是Axis文档中关于如何在web服务中编写和注册处理程序的详细说明: 基本上,代码方面的工作是:创建一个处理程序类,实现
javax.xml.ws.handler.soap.SOAPHandler
。在handleMessage(…)
方法中,对传入消息进行计数,如所示,如果达到过载限制,则返回false
希望这能帮助你开始 我创建了一个处理程序,并将其与请求流和响应流相关联。我有一个查询,因为这个处理程序将被多个线程同时调用,我们需要在递增或递减计数器值的同时处理同步吗?还请告诉我Axis如何处理多个同时请求?这是一个很好的问题,我不知道确切的答案。但是,由于使用原子类(例如)非常容易,我建议您只使用其中一个。此外,与同步(使用
synchronized
关键字)相比,这些原子类在效率和易出错性方面是更好的选择。AtomicInteger是从java 1.5开始引入的,但是我们的应用程序是在Java 1.4上运行的,所以Java 1.4中有AtomicInteger的替代品吗?不幸的是,这些原子类依赖于硬件特性,这意味着你不能用一些库来代替它们。然而,在您的情况下,我认为一个简单的volatile
变量也足够了。您将有一个竞争条件,但由于消息的到达无论如何都是不确定的,因此计数或丢失一条消息应该不是一个大问题。