3
我們想在我們的軸Web服務上實現一個過載機制。 基本上,我們希望在TPS(每秒交易次數)值達到指定值(比如100或150)時拒絕傳入的SOAP請求。 要做到這一點,我們需要計算收到的請求數和發送的響應數。Java Axis WebService過載控制
能否請你建議我從哪裏開始實施?如何計算請求和響應?
非常感謝, Sekhar
我們想在我們的軸Web服務上實現一個過載機制。 基本上,我們希望在TPS(每秒交易次數)值達到指定值(比如100或150)時拒絕傳入的SOAP請求。 要做到這一點,我們需要計算收到的請求數和發送的響應數。Java Axis WebService過載控制
能否請你建議我從哪裏開始實施?如何計算請求和響應?
非常感謝, Sekhar
我想你應該實現消息計數,並在處理器下降。下面是關於如何在Web服務中編寫和註冊處理程序的Axis文檔的一個很好的描述:Using handlers in JAX-WS Web services。
基本上,你做什麼代碼明智的:你創建一個處理器類實現javax.xml.ws.handler.soap.SOAPHandler
。在handleMessage(...)
方法中,您將對傳入消息進行計數,並且如Javadoc for the Handler interface所示,如果達到過載限制,則返回false
。
希望這可以幫助你開始!
我創建了一個處理程序並將其與請求流和響應流關聯。我有一個查詢,因爲這個處理程序會被多個線程同時調用,我們是否需要在增加或減少計數器值的同時照顧同步?還讓我知道Axis如何處理多個同時請求? – Sekhar
這是一個很好的問題,我不知道確切的答案。但是,因爲使用原子類非常容易([AtomicInteger](http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/atomic/AtomicInteger.html))例如),我建議你只使用其中的一個。 – rolve
另外,與同步相比(與'synchronized'關鍵字相比),這些原子類在效率和容錯性方面是更好的選擇。 – rolve