2016-06-11 3 views
1

私はカスタムSOAPメッセージを変換する必要があるタスクがあります。最初にこのカスタムSOAPメッセージを取得しなければなりません。次に、このメッセージをXSLTで変換し、WebServiceでこのメッセージを処理する必要があります。逆のプロセスが繰り返される。処理の前にSOAPメッセージを傍受して変換する方法は?

SOAPメッセージを変換するためのXSLTファイルとメソッドがありますが、変換のためにこのメソッドをどこに呼び出す必要があるかわかりません。 SOAPメッセージを傍受するにはどうしたらいいですか?私は1つのメソッド(以下の例)でクラスを持っているだけなので、Webサービスで処理する前にこのメッセージをどのように変換できるのか分かりません。ここで

@WebService 
public class Calculator { 

public String showCard(final CreditCard creditCard) { 
    return creditCard.toString(); 
} 

}

私は何をする必要があるかtechnical mappingです。

答えて

0

私はSOAPメッセージを傍受し、どこでそれを行う必要がありますか?

あなたが発信応答を変換するためのエンドポイントの商務ロジックの実行、およびその他のSoapHandler前にSOAPリクエストをキャプチャするSoapHandlerを必要としています。

SoapHandlerクラス(mkyongから抽出した例)

public class CalculatorSoapHandler implements SOAPHandler<SOAPMessageContext>{ 

    @Override 
    public boolean handleMessage(SOAPMessageContext context) { 

    Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); 

    //for response message only, true for outbound messages, false for inbound 
    if(!isRequest){ 

    try{ 
     SOAPMessage soapMsg = context.getMessage(); 
     SOAPEnvelope soapEnv = soapMsg.getSOAPPart().getEnvelope(); 
     SOAPHeader soapHeader = soapEnv.getHeader(); 

     //process.... 

     }catch(SOAPException e){ 
      System.err.println(e); 
     }catch(IOException e){ 
      System.err.println(e); 
     } 

    } 

     //continue other handler chain 
     return true; 
    } 

    @Override 
    public boolean handleFault(SOAPMessageContext context) { 
    } 

    @Override 
    public void close(MessageContext context) { 
    } 

    @Override 
    public Set<QName> getHeaders() { 
    } 


} 

を定義するSOAPハンドラのXMLファイルを作成します

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<javaee:handler-chains 
    xmlns:javaee="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <javaee:handler-chain> 
    <javaee:handler> 
     <javaee:handler-class>com.CalculatorSoapHandler</javaee:handler-class> 
    </javaee:handler> 
    </javaee:handler-chain> 
</javaee:handler-chains> 

@WebService 
@HandlerChain(file="handler-chain.xml") 
public class Calculator { 

を@HandlerChain使用してWebサービスにSOAPハンドラをアタッチCXFやspring-WSのようなjax-wsフレームワークを使用している場合は、documenta特定の設定を表示するには

+0

ありがとうございます。できます! –

関連する問題