У меня есть метод Java с одним для цикла.Цикл повторяет более тысячи данных, и это занимает много времени.В этом случае я хочу показать состояние выполнения конечным пользователям моей программы.
Я использовал JProgressBar
с JFrame
, но это работает только тогда, когда программа работает на локальном компьютере.Когда я развертываю приложение на удаленном сервере (производственном сервере) и запускаю его, индикатор выполнения не появляется.
Ниже мой метод:
public List<EmployeeDetail> getEmployeeDetail(HttpServletRequest request, HttpServletResponse response, String org) {
List<EmployeeDetail> employeeDetailList = new ArrayList<EmployeeDetail>();
List<Employee> employeeList = getEmployee(org);
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
String query = "SELECT EMPLOYEE_NUMBER, START_DATE " + " FROM EMPLOYEE_HISTORY_TABLE "
+ "WHERE EMPLOYEE_NUMBER =?";
DatabaseConnection dbConnection = new DatabaseConnection();
// --progress bar starts---
// Create frame for dialog box
JFrame frame = new JFrame("searching data...");
// creates progress bar
final JProgressBar pb = new JProgressBar(0, EmployeeList.size());
pb.setStringPainted(true);
// add progress bar
frame.setLayout(new FlowLayout());
frame.getContentPane().add(pb);
frame.setSize(300, 200);
frame.setVisible(true);
int counterForProgressBar = 0;
for (Employee Employee : EmployeeList) {
try {
con = dbConnection.getConnectionDetails();
// --Progress bar continues--
final int currentValue = counterForProgressBar;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
pb.setValue(currentValue);
}
});
java.lang.Thread.sleep(100);
// --Progress bar ends---
String firstName = Employee.getFirstName();
String lastName = Employee.getLastName();
String personNumber = Employee.getPersonNumber;
st = con.prepareStatement(query);
st.setString(1, personNumber);
rs = st.executeQuery();
while (rs.next()) {
String employee_number = rs.getString("EMPLOYEE_NUMBER");
Date START_DATE = rs.getDate("START_DATE");
EmployeeDetail employeeDetail = new EmployeeDetail(firstName, lastName, employee_number, START_DATE);
employeeDetailList.add(employeeDetail);
}
counterForProgressBar++;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
con.close();
st.close();
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// When data search process completes close the progress bar
frame.dispose();
return employeeDetailList;
}
Не могли бы вы помочь мне, как показать индикатор выполнения / статус в этом случае?Заранее спасибо!