Можно ли имитировать подключение пользователя в Cron-задаче?

Рейтинг: 0Ответов: 1Опубликовано: 10.11.2014

Имеется сервлет, написанный с использованием Spring. Метод запускается по времени как CRON (тоже использует Spring Scheduler). Можно ли в этом методе создать как бы сессию с конкретным пользователем, чтобы создался поток с контекстом настроенным на этого пользователя с доступом к базе данных, а потом чтобы Cron-задача работала в этом контексте? Ну, как будто пользователь подключился и это для него все создалось.

Ответы

▲ 1

Передайте правильное имя-пароль пользователя для подключения к базе. Это уже решит 90% задачи.
Если Вы используете какой-то специфический клиент, который завязан на пользовательское окружение, поищите в его настройках возможность передать это самое окружение.
Если же он такой бедный и написан криво, то обычно помогает прописание переменной окружения PATH с правильными путями. Также крон позволяет задать имя пользователя, от которого запускается клиент.

Пример крон файла:

PATH=/home/pupkin/.program_config:$PATH

# m h dom mon dow user  command
 17 *  *   *   *  pupkin   cd / && ./super_proga

В некоторых случаях окружение настроено в .bash_rc. В этом случае достаточно просто его подгрузить при запуске задачи. Где-то так:

17 *  *   *   *  pupkin   source /home/pupkin/.bash_rc && cd / && ./super_proga