2017-07-19 5 views
0

J'essaie de mettre en œuvre un médiateur personnalisé dans WSO2 ESB et ce que j'essaie de réaliser, c'est que le médiateur doit prendre le chemin du fichier en entrée et l'ajouter au SOAP message en pièce jointe.Ajouter une pièce jointe au message SOAP dans Custom Mediator, WSO2 ESB

Le code du médiateur que j'ai écrit jusqu'à présent, obtient le chemin d'attachement et imprime le message SOAP. Maintenant, j'ai parcouru la documentation de l'interface MessageContext et je peux voir que nous pouvons ajouter/supprimer des éléments au message SOAP, etc, mais je ne peux pas comprendre comment ajouter une pièce jointe dans le message SOAP. Des idées?

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; 
} 
} 

Répondre

0

Cela pourrait aider Attachments API in Apache Axis2

+0

Merci! L'article suggère d'utiliser l'interface de contexte de message d'Apache Axis 2 mais le médiateur personnalisé donne dans l'objet Message Context d'Apache Synapse. Je l'ai donc résolu en convertissant le contexte du message en Apache Axis 2. –

+0

Donc l'addition de code sera comme ça: 'DataHandler dataHandler = new DataHandler (fileDataSource); org.apache.axis2.context.MessageContext mc = ((Contexte Axis2MessageContext)) .getAxis2MessageContext(); Chaîne contentid = mc.addAttachment (dataHandler); ' –