SlideShare uma empresa Scribd logo
Trabalhando com anexos SOAP usando módulo CXF do Mule
É bastante comum que você pode precisar adicionar / extrair
anexos ao trabalhar com sabão serviços baseados na Web (WS).
Neste curto post vamos explicar como fazê-lo utilizando o módulo
CXF do Mulo.
Receber e extrair anexos
Durante a recepção de uma mensagem SOAP, a primeira coisa que
você deve saber é que Mule não copia anexos SOAP para a sua
mensagem Mule. Se você quiser fazer isso, você vai precisar
adicionar um interceptor especial CXF para fazê-lo
(CopyAttachmentInInterceptor). O próximo trecho de código mostra
como adicionar que interceptor:
<http:inbound-endpoint
address="http://localhost:1234/webServiceUrl" exchange-
pattern="request-response">
<cxf:jaxws-service serviceClass="com.WebService">
<cxf:inInterceptors>
<spring:bean
class="org.mule.module.cxf.support.CopyAttachmentInInterceptor"/>
</cxf:inInterceptors>
</cxf:jaxws-service>
</http:inbound-endpoint>
Todos os anexos são copiados para a propriedade cxf_attachments
invocação da mensagem. Observe que o valor dessa propriedade é
uma coleção de acessórios. Para trabalhar com anexos que você
pode usar o transformador de expressão, por exemplo, o seguinte
trecho de código extrair o conteúdo do primeiro anexo da lista e
define-a como a carga atual da mensagem:
<expression-transformer>
<return-argument evaluator="header"
expression="INVOCATION:cxf_attachments" />
</expression-transformer>
<expression-transformer>
<return-argument evaluator="groovy"
expression="payload.iterator().next().getDataHandler().getContent()"
/>
</expression-transformer>
Adicionar anexos e enviar.
Por outro lado, se você quiser enviar anexos em uma WS você vai
precisar para criar a propriedade cxf_attachments e depois usar o
interceptor CopyAttachmentOutInterceptor para copiar esses
anexos à mensagem SOAP. O seguinte trecho de código adiciona
um anexo e chama o WS:
<custom-processor class="com.AddAttachmentMessageProcessor"
/>
<cxf:jaxws-client serviceClass="com.SampleWebService"
operation="processAttachedPayload">
<cxf:outInterceptors>
<spring:bean
class="org.mule.module.cxf.support.CopyAttachmentOutInterceptor"
/>
</cxf:outInterceptors>
</cxf:jaxws-client>
A classe AddAttachmentMessageProcessor é responsável de criar
a coleção de anexos e configurá-lo na propriedade cxf_attachments.
A classe em si é bastante simples, basta adiciona os anexos como
uma propriedade da mensagem:
A classe AddAttachmentMessageProcessor é responsável de criar
a coleção de anexos e configurá-lo na propriedade cxf_attachments.
A classe em si é bastante simples, basta adiciona os anexos como
uma propriedade da mensagem:
public class AddAttachmentMessageProcessor implements
MessageProcessor
{
@Override
public MuleEvent process(MuleEvent event) throws
MuleException
{
Collection<Attachment> attachments = new
ArrayList<Attachment>();
AttachmentImpl attachment = new AttachmentImpl("1");
String attachmentXML = "";
try
{
attachmentXML =
IOUtils.getResourceAsString("attachment.xml", this.getClass());
}
catch (IOException e)
{
e.printStackTrace();
}
DataSource source = new
ByteArrayDataSource(attachmentXML.getBytes(), "text/xml");
attachment.setDataHandler(new
ConfigurableDataHandler(source));
attachments.add(attachment);
event.getMessage().setInvocationProperty(CxfConstants.ATTACHM
ENTS, attachments);
return event;
}
}

Mais conteúdo relacionado

PDF
Como criar um http proxy dinamico com mule parte 3
PDF
Estudo de caso: Mule como um transporte JMS Comum
PDF
Como criar um http proxy dinamico com mule parte 1
PDF
Mule esb teste parte 1
PDF
Mule esb teste parte 2
PDF
Mule esb com framework cucumber part 1
PDF
Introdução ao mule esb para iniciantes
PDF
Principais perguntas sobre mule esb parte 2
Como criar um http proxy dinamico com mule parte 3
Estudo de caso: Mule como um transporte JMS Comum
Como criar um http proxy dinamico com mule parte 1
Mule esb teste parte 1
Mule esb teste parte 2
Mule esb com framework cucumber part 1
Introdução ao mule esb para iniciantes
Principais perguntas sobre mule esb parte 2

