powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Реализация двух приложений, обменивающиеся информацией, ип работающие в разных потоках?
2 сообщений из 2, страница 1 из 1
Реализация двух приложений, обменивающиеся информацией, ип работающие в разных потоках?
    #34167986
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток!

Есть сервлет TestQueue , он запускается ActivationServlet , который принимает строку из браузера и передает определенные параметры TestQueue .
Он их обрабатывает и в случае (не)успеха добавляет записи в БД. И сразу же просматривает БД на наличие неуспешных обработок и пытается провесит ее сразу.

Проблема в следующем: если в момент добавления записи в БД пропадает связь, данныве не добавляются.Если обработка прошла успешн, это не старшно, но елси не успешно - информация теряется....


Вопрос: как можно реализовать следующее - класс TestQueue все записи об обработках складывает в какую-то очередь (массив, класс Vector etc.), а другой поток раз в 15-20 минут просматривает эту очередь, и записывает всю информацию в БД и чистит очередь, а если связи нет с БД, повторяет свою попытку еще раз.




Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
 import  javax.servlet.*;
 import  javax.servlet.http.*;
 import  java.io.IOException;
 import  java.io.PrintWriter;

 public   class  ActivationServlet  extends  HttpServlet {
     private  TestQueue squeue;

     public   void  init(){
        squeue = TestQueue.getInstance();
    }

     public   void  destroy(){
    }

     public   void  doGet(HttpServletRequest request, HttpServletResponse response)
     throws  ServletException, IOException
    {
        doPost(request, response);
    }

     public   void  doPost(HttpServletRequest request, HttpServletResponse response)
     throws  ServletException, IOException
    {
        request.setCharacterEncoding("cp1251");
        // Set to expire far in the past.
        response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT");
        // Set standard HTTP/1.1 no-cache headers.
        response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
        // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
        response.addHeader("Cache-Control", "post-check=0, pre-check=0");
        // Set standard HTTP/1.0 no-cache header.
        response.setHeader("Pragma", "no-cache");
        response.setContentType("text/html");

        String serviceName    = request.getParameter("someParam");
        //передача параметров в вызываемый экземпляр TestQueue
        squeue.TakeParams(serviceName,msisdn,smsText,chargingId,chargingMethod);
    }
}

Указанный класс TestQueue :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
 import  java.sql.*;

 public   class  TestQueue  extends  Thread{
...
     public   boolean  isQueueUpdated = false;
...
     public  TestQueue(String interval){
         super ("TestQueue");
        setDaemon(true);
        doStop = false;
        TestQueue =  this ;

         try {
            sleepTime = Integer.parseInt(interval);//установленное кол-во секунд для паузы
        }  catch  (Exception e){          
            sleepTime =  60  *  1000 ; // setting 1min = 60 seconds default
        }

        start();
    }

      public   void  run(){
     ......
      //------------ main loop
         while (!doStop){
             if  (isQueueUpdated) {
     .................................
          }//if (isQueueUpdated)
        }//while(!doStop){
     ............
     }//end run()


     public   static  TestQueue getInstance(){
         if  (testQueue !=  null ){
             return  testQueue;
        }
        testQueue =  new  TestQueue(Integer.toString(sleepTime));
         return  testQueue;
    }

     public   void  TakeParams(String someParam, .....){
         this .someParam   = someParam;
        .......
         this .isQueueUpdated = true;
    }

.......
}



С уважением, Ihor
...
Рейтинг: 0 / 0
Реализация двух приложений, обменивающиеся информацией, ип работающие в разных потоках?
    #34168543
foo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
foo
Гость
Посмотрите в сторону

java.util.Timer и java.util.TimerTask
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Реализация двух приложений, обменивающиеся информацией, ип работающие в разных потоках?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]