Java MongoDB自动故障切换第二次不工作

Java MongoDB自动故障切换第二次不工作,java,mongodb,grails,Java,Mongodb,Grails,我正在使用MongoDB编译“org.grails.plugins:MongoDB:3.0.1”。目前,只有在我杀死MongoDB主实例时,自动故障切换才第一次起作用。在这种情况下,辅助设备成为主设备,应用程序能够读取数据。但是,当我再次扼杀新当选的初选和先前被扼杀的初选时,现在已经结束了。这意味着我又有了一次初选。在这种情况下,第二次故障切换无法通过MongoDB驱动程序进行。它抛出MongoServerSelectionException。我已经5天多没找到解决办法了。下面是我的java代码

我正在使用MongoDB
编译“org.grails.plugins:MongoDB:3.0.1”
。目前,只有在我杀死MongoDB主实例时,自动故障切换才第一次起作用。在这种情况下,辅助设备成为主设备,应用程序能够读取数据。但是,当我再次扼杀新当选的初选和先前被扼杀的初选时,现在已经结束了。这意味着我又有了一次初选。在这种情况下,第二次故障切换无法通过MongoDB驱动程序进行。它抛出
MongoServerSelectionException
。我已经5天多没找到解决办法了。下面是我的java代码

static{
            FileInputStream fis=null;

        try {
            /**** Get database ****/
            // if database doesn't exists, MongoDB will create it for you
            fis=new FileInputStream(GRMConstants.MONGODB_PROPERTY_FILE);
            properties=new Properties();
            properties.load(fis);

            String[] host=properties.getProperty("MONGODB_SERVER_ADDRESS").split(",");
            List<ServerAddress> server= new ArrayList<ServerAddress>();
            for(int i=0;i<host.length;i++){
            server.add(new ServerAddress(host[i],Integer.valueOf(properties.getProperty("MONGODB_PORT"))));
            }

            mongo = new MongoClient(server);
            databaseName=properties.getProperty("MONGO_DATABASE");
            //get database
            database=mongo.getDB(databaseName);     
        } catch (UnknownHostException ex) {
            log.error("UnknownHostException in MongoDBUtil while initilizing MongoDb server ...",ex);
        } catch (MongoException ex) {
            log.error("MongoException in MongoDBUtil while initilizing MongoDb server ...",ex);
        } catch (IOException e) {
            log.error("IOException in MongoDBUtil while initilizing MongoDb server ...",e);
        } catch (Exception e) {
            log.error("Exception in MongoDBUtil while initilizing MongoDb server ...",e);
        } finally {
            if(fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    log.error("Exception in MongoDBUtil while closing the input stream...", e);
                }
            }
        }
    }
静态{
FileInputStream fis=null;
试一试{
/****获取数据库****/
//若数据库不存在,MongoDB将为您创建它
fis=新文件输入流(GRMConstants.MONGODB_属性_文件);
属性=新属性();
属性。负载(fis);
String[]host=properties.getProperty(“MONGODB_服务器_地址”).split(“,”);
列表服务器=新建ArrayList();

对于(int i=0;i您有多少个节点?哪个mongodb版本?您的mongodb主机配置是什么样子的?我有三个节点。一个主节点、一个辅助节点和一个仲裁节点。我有mongodb 2.6,我的配置是
mongodb_服务器_地址=192.168.121.56192.168.121.58 mongodb_端口=27017
。此外,我在杀死时注意到了错误实例
需要来自集合“mongoReplica”的副本集成员,但从集合“null”中找到了一个副本集成员。正在从群集的客户端视图中删除grm2:27017
。谢谢