0
我需要在驗證過程中捕獲錯誤(如錯誤的參數)。我對此一無所知。我用線程分解了這個過程。但是,隨着這種糟糕的方式,用戶可以不懂什麼不順心如何處理從Hibernate應用程序到MongoDB的身份驗證
下面,我的代碼:
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;
}
的問題是,當我插入撥錯參數,它會拋出MongoSecurityException。但我無法抓住它,我只能在監視器線程上閱讀它。有任何想法嗎?
問題是如果參數錯誤,logThread不會停止。這就是爲什麼我創造了超時線程! –