Mais procurados (18)

PDF
Explorando mule esb sftp adapter
PDF
Principais duvidas sobre mule
PDF
Conectores mule
PDF
Integração salesforce com mulesoft usando o salesforce conector
PDF
Mulesoft - Salesforce Analytics Cloud Connector - Part 1
PDF
Flyweigth - Arquitetura de Referência para Open Banking Brasil Fase 1
PDF
Usando seu codigo java no mule part 1
PPTX
Desenvolvimento web com .NET Core - Meetup São Carlos
ODP
O Elefante e a Mula
PPTX
ASP.NET Core 2.1 #dotnetconf
PDF
Tutorial integrado flex_+_java_+_blazeds
PPTX
Novidades do ASP.NET Core 2.1
PPTX
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
PDF
Consumindo soap wsdl
PPTX
WebAPI-Route-Translate-BasicAuth
PPTX
SoapUI
PDF
Spring Boot - Uma app do 0 a Web em 30 minutos
PPTX
Conhecendo o asp.net core
Explorando mule esb sftp adapter
Principais duvidas sobre mule
Conectores mule
Integração salesforce com mulesoft usando o salesforce conector
Mulesoft - Salesforce Analytics Cloud Connector - Part 1
Flyweigth - Arquitetura de Referência para Open Banking Brasil Fase 1
Usando seu codigo java no mule part 1
Desenvolvimento web com .NET Core - Meetup São Carlos
O Elefante e a Mula
ASP.NET Core 2.1 #dotnetconf
Tutorial integrado flex_+_java_+_blazeds
Novidades do ASP.NET Core 2.1
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Consumindo soap wsdl
WebAPI-Route-Translate-BasicAuth
SoapUI
Spring Boot - Uma app do 0 a Web em 30 minutos
Conhecendo o asp.net core
Anúncio

Mais de Jeison Barros (19)

PDF
Pdfteste
PDF
Introdução a RAML - parte 1
PDF
O básico do uso de rest vs soap
PDF
Restful considerada prejudicial - parte 1
PDF
Restful considerada prejudicial parte 2
PDF
Estratégia api e design
PDF
Transformando eficientemente resultados de uma consulta jdbc para json
PDF
Rest api vs SOAP
PDF
Conectando seu banco de dados usando jdbc
PDF
Habilidades necessárias para integrar aplicativos e dados
PDF
Qual integration framework você deve usar parte 2
PDF
Qual integration framework você deve usar parte 1
PDF
Começando com mulesoft e maven
PDF
Mule esb com framework cucumber part 2
PDF
Fluxo dinâmicos usando spring aplication
PDF
Data mapping com Groovy - Part 2
PDF
Relatório analytics de mula tempo de execução usando splunk
PDF
Substituindo o request message no mule
PDF
Usando seu codigo java no mule part 2
Pdfteste
Introdução a RAML - parte 1
O básico do uso de rest vs soap
Restful considerada prejudicial - parte 1
Restful considerada prejudicial parte 2
Estratégia api e design
Transformando eficientemente resultados de uma consulta jdbc para json
Rest api vs SOAP
Conectando seu banco de dados usando jdbc
Habilidades necessárias para integrar aplicativos e dados
Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 1
Começando com mulesoft e maven
Mule esb com framework cucumber part 2
Fluxo dinâmicos usando spring aplication
Data mapping com Groovy - Part 2
Relatório analytics de mula tempo de execução usando splunk
Substituindo o request message no mule
Usando seu codigo java no mule part 2
Anúncio

Último (10)

PPTX
TURMA modelo de modelo apresentação 4DE.pptx
PDF
PROJETO DE PESQUISA PRONTO FONOAUDIOLOGIA 2025 ABNT.pdf
PPTX
Classifirrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrcação_IPAQ.pptx
PDF
Agosto-Lilas-Conscientizacao-e-Combate-a-Violencia-contra-a-Mulher.pdf
PDF
Certificado de Conclusão Jornada Inteligência Artificial
PDF
PROJETO DE PESQUISA PRONTO ESTÉTICA 2025 ABNT.pdf
PDF
Apostila_de_Laboratorio_de_Quimica_Inorg.pdf
PDF
Metodologias ágeis - Slides - aulas 1 a 5.pdf
PPTX
Fundamentos do Desenvolvimento Web. Fundamentos do Desenvolvimento Web.Fundam...
PDF
A sua pontuação aumenta ao escolher uma categoria, preencher uma descrição lo...
TURMA modelo de modelo apresentação 4DE.pptx
PROJETO DE PESQUISA PRONTO FONOAUDIOLOGIA 2025 ABNT.pdf
Classifirrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrcação_IPAQ.pptx
Agosto-Lilas-Conscientizacao-e-Combate-a-Violencia-contra-a-Mulher.pdf
Certificado de Conclusão Jornada Inteligência Artificial
PROJETO DE PESQUISA PRONTO ESTÉTICA 2025 ABNT.pdf
Apostila_de_Laboratorio_de_Quimica_Inorg.pdf
Metodologias ágeis - Slides - aulas 1 a 5.pdf
Fundamentos do Desenvolvimento Web. Fundamentos do Desenvolvimento Web.Fundam...
A sua pontuação aumenta ao escolher uma categoria, preencher uma descrição lo...

