boolean isPortRunning(AifInboundPort port)
{
str serviceTypeName, status;
boolean isPortStarted = false;
#Aif
if (port.Deployed)
{
serviceTypeName = strFmt('%1.%2', #DotNetServiceNamespace, port.Name);
// If the map is null, then the IL appDomain does not exist and services are not available
if (serviceStatusMap && serviceStatusMap.exists(serviceTypeName))
{
status = serviceStatusMap.lookup(serviceTypeName);
isPortStarted = strStartsWith(status, openedCommunicationStateName);
if (isPortStarted)
{
// A status for the listener is returned only for an MSMQ port
status = this.getMSMQListenerStatus(port.Name);
if (status != '')
{
// For an MSMQ port, the queue listener status should be checked too
isPortStarted = strStartsWith(status, openedCommunicationStateName);
}
}
}
}
return isPortStarted;
}
this line - if (serviceStatusMap && serviceStatusMap.exists(serviceTypeName))
serviceStatusMap doesn't contain my newly started/stopped service and therefore is shown as faulty on another AOS instance. isPortStarted is returned as false.
map is generated here
serviceStatusMap = appl.getServiceHostStatus();
it is called form executequery() method of the main form datasource inside method element.updateServiceHostStatus();
public void executeQuery()
{
super();
// Get the updated port status
element.updateServiceHostStatus();
}
This happens from time to time. Sometimes it works fine, I start/stop port on one AOS instance and then check the same form on another AOS instance and it looks good. I think this is glitch or bug. I don't understand why sometimes serviceStatusMap contains my newly stopped/started service and sometimes not. Also this happens with all ports. Not only with particular one.