Disconnected

Hi all,

I would like to learn your opinions on how to detect TServer disconnect (or communication failure with TServer) for Protocol Management Service Implementation.

Using the following code segment, I get connected to the TServer:

		

		this.ctiServerConfiguration = new TServerConfiguration(
				EventCollectorConfig.getInstance().getConf().getCTI()
						.getAppName());
		this.ctiServerConfiguration.setUseAddp(true);
		this.ctiServerConfiguration.setAddpServerTimeout(10);
		this.ctiServerConfiguration.setAddpClientTimeout(10);
		this.ctiServerConfiguration.setClientName("EVENT_AGG_SERV");
                
               		URI ctiURI = null;

		try {
			ctiURI = new URI("tcp://"
					+ EventCollectorConfig.getInstance().getConf().getCTI()
							.getHost()
					+ ":"
					+ EventCollectorConfig.getInstance().getConf().getCTI()
							.getPort());
			this.ctiServerConfiguration.setUri(ctiURI);
		} catch (URISyntaxException e) {
			throw e;
		}

		this.pmsi = new ProtocolManagementServiceImpl();
		this.pmsi.register(this.ctiServerConfiguration);

		// Initialize event broker
		mEventBrokerService = BrokerServiceFactory.CreateEventBroker(pmsi

		mEventBrokerService.activate();

		// Open connection with T-Server:
		try {
			this.pmsi.getProtocol(
					EventCollectorConfig.getInstance().getConf().getCTI()
							.getAppName()).open();
			logger.info("[GenesysAsynchEventReceiver][Open][Event Broker Service is active and open]");

		} catch (ProtocolException e) {
			throw e;
		} catch (IllegalStateException e) {
			throw e;
		} catch (InterruptedException e) {
			throw e;
		} catch (Exception e)
		{
			throw e;
		}

Thank you in advance.

Regards,

Ali

Since you are using ProtocolManagementServiceImpl you can add a ChannelListener to it.

a ChannelListener must implement

public interface ChannelListener extends Listener {

public abstract void onChannelOpened(EventObject eventobject);

public abstract void onChannelClosed(ChannelClosedEvent channelclosedevent);

public abstract void onChannelError(ChannelErrorEvent channelerrorevent);

}

this.pmsi.addChannelListener(channelListener);

that should alert you of some disconnections.

You can also catch exceptions when making request to the TServer, which sometimes mean that the protocol is disconnected.

try {
this.tServerProtocol.send(request);
return uniqueId;
}
catch (ProtocolException protocolException)
{
if (“Connection is not opened”.equals(protocolException.getMessage())) {
//YOU ARE DISCONNECTED
}
}

Also listen to the EventLinkDisconnected event.

Dear gstkein,

Thank you very much. This is what I am looking for.

Cheers,

Ali