if (nameLen > maxNameLength) {
maxNameLength = nameLen;
}
// Create a proxy object to the Service Info MBean
ServiceInfoMBean infoMBeanProxy = getServiceInfoMBean(names, key);
key = key.substring(key.indexOf(",name=") + ",name=".length());
// Create a proxy to the service CasPool object.
CasPoolManagementImplMBean casPoolMBeanProxy = null;
// Get Service CAS Pool MBean Proxy. This only make sense for top level service.
// This is a Cas Pool for deserializing CASes from remote clients
if (infoMBeanProxy.isTopLevel()) {
if (infoMBeanProxy.isAggregate()) {
casPoolMBeanProxy = getServiceCasPoolMBean("AggregateContext", names);
} else {
casPoolMBeanProxy = getServiceCasPoolMBean("PrimitiveAEService", names);
}
}
StatEntry entry = null;
if (casPoolMBeanProxy != null) {
entry = new StatEntry(perfMBeanProxy, infoMBeanProxy, casPoolMBeanProxy);
} else {
entry = new StatEntry(perfMBeanProxy, infoMBeanProxy);
}
String location = "Collocated";
// If a service is co-located in the same JVM fetch the service queue proxy
if (infoMBeanProxy.getBrokerURL().startsWith("Embedded Broker")) {
// Get Co-located CM Cas Pool
if (infoMBeanProxy.isCASMultiplier()) {
// Create a proxy to the Cas Multiplier CasPool object.
CasPoolManagementImplMBean casPoolMBean =
getServiceCasPoolMBean(infoMBeanProxy.getCmRegisteredName(), names);
if (casPoolMBean != null) {
entry.setCasPoolMBean(casPoolMBean);
}
}
// Create a proxy to the service queue MBean
UimaVmQueueMBean queueProxy = getQueueMBean(mbsc, infoMBeanProxy.getInputQueueName());
if (queueProxy != null) {
entry.setInputQueueInfo(queueProxy);
}
UimaVmQueueMBean replyQueueProxy = getQueueMBean(mbsc, infoMBeanProxy.getReplyQueueName());
if (replyQueueProxy != null) {
entry.setReplyQueueInfo(replyQueueProxy);
}
} else {
// The MBean is for a remote service. Connect to this service Broker and create a proxy
// to an input queue for the service. Assumption: the broker registers JMX server on
// port 1099.
location = "Remote";
int spos = infoMBeanProxy.getBrokerURL().indexOf("//");
int endpos = infoMBeanProxy.getBrokerURL().lastIndexOf(":");
String remoteHostname = infoMBeanProxy.getBrokerURL().substring(spos + 2, endpos);
if (verbose)
System.out.println("Connecting to a remote JMX Server: " + remoteHostname + " key:"
+ key);
String remoteJMX = "service:jmx:rmi:///jndi/rmi://" + remoteHostname + ":1099/jmxrmi";
MBeanServerConnection remoteServer = getServerConnection(remoteJMX);
QueueViewMBean inputQueueProxy = getQueueMBean(remoteServer, infoMBeanProxy
.getInputQueueName(), uimaServiceQueuePattern);
if (inputQueueProxy != null) {
entry.setInputQueueInfo(inputQueueProxy);
} else {
System.out.println("Unable to find Input Queue:" + infoMBeanProxy.getInputQueueName()
+ " In JMX Registry:" + remoteJMX);
}
QueueViewMBean replyQueueProxy = null;
if (infoMBeanProxy.isAggregate()) {
replyQueueProxy = getQueueMBean(mbsc, infoMBeanProxy.getReplyQueueName(),
uimaServiceQueuePattern);
} else {
replyQueueProxy = getQueueMBean(remoteServer, infoMBeanProxy.getReplyQueueName(),
uimaServiceTempQueuePattern);
}
if (replyQueueProxy != null) {
entry.setReplyQueueInfo(replyQueueProxy);
} else {
System.out.println("Unable to find Reply Queue:" + infoMBeanProxy.getReplyQueueName()
+ " In JMX Registry:" + remoteJMX);
}
}
if (verbose)
System.out.println("\nUIMA AS Service:" + key + "[>>> " + location
+ " <<<]\n\tService Broker:" + infoMBeanProxy.getBrokerURL() + "\n\tQueue Name:"
+ infoMBeanProxy.getInputQueueName());
serviceCount++;
stats.put(name, entry);
}