Trabalhando com anexos soap usando módulo cxf do mule

  • 1. Trabalhando com anexos SOAP usando módulo CXF do Mule É bastante comum que você pode precisar adicionar / extrair anexos ao trabalhar com sabão serviços baseados na Web (WS). Neste curto post vamos explicar como fazê-lo utilizando o módulo CXF do Mulo. Receber e extrair anexos Durante a recepção de uma mensagem SOAP, a primeira coisa que você deve saber é que Mule não copia anexos SOAP para a sua mensagem Mule. Se você quiser fazer isso, você vai precisar adicionar um interceptor especial CXF para fazê-lo (CopyAttachmentInInterceptor). O próximo trecho de código mostra como adicionar que interceptor: <http:inbound-endpoint address="http://localhost:1234/webServiceUrl" exchange- pattern="request-response"> <cxf:jaxws-service serviceClass="com.WebService"> <cxf:inInterceptors> <spring:bean class="org.mule.module.cxf.support.CopyAttachmentInInterceptor"/> </cxf:inInterceptors> </cxf:jaxws-service> </http:inbound-endpoint>
  • 2. Todos os anexos são copiados para a propriedade cxf_attachments invocação da mensagem. Observe que o valor dessa propriedade é uma coleção de acessórios. Para trabalhar com anexos que você pode usar o transformador de expressão, por exemplo, o seguinte trecho de código extrair o conteúdo do primeiro anexo da lista e define-a como a carga atual da mensagem: <expression-transformer> <return-argument evaluator="header" expression="INVOCATION:cxf_attachments" /> </expression-transformer> <expression-transformer> <return-argument evaluator="groovy" expression="payload.iterator().next().getDataHandler().getContent()" /> </expression-transformer> Adicionar anexos e enviar. Por outro lado, se você quiser enviar anexos em uma WS você vai precisar para criar a propriedade cxf_attachments e depois usar o interceptor CopyAttachmentOutInterceptor para copiar esses anexos à mensagem SOAP. O seguinte trecho de código adiciona um anexo e chama o WS: <custom-processor class="com.AddAttachmentMessageProcessor" />
  • 3. <cxf:jaxws-client serviceClass="com.SampleWebService" operation="processAttachedPayload"> <cxf:outInterceptors> <spring:bean class="org.mule.module.cxf.support.CopyAttachmentOutInterceptor" /> </cxf:outInterceptors> </cxf:jaxws-client> A classe AddAttachmentMessageProcessor é responsável de criar a coleção de anexos e configurá-lo na propriedade cxf_attachments. A classe em si é bastante simples, basta adiciona os anexos como uma propriedade da mensagem: A classe AddAttachmentMessageProcessor é responsável de criar a coleção de anexos e configurá-lo na propriedade cxf_attachments. A classe em si é bastante simples, basta adiciona os anexos como uma propriedade da mensagem: public class AddAttachmentMessageProcessor implements MessageProcessor { @Override public MuleEvent process(MuleEvent event) throws MuleException { Collection<Attachment> attachments = new ArrayList<Attachment>();
  • 4. AttachmentImpl attachment = new AttachmentImpl("1"); String attachmentXML = ""; try { attachmentXML = IOUtils.getResourceAsString("attachment.xml", this.getClass()); } catch (IOException e) { e.printStackTrace(); } DataSource source = new ByteArrayDataSource(attachmentXML.getBytes(), "text/xml"); attachment.setDataHandler(new ConfigurableDataHandler(source)); attachments.add(attachment); event.getMessage().setInvocationProperty(CxfConstants.ATTACHM ENTS, attachments); return event; } }