2016-02-15 45 views
1

我有一個包含getEmployeeList方法的web服務,我需要在數據庫中記錄請求和響應;Jax-ws:數據庫中的日誌請求和響應

***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(); 

有沒有辦法在我的處理程序中關聯請求和響應?

回答

1

您可以創建,當你正在處理入站郵件,並保存到SOAPMessageContext,並得到它,當你要處理的響應的ID:

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其保持活動狀態,直到響應過程的結束,所以即使有多個請求同時執行,每個上下文也會不同。

+0

你是對的。 MessageContext接口擴展Map ,非常感謝。 – xunil

相關問題