Sie können eine Enterprise Java™Bean (EJB) von einem JavaCompute-Knoten aus aufrufen.
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();
// Neue Nachricht erstellen
MbMessage outMessage = new MbMessage(inMessage);
MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly,outMessage);
try {
// ----------------------------------------------------------
// Benutzercode unten hinzufügen
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);
// Ende von Benutzercode
// ----------------------------------------------------------
// Die folgenden Angaben sollten nur geändert werden,
// wenn Nachricht nicht an das Ausgabeterminal weitergegeben wird
out.propagate(outAssembly);
} finally {
// clear the outMessage
outMessage.clearMessage();
}
}
}