本文介紹了JAX-WS:在數(shù)據(jù)庫中記錄請(qǐng)求和響應(yīng)的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我有一個(gè)包含getEmployeeList方法的Web服務(wù),我需要將請(qǐng)求和響應(yīng)記錄在這樣的數(shù)據(jù)庫中;
***Column** **Id Request Response ResponseTime***
1 Request1 Response1 600ms
2 Request2 Response2 400ms
我的員工服務(wù)類;
@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();
有沒有辦法將我的處理程序中的請(qǐng)求和響應(yīng)關(guān)聯(lián)起來?
推薦答案
您可以在處理入站消息時(shí)創(chuàng)建ID,并保存到SOAPMessageContext
中,在處理響應(yīng)時(shí)獲取它:
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"));
}
每個(gè)請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的SOAPMessageContext
,該SOAPMessageContext
將一直保持活動(dòng)狀態(tài),直到響應(yīng)過程結(jié)束,因此即使同時(shí)執(zhí)行各種請(qǐng)求,每個(gè)上下文也會(huì)不同。
這篇關(guān)于JAX-WS:在數(shù)據(jù)庫中記錄請(qǐng)求和響應(yīng)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,