soapメッセージから応答xmlを取得するには、 "CacheAndWriteOutputStream"と "CachedOutputStreamCallback"を使用できます。コールバッククラスでは、ストリームを閉じる前にメッセージを取得できます。ここで、我々はまた、CXFのjarファイルで利用できるいくつかのデフォルトインターセプタを持っている、ということ
<bean id="loggingInInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
<bean id="logOutInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
<bean id="wsLoggingOutInterceptor" class="org.jinouts.webservice.logging.WSLoggingOutInterceptor"></bean>
<cxf:bus>
<cxf:inInterceptors>
<ref bean="loggingInInterceptor"/>
</cxf:inInterceptors>
<cxf:outInterceptors>
<ref bean="logOutInterceptor"/>
<ref bean="wsLoggingOutInterceptor"/>
</cxf:outInterceptors>
</cxf:bus>
注:言う、私たちのうちLoggingInterceptorは、次のようにコンテキストファイルで設定することができ、「wsLoggingOutInterceptor」です。私たちは、出力応答メッセージをログに記録するか、あなたもここに編集することができ、次のように書くことができます私たち自身のインターセプタで今 :
/**
* @author asraf
* [email protected]
*/
public class WSLoggingOutInterceptor extends AbstractLoggingInterceptor
{
public WSLoggingOutInterceptor()
{
super(Phase.PRE_STREAM);
}
@Override
public void handleMessage (Message message) throws Fault
{
// TODO Auto-generated method stub
OutputStream os = message.getContent (OutputStream.class);
CacheAndWriteOutputStream cwos = new CacheAndWriteOutputStream (os);
message.setContent (OutputStream.class, cwos);
cwos.registerCallback (new LoggingOutCallBack ());
}
@Override
protected Logger getLogger ()
{
// TODO Auto-generated method stub
return null;
}
}
class LoggingOutCallBack implements CachedOutputStreamCallback
{
@Override
public void onClose (CachedOutputStream cos)
{
try
{
if (cos != null)
{
System.out.println ("Response XML in out Interceptor : " + IOUtils.toString (cos.getInputStream ()));
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFlush (CachedOutputStream arg0)
{
}
}
は、より多くの詳細については、このサイトを見てください:http://cxf.apache.org/docs/interceptors.html
は私を与えることができますいくつかの提案?ありがとう! – user809965
SOAPコンテンツをStringまたはオブジェクトとして探していますか? – ThomasRS