Вопрос

Попытка найти подход для выполнения некоторого регулярного хранения домов на сервере рабочей силы. Упрощенный сценарий:

У нас есть адаптер, разговаривая с задней системой. Когда пользователь аутентифицируется с рабочим средством, они создают некоторые учетные данные, которые передаются на задневший на каждом сервисном вызове. Эти учетные данные могут стать устаревшей, если не используется в течение определенного периода времени. Следовательно, мы хотим, это «сердцебиение» для всех активных сессий. У меня есть объект Singleton Java, в котором я заметил учетные данные, когда пользователь аутентифицируется, то, что я хочу сделать, это иметь какой-то фоновый работник, чтобы повторять список учетных данных и сделать сердцебиение для сервера.

Я в конечном итоге с методами адаптера, как это

  // in business service adapter

  businessMethod(){
       make service call using credentials from user's Worklight session
  }


  // in authentication adapter, normal adapter authentication methods and a heartbeat

  authentication(){
        get back-end credentials
        store credentials in user's session
        stash credentials in singleton
  }

  // how do we cal this heartbeat every x min
  heartbeat(){
        for each credential in singleton stash
            make heartbeat call to server keeping credential alive
  }
.

Вопрос в том, как мы запускаем это сердцебиение. Я пытался использовать Java Timetask, которая почти работает. Я могу договориться о том, что Java Timetask позвонит моему сердцу. Проблема в том, что при работе под TimetArk у нас нет нормальной серверной среды рабочей силы, вызовы на WL.Server.invobleProcedure () бросают исключения, и думая об этом, кажется, вряд ли у меня будет доступ к нормальному рабочему свету API эффективно инородная нить.

Мы используем рабочий свет 6.1, развертывание на сервере WebSphere Liberty. В настоящее время я могу придумать, это написать некоторое внешнее мини-приложение или сценарий оболочки, который периодически вызывает метод сердцебиения ().

Любые лучшие предложения?

Это было полезно?

Решение

Я не уверен, что сердцебиение Backend - это хорошая идея, более того, это звучит как возможное охраняемое отверстие.Вы должны настроить ваш WL Server и Timeouts Sessions.

Что касается ответа на реальный вопрос - вы можете использовать Eventersource для создания фоновой задачи.Смотрите здесь - https://www.ibm.com/developerworks / community / блоги / рабочий свет / запись / configurging_a_polling_event_source_to_send_push_notifications? lang= ru

Другие советы

Дэвид, я не совсем уверен, что решат ваш вопрос напрямую, так как я не уверен, вы стремитесь ли вы только для сердца, или хотите ли вы сделать кальстраю работу на слое адаптера, когда сердцебиениеполучен (вы можете уточнить немного больше о базовой цели?);Но знаете ли вы, что сам рабочий свет имеет встроенное сердцебиение концепции?Вы настраиваете его со значением HeartbeativIntervalInsec в рамках вызова WL.cClient.init () .Смотрите Документация для получения дополнительной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top