2013-10-25 301 views
0

我對Web Service非常陌生。axis2請求響應

我有一個Web服務公開,所以客戶端正在使用它,但由於服務的重要性,我們希望記錄SOAP請求和SOAP響應流入IN和OUT。

我使用Axis2-1.6.2 這是我試過到目前爲止,我寫了一個自定義處理程序和模塊級

import org.apache.axis2.AxisFault; 
import org.apache.axis2.context.MessageContext; 
import org.apache.axis2.engine.Handler; 
import org.apache.axis2.handlers.AbstractHandler; 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class LogHandler extends AbstractHandler implements Handler { 
    private static final Log log = LogFactory.getLog(LogHandler.class); 
    private String name; 

    public String getName() { 
     System.out.println("LogHandler.getName()"); 
     return name; 
    } 

    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault { 
     log.info(msgContext.getEnvelope().toString()); 
     System.out.println("LogHandler.invoke()"); 
     return InvocationResponse.CONTINUE;   
    } 

    public void revoke(MessageContext msgContext) { 
     System.out.println("LogHandler.revoke()"); 
     log.info(msgContext.getEnvelope().toString()); 
    } 

    public void setName(String name) { 
     System.out.println("LogHandler.setName()"); 
     this.name = name; 
    } 
} 

我也寫模塊以上處理器

public class LoggingModule implements Module { 
    //implemented methods 
} 

從上面的Handler中,我可以記錄傳入SOAP請求和傳出SOAP響應。

但問題是,我一次收到很多請求,所以如果我寫普通請求和響應,然後在查看日誌時我無法確定誰的響應是這樣的。

日誌一般寫

Request1 SOAP 
Request2 SOAP 
Response1 SOAP 
Request3 SOAP 
Request4 SOAP 
Response2 SOAP 

invoke(MessageContext msgContext)這種方法,同時請求進入和響應出去是越來越調用。有沒有什麼我可以得到請求SOAP,而它被調用的響應時間。

所以,我想要一些解決方案,我可以在Response SOAP中整合Request SOAP,因此1 Log是完整的Request-Response兩者。

如果任何機構可以建議一些很好的解決方案,這將是有益的。

回答

1

你得到的請求和響應記錄,因爲您註冊在兩個IN/OUT流處理程序..

說,如果你註冊在出流處理程序,您將能夠選擇您的相關要求和迴應。也就是說,從響應messgaecontext,你可以訪問你的請求消息上下文。從那裏,你可以閱讀你的請求信息。[1]

但是在這裏您會看到一個問題,如果您的請求失敗,您將無法將其捕獲到您的外流中。該日誌可能會丟失。

[1] http://vvratha.blogspot.com/2013/05/accessing-request-messagecontext-from.html

+0

什麼是註冊處理程序只或只出路何在?你能指出一些鏈接嗎?另外,如果我在IN-OUT註冊,我不會收到迴應請求? – Jayesh

+0

感謝Ratha。這是工作。 – Jayesh

+0

你能解釋一下嗎?「但是在這裏你會看到一個問題,如果你的請求失敗了,你將無法在你的流出中捕獲它,那麼這個日誌可能會錯過。」線。 – Jayesh