Я новичок в JSF и бобах, и у меня есть ситуация, когда мне нужно получить некоторые данные из DB (oracle) и отобразить на консоли. мой первый компонент будет считывать данные из JSF и вызывать соответствующий метод во втором компоненте, а список с данными будет отправлен обратно в bean-компонент. на основе данных снова будет использоваться еще один метод во втором компоненте для дополнительных данных. наконец, данные будут опубликованы пользователю. мой второй компонент будет отвечать за соединения БД. вот мой код. первого боба,сохранение сессий в jsf и java beans
String ban = null,ban1 = null;
masterlist = (ArrayList<ThreadDTO>) getMbd().getBanOrCtn(dbean);
if (masterlist.isEmpty()) {
setSuccess(2);
return;
} else {
Iterator<ThreadDTO> itr = masterlist.iterator();
while (itr.hasNext()) {
ThreadDTO dto = (ThreadDTO) itr.next();
ban1 = dto.getWireless_ban();
if (ban1 != null) {
ban = ban1;
break;
}
}
ctnThreadList = (ArrayList<ThreadDTO>) getMbd().getThreads(dbean);
dbean.setSearchby("wireless_ban");
dbean.setSearchValue(ban);
banThreadList = (ArrayList<ThreadDTO>) getMbd().getThreads(dbean);
masterlist.clear();
masterlist = (ArrayList<ThreadDTO>) getMbd().removeDuplicates( ctnThreadList, banThreadList);
setResultlist((ArrayList<ThreadDTO>) getMbd().getApis(masterlist));
}
Второй Бин,
public ArrayList<ThreadDTO> getBanOrCtn(SearchDetailsDTO db) throws Exception {
ArrayList<ThreadDTO> threadlist1 = new ArrayList<>();
//query here
try {
connection = getConnections(timeZone);//getting connection
stmt = connection.createStatement();
rs = stmt.executeQuery(banQuery);
if (!rs.isBeforeFirst()) {
System.out.println("empty resultset");
stmt.close();
rs.close();
connection.close();
} else {
while (rs.next()) {
ThreadDTO thread = new ThreadDTO();
//code to set the values
break;
}
}
} catch (SQLException sql) {
addErrorMessage(sql.getMessage());
}
return threadlist;
}
это не может быть хорошей практикой кодирования, однако это работает нормально для одного пользователя, но мое требование должно быть доступен нескольким пользователям. может ли кто-нибудь рассказать мне, как я могу это достичь. Заранее спасибо.
Спасибо за ваш быстрый ответ. Я все еще получаю ошибку ExhaustedResultSet и закрытую ResultSet. но это должно быть дифференцировано правом сеанса? PLS, дайте мне знать, как пройти эту ошибку. –