2016-02-15 107 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

相关问题