Фоновая работа в сервере рабочей силы
-
20-12-2019 - |
Вопрос
Попытка найти подход для выполнения некоторого регулярного хранения домов на сервере рабочей силы. Упрощенный сценарий:
У нас есть адаптер, разговаривая с задней системой. Когда пользователь аутентифицируется с рабочим средством, они создают некоторые учетные данные, которые передаются на задневший на каждом сервисном вызове. Эти учетные данные могут стать устаревшей, если не используется в течение определенного периода времени. Следовательно, мы хотим, это «сердцебиение» для всех активных сессий. У меня есть объект 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 в рамках вызова