2017-07-19 14 views
0

WSO2 ESBでカスタムメディエータを実装しようとしていますが、メディエータがファイルパスを入力としてSOAPに追加する必要がありますメッセージを添付ファイルとして送信します。カスタムメディエータWSO2のSOAPメッセージに添付ファイルを追加するESB

これまでに書いたメディエータコードは、添付ファイルのパスを取得し、SOAPメッセージを出力します。今私はMessageContextインターフェイスのドキュメントをスキミングして、SOAPメッセージなどに要素を追加/削除できることがわかりましたが、SOAPメッセージに添付ファイルを追加する方法がわかりません。何か案は?

import javax.activation.FileDataSource; 
import org.apache.axiom.soap.SOAPBody; 
import org.apache.synapse.MessageContext; 
import org.apache.synapse.mediators.AbstractMediator; 

public class SoapModifier extends AbstractMediator { 

private String AttachmentFilePath; 

public boolean mediate(MessageContext context) { 
    context.setDoingSWA(true); 
    FileDataSource fileDataSource = new FileDataSource(AttachmentFilePath); 
    SOAPBody soapBody = context.getEnvelope().getBody(); 
    System.out.println("Message Being Processed : " + context.toString()); 
    return true; 
} 

public String getAttachmentFilePath(){ 
    return AttachmentFilePath; 
} 

public void setAttachmentFilePath(String path){ 
    AttachmentFilePath = path; 
} 
} 

答えて

0
+0

感謝を助けるかもしれません! この記事では、Apache Axis 2のメッセージコンテキストインターフェイスの使用を提案していますが、カスタムメディエータはApache Synapseのメッセージコンテキストオブジェクトを提供しています。 メッセージコンテキストをApache Axis 2にキャストすることで解決しました。 –

+0

コードの追加は次のようになります。 'DataHandler dataHandler = new DataHandler(fileDataSource); org.apache.axis2.context.MessageContext mc =((Axis2MessageContext)context).getAxis2MessageContext(); 文字列contentid = mc.addAttachment(dataHandler); ' –

関連する問題