У меня есть проект с 2 модулями: Отдых и Сервис.Мне нужен клиентский IP в сервисном модуле, но я могу получить его только в модуле Rest из запроса.Я думаю об использовании EJBContext.getContextData () для предоставления этого IP в другом модуле.
В состоянии покоя я создаю:
@Provider
@ApplicationScoped
public class MyContainerRequestFilter implements ContainerRequestFilter {
@Context
private HttpServletRequest servletRequest;
@Inject
private ApplicationService applicationService;
@Override
public void filter(ContainerRequestContext requestContext) {
try {
applicationService.getEJBContext().getContextData().put("ipAddress", servletRequest.getRemoteAddr());
applicationService.getEJBContext().getContextData().put("ipHost", servletRequest.getRemoteHost());
} catch(Exception ingnore) {
}
}
}
@LocalBean
@Stateless
public class ApplicationService {
@Resource
private EJBContext ejbContext;
public EJBContext getEJBContext() {
return ejbContext;
}
}
Если я использую
@ Resource private EJBContext ejbContext;
в MyContainerRequestFilter - затем ejbContext = null;
Итак, в моем примере
applicationService.getEJBContext().getContextData() - NullPointerException
Скажите, что не так?Есть идеи, как мне это сделать?
Спасибо!