Você pode chamar um EJB (Enterprise Java Bean) a partir de um nó JavaCompute.
Thread currentThread().setContextClassLoader(this.getClass().getClassLoader());
public class CallAckNoAckEJB_JavaCompute extends MbJavaComputeNode { public void evaluate(MbMessageAssembly inAssembly) throws MbException { MbOutputTerminal out = getOutputTerminal("out"); MbOutputTerminal alt = getOutputTerminal("alternate"); MbMessage inMessage = inAssembly.getMessage(); // criar nova mensagem MbMessage outMessage = new MbMessage(inMessage); MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly,outMessage); try { // ---------------------------------------------------------- // Incluir código do usuário abaixo String response = null; String responseMessage = null; Properties properties = new Properties(); properties.put(Context.PROVIDER_URL, "iiop://localhost:2809"); properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"); try { Context initialContext = new InitialContext(properties); Object obj = initialContext.lookup("ejb/com/acme/ejbs/AckNoAckHome"); AckNoAckHome ejbHome = (AckNoAckHome)javax.rmi.PortableRemoteObject.narrow(obj,AckNoAckHome.class); AckNoAck ackNoAck = ejbHome.create(); responseMessage = ackNoAck.getAck(); response = "Ack"; } catch(Exception e) { responseMessage = e.getMessage(); response = "NoAck"; } MbElement cursor = outMessage.getRootElement().getFirstElementByPath("/XML/AckNoAck"); cursor.createElementAsLastChild(MbElement.TYPE_NAME,"Response",null); cursor.getLastChild().createElementAsLastChild(MbElement.TYPE_NAME,response,null); cursor.getLastChild().getLastChild().createElementAsLastChild(MbElement.TYPE_VALUE,null,responseMessage); // Fim do código do usuário // ---------------------------------------------------------- // O seguinte deve ser alterado somente // se você não estiver propagando a mensagem para o terminal de 'saída' out.propagate(outAssembly); } finally { // limpar a outMessage outMessage.clearMessage(); } } }