/* Hook for creating session factory */ protected ClientSessionFactoryInternal createSessionFactory() throws Exception { if (targetNodeID != null && (this.reconnectAttemptsSameNode < 0 || retryCount <= this.reconnectAttemptsSameNode)) { csf = reconnectOnOriginalNode(); } else { serverLocator.resetToInitialConnectors(); csf = (ClientSessionFactoryInternal) serverLocator.createSessionFactory(); } // null here means the targetNodeIS is not available yet if (csf != null) { csf.setReconnectAttempts(0); } return csf; }
private ClientSessionFactoryInternal reconnectOnOriginalNode() throws Exception { String targetNodeIdUse = targetNodeID; TopologyMember nodeUse = targetNode; if (targetNodeIdUse != null && nodeUse != null) { TransportConfiguration[] configs = new TransportConfiguration[2]; // live and backup int numberOfConfigs = 0; if (nodeUse.getLive() != null) { configs[numberOfConfigs++] = nodeUse.getLive(); } if (nodeUse.getBackup() != null) { configs[numberOfConfigs++] = nodeUse.getBackup(); } if (numberOfConfigs > 0) { // It will bounce between all the available configs int nodeTry = (retryCount - 1) % numberOfConfigs; return (ClientSessionFactoryInternal) serverLocator.createSessionFactory(configs[nodeTry]); } } return null; }