У меня есть веб-приложение на одном сервере Glassfish (внешний интерфейс) и приложение EJB 3.1 (внутренний интерфейс) на другом сервере Glassfish. Веб-приложение связывается с EJB 3.1 через удаленный вызов.
Я хотел бы передать контекстные данные (то есть пользовательские данные), не определяя их как входной параметр каждой бизнес-операции.
У меня есть одна идея, но я не уверен, что она будет работать: используйте ThreadLocal для хранения данных, но ThreadLocal будет доступен только на одном сервере (то есть JVM) => используйте объект InvocationContext и создайте перехватчик для добавления пользовательских данных в карту ContextData .
Что вы думаете об этом? Любые другие идеи приветствуются! ; -)
UPDATE
После первого ответа я немного погуглил и нашел аннотацию @CallerPrincipal.
Как я могу установить этот объект перед удаленным вызовом?