2011-06-21 20 views
6

SOAP ileti değişiminin Request-Response döngüsünü kesiştiren bir sınıf oluşturdum ve ileti alışverişini günlüğe kaydetmek istedim. SOAP mesajını günlük dosyamda kaydedebilmem için en iyi yol nedir?Günlük SOAP İletileri

Günlük dosyasımda güzel bir şekilde yazdırılmasını istemiyorum, ancak yalnızca numaralı telefona erişmek ve istek ve yanıt SOAP zarfını görüntülemek istiyorum.

Bu kod ile çalıştı:

public class LogHandler{  
    private static final Logger _LOG; 
    @Override 
    protected void handleResponse(SOAPMessage message) 
     logSOAPMessage(message); 
    } 
    @Override 
    protected void handleRequest(SOAPMessage message) 
     logSOAPMessage(message); 
    }  
    private void logSOAPMessage(SOAPMessage message){ 
     _LOG.info(":: Logging SOAP Message :: " + message.toString()); 
    } 
} 

Ama gerekli mesajı almaz.

:: Logging SOAP Message :: [email protected] 

Herhangi bir ipucu?

cevap

2

Gördüğünüz şey SOAPMessage öğesinin toString'idir. SOAPEnvelope’ı Oracle’ın SOAPMessage’ından alıp alamayacağınızı ve gelen/giden SOAP mesajını içermesi gerekip gerekmediğini görmek için javadocs’ı aramanız gerekebilir.

Düzenleme: Lütfen soap mesajını yapılandırmak için getSoapHeader() ve getSoapBody() için this'a bakın. Oracle'ın SOAPMessage ürününün sarıcısı için de aynı şeyi anlamanız gerekebilir. message ise

10

SOAPMessage şunları yapın:

ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
message.writeTo(bout); 
String msg = bout.toString("UTF-8"); 

Şimdi Dize msg sabun mesajı var ve bunu giriş yapabilirsiniz. Örnekte

:

private void logSOAPMessage(SOAPMessage message){ 
    ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
    message.writeTo(bout); 
    String msg = bout.toString("UTF-8"); 
    _LOG.info(":: Logging SOAP Message :: " + msg);  
} 
1

Kratilus'unda cevabı SOAP ekleri oturum açmak istemiyorsanız yetersizdir.

// Get the Envelope Source 
Source src = message.getSOAPPart().getContent() ; 

// Transform the Source into a StreamResult to get the XML 
Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
transformer.setOutputProperty(OutputKeys.INDENT, "no"); 
StreamResult result = new StreamResult(new StringWriter()); 
transformer.transform(src, result); 
String xmlString = result.getWriter().toString(); 
: Burada

sadece Zarf giriş yapmak için bir yoldur
İlgili konular