【发布时间】:2018-10-05 02:54:12
【问题描述】:
我有一个包含 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 私有 EJBContext ejbContext;
在 MyContainerRequestFilter - 然后 ejbContext = null;
所以,在我的例子中
applicationService.getEJBContext().getContextData() - NullPointerException
告诉我怎么了?有什么想法我可以做到吗?
谢谢!
【问题讨论】:
标签: jakarta-ee ejb