Hi there.
I'm currently working on a clustered WLI environment which comprehends 3 servers: 1 admin server ("AdminServer
") and 2 managed servers ("mn1
" and "mn2
") grouped as a cluster, as follows:
Architecture diagram:
I've developed a JPD process to execute some scheduled tasks, invoked using a Message Broker. I've deployed this project into a single-server WLI domain (with AdminServer
only) and it works as expected: the JPD process is invoked (I've configured a Timer Event Generator instance to start it up).
Message broker:
Timer event generator:
In order to achieve fail-over and load-balancing capabilities, I'm currently trying to deploy this JPD process into this clustered WLI environment. Although, I'm having some issues with this, as I cannot get it to work properly, even if it still works.
Here is a screenshot of the "WLI Process Instance Monitor" (with AdminServer
and mn1
instances up and running):
According to this screen the process seems to be running, as it shows in this instance monitor screen. However, I don't see any output coming out neither at AdminServer
console or mn1
console. In single-server domain it was visible output from JPD process "timeout" callback method, wich implementation is shown below:
@com.bea.wli.control.broker.MessageBroker.StaticSubscription(xquery = "", filterValueMatch = "", channelName = "/SamplePrefix/Samples/SampleStringChannel", messageBody = "{x0}")
public void subscription(java.lang.String x0) {
String toReturn="";
try {
Context myCtx = new InitialContext();
MBeanHome mbeanHome = (MBeanHome)myCtx.lookup("weblogic.management.home.localhome");
toReturn=mbeanHome.getMBeanServer().getServerName();
System.out.println("**** executed at **** " + System.currentTimeMillis() + " by: " + toReturn);
}
catch (Exception e) {
System.out.println("Exception!");
e.printStackTrace();
}
}
(...)
@org.apache.beehive.controls.api.events.EventHandler(field = "myT", eventSet = com.bea.control.WliTimerControl.Callback.class, eventName = "onTimeout")
public void myT_onTimeout(long time, java.io.Serializable data) {
// #START: CODE GENERATED - PROTECTED SECTION - you can safely add code above this comment in this method. #//
// input transform
System.out.println("**** published at **** " + System.currentTimeMillis());
publishControl.publish("aaaa");
// parameter assignment
// #END : CODE GENERATED - PROTECTED SECTION - you can safely add code below this comment in this method. #//
}
and here is the output visible at "AdminServer" console in single-server domain testing:
**** published at **** 1273238090713
**** executed at **** 1273238132123 by: AdminServer
**** published at **** 1273238152462
**** executed at **** 1273238152562 by: AdminServer
(...)
What may be wrong with my clustered configuration? Am I missing something to accomplish clustered deployment?
Thanks in advance for your help.