Как продолжать запрашивать таблицу без многократного вызова веб-службы Ajax - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть этот запрос SQL, который используется в приведенном ниже коде.

SELECT STATUS FROM STATUS_CHECK WHERE uniqueuId = ?

Различные значения STATUS: NOT STARTED, RUNNING, COMPLETE, ERROR.

Мне нужно время от времени проверять значение STATUS и выполнять некоторые операции, как только я найду COMPLETE, и задаться вопросом, какой подход я должен использовать для достижения своей задачи.Любые идеи, в каком направлении я мог бы продолжить?

Прямо сейчас, в коде ниже, я вижу только NOT STARTED, и мой код завершается. И я не уверен, как проверить статус без повторного вызова веб-службы послекогда-нибудь, чтобы убедиться, что он изменился на COMPLETE, чтобы я мог выполнить с ним некоторые операции.

Допустим, у меня есть следующий контроллер, DAO и DAoImple, чтобы получить STATUS

Контроллер:

    @RequestMapping(value = "/statusCheck", method = RequestMethod.POST)
    public void statusCheck
     (
     @RequestParam(value = "id", defaultValue = "") String id

    ) {
    try {
       StatusDao sDao = (StatusDao) context.getBean("sDao");
       sDao.statusLookUp(id);
    } catch (Throwable th) {th.printStackTrace();}
   }

Объект доступа к данным (DAO):

public interface StatusDao {
    void statusLookUp(String id) throws DaoException;
}

DAO Impl:

public class StatusDaoImpl implements StatusDao {

     public void setDataSource(DataSource dataSource) {
      jdbcTemplate = new JdbcTemplate(dataSource);
     }


     @Override
     public void statusLookUp(String id) throws DaoException {

      DataSource ds = null;
      Connection conn = null;
      PreparedStatement pstmt = null;
      CallableStatement cStmt = null;
      ResultSet rs = null;

      try {
       ds = jdbcTemplate.getDataSource();
       conn = ds.getConnection();
       cStmt = conn.prepareCall("{call STATUS_RETRIEVER.GET_STATUS(?)}");
       cStmt.setString(1, id);
       cStmt.registerOutParameter(2, Types.VARCHAR);

       int uniqueId = cStmt.getInt(2);

       pstmt = conn.prepareStatement("SELECT STATUS FROM STATUS_CHECK WHERE uniqueuId=?");
       pstmt.setInt(1, uniqueId);
       rs = pstmt.executeQuery();
       rs.next();

       String status = rs.getString("STATUS");
       System.out.println("The status received is as follows:");
       System.out.println(status);

      } catch (Throwable th) {
       throw new DaoException(th.getMessage(), th);
      }
     }

}

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете попробовать планировать выполнение задачи каждую секунду или даже в миллисекундах в соответствии с вашими потребностями.J2EE и Spring Framework оба предоставляют функцию планирования заданий.Вы можете запланировать задачу с фиксированной задержкой или Запланировать задачу, используя выражения Cron.Проверьте здесь.

J2EE Scheduling

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...