в нашем приложении мы используем JSF & EJB 3.0 (EclipseLink 2.0). Нам нужно использовать авторизацию прокси-сервера Oracle для каждого подключения в наших сессионных компонентах без состояния. Для этого нам нужно получить имя пользователя БД для подключения через прокси-сервер. Имя пользователя БД построено из аутентифицированного имени пользователя JSF по правилу.Как получить имя пользователя приложения JSF из сеанса сеанса без состояния
Вот статья на тему http://blogs.oracle.com/olaf/2010/04/using_oracle_proxy_authenticat.html
Таким образом, когда аутентифицированный пользователь называет JSF управляемого метод компонента, которое, в свою очередь, вызывает некоторые сессионный метод компонента его имя пользователя должно быть каким-то образом передается сессионного компонента.
Прямо сейчас у меня есть два не очень хороших решения: - передайте имя пользователя в качестве параметра в каждом сеансе bean-метода (не очень аккуратный, но он будет работать); - решение из вышеприведенной статьи: использовать переменную класса члена сеанса для хранения имени пользователя (небезопасного и потенциально опасного)
P.S. Я нашел решение, которое использует локальные переменные потока: _http: //www.adam-bien.com/roller/abien/entry/how_to_pass_context_with Он отлично работает, но все еще есть проблема. Мне нужно поставить текущее имя пользователя в каждый обработанный сеансом jsf сеанс перед каждым вызовом bean-компонента ejb, потому что он должен находиться в одном потоке.
Большое спасибо, Йорн. Ваше решение кажется мне очень аккуратным. P.S. Можете ли вы сказать мне, когда SessionContext не будет содержать имя текущего веб-уровня? – Andrey