synchronized (AppContext.communicatorsLock) {
// get communicator lock - avoids interference with other clients or scServers
AppContext.init();
this.requester.getSCMPMsgSequenceNr().reset();
SCMPRegisterServerCall registerServerCall = new SCMPRegisterServerCall(requester, this.serviceName);
registerServerCall.setMaxSessions(this.maxSessions);
registerServerCall.setMaxConnections(this.maxConnections);
registerServerCall.setPortNumber(this.tomcatPort);
registerServerCall.setImmediateConnect(false);
registerServerCall.setKeepAliveIntervalSeconds(keepAliveFromSCSeconds);
registerServerCall.setCheckRegistrationIntervalSeconds(this.checkRegistrationIntervalSeconds);
registerServerCall.setVersion(SCMPMessage.SC_VERSION.toString());
registerServerCall.setLocalDateTime(DateTimeUtility.getCurrentTimeZoneMillis());
registerServerCall.setUrlPath(this.urlPath);
SCServerCallback callback = new SCServerCallback(true);
try {
registerServerCall.invoke(callback, Constants.DEFAULT_OPERATION_TIMEOUT_SECONDS * Constants.SEC_TO_MILLISEC_FACTOR);
} catch (Exception e) {
throw new SCServiceException("Register server failed. ", e);
}
SCMPMessage reply = callback.getMessageSync(Constants.DEFAULT_OPERATION_TIMEOUT_SECONDS
* Constants.SEC_TO_MILLISEC_FACTOR);