Здравствуйте, leokom, Вы писали:
L>Еще интересно (ну это уже другая тема) так как это stateless-bean то вполне возможно что строка
L>L> private static final Logger logger = Logger.getLogger(TestFacadeBean.class);
L>
L>будет выполняться при каждом вызове через локальный интерфейс (так как EJB контейнер не гарантирует сохранение инстанса stateless-бинов между двумя вызовами!)
Оно же статик при чем тут инстанс?
Доброго времени суток ...
Есть Facade — EJB Stateless Bean:
@Stateless(name = "TestFacade")
public class TestFacadeBean implements TestFacade, TestFacadeLocal {
private static final Logger logger = Logger.getLogger(TestFacadeBean.class);
public void hello() {
logger.info("Hello world");
}
}
Есть Web слой с фильтром:
public class AuthFilter implements Filter {
private FilterConfig filterConfig = null;
private static final Logger logger = Logger.getLogger(AuthFilter.class);
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) {
MDC.put("user", getAuthUser());
}
}
Веб приложение общается с EJB посредством локального интерфейса TestFacadeLocal...
Логгирование идет по каждому пользователю %X{user} ...
Так вот вопрос — не будут ли смешиваться логи разных пользователей?
Y>Так вот вопрос — не будут ли смешиваться логи разных пользователей?
MDC работает на уровне потоков. Так что если запросы будут обрабатываться в разных потоках — смеси не будет. Ну а если в одном — думаю будет. Вот как это контролировать — не знаю.
Еще интересно (ну это уже другая тема) так как это stateless-bean то вполне возможно что строка
private static final Logger logger = Logger.getLogger(TestFacadeBean.class);
будет выполняться при каждом вызове через локальный интерфейс (так как EJB контейнер не гарантирует сохранение инстанса stateless-бинов между двумя вызовами!)
L>>L>> private static final Logger logger = Logger.getLogger(TestFacadeBean.class);
L>>
GIV>Оно же статик при чем тут инстанс?
Согласен я был неправ, статик не заметил.
Эт видимо потому что под влиянием статьи про антипаттерны
http://www.odi.ch/prog/design/newbies.php#22
я всегда создаю logger как член инстанса а не статический (кроме утилитных классов).