我對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兩者。
如果任何機構可以建議一些很好的解決方案,這將是有益的。
什麼是註冊處理程序只或只出路何在?你能指出一些鏈接嗎?另外,如果我在IN-OUT註冊,我不會收到迴應請求? – Jayesh
感謝Ratha。這是工作。 – Jayesh
你能解釋一下嗎?「但是在這裏你會看到一個問題,如果你的請求失敗了,你將無法在你的流出中捕獲它,那麼這個日誌可能會錯過。」線。 – Jayesh