Q. We are seeing strange behavior in this scenario where we register multiple listeners to a route point. We're trying to make sure our application works correctly, but it's hard to do without knowing the expected behavior from Cisco.
The basic outline of the code we're using to register is like this (there's more to it, but not extremely relevant):
JtapiPeer peer = JtapiPeerFactory.getJtapiPeer(null);
Provider ciscoProvider = peer.getProvider("ip;login=user;passwd=pass");
CiscoRouteTerminal ciscoTerm = (CiscoRouteTerminal) ciscoProvider.getTerminal(name);
We then add a callback thread to listen for JTAPI events (e.g., RouteEvent) and handle them.
CUCM web interface shows only one listener registered to the route point, even though there are two registered and both are receiving RouteEvents. However, when we disconnect the one listed, the display doesn't change. Since both listeners are receiving RouteEvents, both are sending selectRoute() commands.
Why are we only seeing one listener in the CUCM interface, even though there are two? Should we even be able to register both? If they both send selectRoute() commands (possibly different), what is the expected behavior? Does the PBX take whichever one was first?
You will see only one line open in this scenario and that is the expected behavior. Application can register multiple route call backs if it can handle them correctly. If more that one selectRoute() is done on the same call, we will see the first select Route succeeding and the second select route failing, This could also lead to unexpected behavior in some scenarios and should be avoided.
I want to clarify a couple of things, to make sure I understand the behavior and expectations correctly.
Q. We aren't just registering multiple route callbacks, we're actually calling ciscoRouteTerminal.register() from two different IP addresses. Yes, each RouteTerminal registration has a callback attached, but this seems like more than simply registering multiple callbacks to a single listener.
Also, what do you mean exactly by "you will see only one line open"? Does that refer to the fact that we see only one registration in the CUCM interface?
A. Same application will not be able to register the RP multiple times. You can do it from a different app or a different instance of the app as long as the capabilities in register are same. You will see only one registration on CUCM admin interface and that will not change even if first application is closed.
Ex: App1 registers Route terminal. CUCM admin page for this device shows the IPAddress of App1. App2 comes up and registers the Route Terminal. No change will be seen on CUCM admin. Close App1, CUCM admin will show the device in registered state and IPaddress of App1. Close App2, then CUCM admin will show device in unregistered state.