如何从Hibernate应用程序处理对Mongo数据库的身份验证

时间:2017-06-28 10:17:49

标签: mongodb hibernate authentication hibernate-ogm

我需要在身份验证期间捕获错误(例如错误的参数)。 我一无所知。 我用线程来调用程序。但是用这种糟糕的方式,用户无法理解出了什么问题

下面,我的代码:

public static boolean access(String db, String ip, String usr, String pwd){
    Map<String, String> persistenceMap = new HashMap<>();

    persistenceMap.put("hibernate.ogm.datastore.database", db);
    persistenceMap.put("hibernate.ogm.datastore.host", ip);
    persistenceMap.put("hibernate.ogm.datastore.username", usr);
    persistenceMap.put("hibernate.ogm.datastore.password", pwd);

    Thread mainThread = Thread.currentThread();
    Thread logThread = new Thread(() -> {
        Connection.EMF = Persistence.createEntityManagerFactory("ogm-jpa-mongo", persistenceMap);
        Connection.EM = Connection.EMF.createEntityManager();
        Connection.isOpen = true;
    });
    Thread timeOut = new Thread( () -> {
        try{ Thread.sleep( 5000 ); }
        catch(InterruptedException ex){ }
        mainThread.interrupt();
    });


    logThread.start();
    timeOut.start();

    try{ logThread.join(); }
    catch(InterruptedException ex){ return false; }

    Connection.TM = com.arjuna.ats.jta.TransactionManager.transactionManager();

    return Connection.isOpen;
}

1 个答案:

答案 0 :(得分:0)

如果凭据错误,则会抛出org.hibernate.HibernateException

此异常的原因包含mongodb返回的详细信息,这是弄清楚发生了什么的唯一方法。