Использование @RunAs в моих планировщиках EJB - PullRequest
3 голосов
/ 06 февраля 2011

У меня много EJB с моими бизнес-методами.Эти методы используют аннотацию @RolesAllowed, чтобы проверить, может ли пользователь выполнить этот метод.

Итак, у меня есть планировщик EJB, который вызывает эти методы EJB.Планировщики EJB работают с анонимным пользователем, поэтому авторизация не проходит.

Как я могу запустить свои планировщики с другой ролью?Для тестирования предлагается запустить аннотацию @RunAs ("SYSTEM"), но я не знаю, правильно ли это.

Мой класс планировщика

@RunAs("SYSTEM")
public class InboxScheduler {
    protected void inboxFileScan(Timer t) {
        receiptFilesService.receiptFiles();
    }
}

Мой класс EJB

@RolesAllowed("SYSTEM")
public void receiptFiles() {
    // do anything
}

1 Ответ

2 голосов
/ 07 марта 2011

Да, это правильное использование.

В разделе 12.3.4.1 спецификации EJB 3.2 говорится, что все методы вашего компонента (включая методы обратного вызова по тайм-ауту) будут иметь идентификатор, определенный в run-as.

Из спецификации: Идентификатор run-as применяется ко всему корпоративному компоненту, то есть ко всем методам бизнес-интерфейса, домашнего интерфейса и компонентов корпоративного компонента, нет-интерфейс и / или конечная точка веб-службы;к методам прослушивания сообщений bean-объекта, управляемого сообщениями;и к методам обратного вызова тайм-аута корпоративного компонента;и все внутренние методы bean-компонента, которые они могут вызывать в свою очередь.

...