2009-04-01 4 views
0

У меня есть различные EJB на J2EE-сервере с разными ролями безопасности.Могу ли я от клиента определить, какие EJB, которым разрешен текущий пользователь?

Теперь, из клиентского приложения Java Swing, когда я регистрирую пользователя на сервере, я хотел бы узнать, какие из этих EJB доступны для пользователя, не пытаясь их создать или вызвать.

Причина, по которой я хочу это сделать, - настроить пользовательский интерфейс в зависимости от того, какие EJB доступны.

Например, если EJB «AdministerMetadata» может использоваться текущим пользователем, я хочу, чтобы отобразить опции меню для управления метаданными и т.д.

Это приемлемо для меня запрос из предопределенного списка известных EJBs внутри клиента, поэтому мне не нужно, чтобы он был полностью динамичным.

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

Я планирую использовать решение на JBoss, но, если возможно, предпочтут стандартное решение.

Возможно ли это? Если да, то как?

ответ

1

Насколько я знаю, в J2EE нет ничего, что предоставило бы вам эту информацию на стороне клиента. Даже на стороне сервера EJBContext предоставит вам только роли, которыми владеет вызывающий, а также основной вызывающей стороны (например, имя пользователя).

Я не вижу другого способа, кроме как иметь дополнительный сеансовый компонент, который вы можете запросить на стороне клиента, и который будет проверять EJBContext на стороне сервера, чтобы сообщить клиенту, какие роли принадлежит текущему пользователю.

+0

Спасибо! Думаю, я мог бы прибегнуть к «попытке создать EJB и обработать исключение», чтобы узнать, какие EJB доступны (хотя это не скажет мне ничего о ограничениях доступа к конкретным методам) – Brummo