2013-11-11 3 views
5

Я хочу получать обновления баз.Чтобы получать обновления базы данных с помощью сервлетов или jsp

i.e Если какие-либо изменения произошли с базой данных или вставлена ​​новая запись, она должна уведомить пользователя.

До знать, что я реализовал это с помощью JQuery, как показано ниже

$(document).ready(function() { 

    var updateInterval = setInterval(function() { 

     $('#chat').load('Db.jsp?elect=<%=emesg%>'); 

    },1000); 

}); 

Он работал хорошо для меня, но мой учитель сказал мне, что это не очень хороший способ сделать рекомендуется использовать комету или длинную технологию опроса ,

Может ли кто-нибудь дать мне примеры для получения обновлений базы данных с использованием кометы или длинного опроса в сервлетах/jsp? Я использую Tomcat в качестве сервера.

+0

[Этот ответ] (http://stackoverflow.com/a/12855533/685760) имеет довольно хороший пример технологий push, таких как длительный опрос. –

ответ

2

Просто сделайте снимок в темноте, так как я не знаю вашей точной окружающей среды ... Вы можете заставить триггер базы данных вызвать вызов сервлета каждый раз, когда будет зафиксирована строка, которая затем запускает некоторый код, который выглядит как следующее:

Получить сеансы сценариев, которые активны для страницы, которую мы хотим обновить. Это устраняет необходимость проверять каждый сеанс скрипта ajax, который выполняется на сайте. После того, как у нас есть сеансы сценариев, мы можем использовать второй блок кода, чтобы взять некоторые данные и обновить таблицу на стороне клиента. Все, что делает вторая секция кода, - это отправить javascript клиенту, который будет выполнен через обратное соединение ajax, которое открыто.

String page = ServerContextFactory.get().getContextPath() + "/reverseajax/clock.html"; 
     Browser.withPage(page, new Runnable() { 
      public void run() { 
       Util.setValue("clockDisplay", output); 
      } 
     }); 



    // Creates a new Person bean. 
       Person person = new Person(true); 
       // Creates a multi-dimensional array, containing a row and the rows column data. 
       String[][] data = { 
        {person.getId(), person.getName(), person.getAddress(), person.getAge()+"", person.isSuperhero()+""} 
       }; 
       // Call DWR's util which adds rows into a table. peopleTable is the id of the tbody and 
       // data conta 

ins the row/column data. 
       Util.addRows("peopleTable", data); 

Обратите внимание, что оба указанных выше участков кода вырываются прямо из примеров документации @http://directwebremoting.org/dwr-demo/. Это лишь простые примеры того, как обратный ajax может отправлять данные клиенту, но ваша точная ситуация, похоже, больше зависит от того, как вы получаете уведомление, чем о том, как вы обновляете экран клиента.

Без какого-либо уведомления о появлении базы данных в Java-коде, я думаю, вам придется опросить систему с установленными интервалами. Вы можете сделать систему более эффективной даже при опросе, проверив, что для опроса базы данных для опроса базы данных для опроса базы данных есть обратные сеансы сценария ajax.

Смежные вопросы