Esempio n. 1
0
  /* 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;
  }
Esempio n. 2
0
  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;
  }