本文介紹了JAX-WS:在數據庫中記錄請求和響應的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個包含getEmployeeList方法的Web服務,我需要將請求和響應記錄在這樣的數據庫中;
***Column** **Id Request Response ResponseTime***
1 Request1 Response1 600ms
2 Request2 Response2 400ms
我的員工服務類;
@WebService
@HandlerChain(file="employeehandler-chain.xml")
public interface EmployeeWS {
@WebMethod
List<Employee> getEmployeeList(
@WebParam(name = " EmployeeReq") EmployeeReq employeeReq);
我的自定義處理程序類;
public class EmployeeHandler implements SOAPHandler<SOAPMessageContext> {
@Override
public boolean handleMessage(SOAPMessageContext context) {
Boolean outBound = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
try {
SOAPMessage soapMsg = context.getMessage();
有沒有辦法將我的處理程序中的請求和響應關聯起來?
推薦答案
您可以在處理入站消息時創建ID,并保存到SOAPMessageContext
中,在處理響應時獲取它:
Boolean outBound = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (!outbound) {
Long messageId = createId();
context.put("messageId", messageId);
saveRequestToDatabase(context.getMessage(), messageId);
} else {
saveResponseToDatabase(context.getMessage(), context.get("messageId"));
}
每個請求都會創建一個新的SOAPMessageContext
,該SOAPMessageContext
將一直保持活動狀態,直到響應過程結束,因此即使同時執行各種請求,每個上下文也會不同。
這篇關于JAX-WS:在數據庫中記錄請求和響應的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,