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;
}
}
感謝を助けるかもしれません! この記事では、Apache Axis 2のメッセージコンテキストインターフェイスの使用を提案していますが、カスタムメディエータはApache Synapseのメッセージコンテキストオブジェクトを提供しています。 メッセージコンテキストをApache Axis 2にキャストすることで解決しました。 –
コードの追加は次のようになります。 'DataHandler dataHandler = new DataHandler(fileDataSource); org.apache.axis2.context.MessageContext mc =((Axis2MessageContext)context).getAxis2MessageContext(); 文字列contentid = mc.addAttachment(dataHandler); ' –