Usando seu codigo Java no Mule – Part 1
Mule oferece um conjunto incrível de ferramentas prontas para usar que torna a
sua experiência no desenvolvimento de tão suave quanto possível. Enquanto
na maioria dos cenários, você terá mais do que suficiente, o que acontece se
você precisa dar um passo específico e você quiser personalizá-lo? Sou capaz
de adicionar o meu próprio código Java em meu fluxo mule? Enquanto ele é
altamente recomendável usar os componentes fornecidos pelo Mule
(componentes já testados), você é livre para incorporar suas operações Java /
POJOs / bibliotecas em mule! Abaixo descrevo uma lista de abordagens que eu
espero responder a maioria das suas perguntas! Para estes exemplos que
vamos usar uma classe POJO "Animal”.
public class Animal {
private String name;
public Animal(){
name="maxMule";
}
public Animal(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Animal [name=" + name + "]";
}
}
Implementing Callable Interface
Uma abordagem comum é fazer com que a nossa classe Java implementa a
interface org.mule.api.lifecycle.Callable . Nós apenas precisamos de substituir
as OnCall método que recebe como parâmetro o MuleEventContext . Usando
thisMuleEventContext objeto podemos acessar os nossos componentes de
mula . Por exemplo, " eventContext.getMessage ()" irá retornar a mensagem da
aplicação Mule .
No exemplo abaixo, estamos adicionando uma nova propriedade de sessão e
retornar um objeto "Animal" no Payload :
public class OnCallClass implements Callable {
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
eventContext.getMessage().setProperty("surname", "Martinez", PropertyScop
System.out.println("Session Variable updated n");
System.out.println("Returning Animal Object in the payload");
return new Animal();
}
}
view rawOnCallClass.java hosted with by GitHub
Agora vamos usar o <component class=””> para chamar nossa nova class no
mule app:
<flow name="usingCallable">
<http:listener config-ref="HTTP_Listener_Configuration" path="/onCall" doc:na
allowedMethods="GET" />
<component class="javacall.OnCallClass" doc:name="Java" />
<object-to-string-transformer doc:name="Object to String" />
</flow>
Usando uma Custom Message Processor
Podemos descrever um aplicativo Mule como uma mensagem de Mula,
desencadeada por qualquer forma, que passa por diferentes processadores
(passos).
A segunda abordagem define uma dessas etapas usando Java!
A nossa nova classe deve implementar
org.mule.api.processor.MessageProcessor . Essa classe tem o processo de
operação que recebe o MuleEvent semelhante à nossa primeira abordagem .
No exemplo abaixo , vamos receber este evento, definir uma carga diferente e
retornar o evento com o nosso novo Payload .
public class MessageProcessorCall implements MessageProcessor{
@Override
public MuleEvent process(MuleEvent event) throws MuleException {
System.out.println("n-------Process Executing, updating payload-------");
event.getMessage().setPayload("Payload Modified from Message processor")
System.out.println("n-------Process executed, payload updated-------");
return event;
}
}
Agora, vamos adicionar no nosso mule app usando <custom-processor
class=””> component:
<flow name="usingCustomMessageProcessor">
<http:listener config-ref="HTTP_Listener_Configuration" path="/customMessage" doc:nam
allowedMethods="GET"/>
<custom-processor class="javacall.MessageProcessorCall" doc:name="Custom Process
<object-to-string-transformer doc:name="Object to String"/>
</flow>

Usando seu codigo java no mule part 1

  • 1.
    Usando seu codigoJava no Mule – Part 1 Mule oferece um conjunto incrível de ferramentas prontas para usar que torna a sua experiência no desenvolvimento de tão suave quanto possível. Enquanto na maioria dos cenários, você terá mais do que suficiente, o que acontece se você precisa dar um passo específico e você quiser personalizá-lo? Sou capaz de adicionar o meu próprio código Java em meu fluxo mule? Enquanto ele é altamente recomendável usar os componentes fornecidos pelo Mule (componentes já testados), você é livre para incorporar suas operações Java / POJOs / bibliotecas em mule! Abaixo descrevo uma lista de abordagens que eu espero responder a maioria das suas perguntas! Para estes exemplos que vamos usar uma classe POJO "Animal”. public class Animal { private String name; public Animal(){ name="maxMule"; } public Animal(String name){ this.name=name; } public String getName() {
  • 2.
    return name; } public voidsetName(String name) { this.name = name; } @Override public String toString() { return "Animal [name=" + name + "]"; } } Implementing Callable Interface Uma abordagem comum é fazer com que a nossa classe Java implementa a interface org.mule.api.lifecycle.Callable . Nós apenas precisamos de substituir as OnCall método que recebe como parâmetro o MuleEventContext . Usando thisMuleEventContext objeto podemos acessar os nossos componentes de mula . Por exemplo, " eventContext.getMessage ()" irá retornar a mensagem da aplicação Mule . No exemplo abaixo, estamos adicionando uma nova propriedade de sessão e retornar um objeto "Animal" no Payload : public class OnCallClass implements Callable {
  • 3.
    @Override public Object onCall(MuleEventContexteventContext) throws Exception { eventContext.getMessage().setProperty("surname", "Martinez", PropertyScop System.out.println("Session Variable updated n"); System.out.println("Returning Animal Object in the payload"); return new Animal(); } } view rawOnCallClass.java hosted with by GitHub Agora vamos usar o <component class=””> para chamar nossa nova class no mule app: <flow name="usingCallable"> <http:listener config-ref="HTTP_Listener_Configuration" path="/onCall" doc:na allowedMethods="GET" /> <component class="javacall.OnCallClass" doc:name="Java" /> <object-to-string-transformer doc:name="Object to String" /> </flow> Usando uma Custom Message Processor Podemos descrever um aplicativo Mule como uma mensagem de Mula, desencadeada por qualquer forma, que passa por diferentes processadores (passos). A segunda abordagem define uma dessas etapas usando Java!
  • 4.
    A nossa novaclasse deve implementar org.mule.api.processor.MessageProcessor . Essa classe tem o processo de operação que recebe o MuleEvent semelhante à nossa primeira abordagem . No exemplo abaixo , vamos receber este evento, definir uma carga diferente e retornar o evento com o nosso novo Payload . public class MessageProcessorCall implements MessageProcessor{ @Override public MuleEvent process(MuleEvent event) throws MuleException { System.out.println("n-------Process Executing, updating payload-------"); event.getMessage().setPayload("Payload Modified from Message processor") System.out.println("n-------Process executed, payload updated-------"); return event; } } Agora, vamos adicionar no nosso mule app usando <custom-processor class=””> component: <flow name="usingCustomMessageProcessor"> <http:listener config-ref="HTTP_Listener_Configuration" path="/customMessage" doc:nam allowedMethods="GET"/> <custom-processor class="javacall.MessageProcessorCall" doc:name="Custom Process <object-to-string-transformer doc:name="Object to String"/> </flow>