【发布时间】:2016-09-25 00:07:36
【问题描述】:
我创建了一个企业应用程序项目,其中包含一个 EJB 项目和一个 Web 项目,它运行良好。现在我想在 EJB 项目中获取远程客户端的 IP 地址,以用于我的应用程序中的一些逻辑。我尝试在 Web 部件中创建一个上下文类,如下所示:
Context.java
public class Context {
private static ThreadLocal<Context> instance = new ThreadLocal<Context>();
private HttpServletRequest request;
private Context(HttpServletRequest request) {
this.request = request;
}
public static Context getCurrentInstance() {
return instance.get();
}
public static Context newInstance(HttpServletRequest request) {
Context context = new Context(request);
instance.set(context);
return context;
}
public HttpServletRequest getRequest() {
return request;
}
}
从 EJB 中的类我尝试调用上下文类:
public String setIPAddress() {
HttpServletRequest request = Context.getCurrentInstance().getRequest();
String remoteIPAddress = request.getRemoteAddr();
return remoteIPAddress;
}
我的问题是我不能从 EJB 类调用 context.java,如果我在 EJB 部分中包含类上下文,我会得到 NullPointerException。我还尝试将 Web 项目包含在 EJB 项目属性中,但出现错误“无法添加循环引用”。我正在使用 Netbeans。这种情况下如何获取远程IP地址?
【问题讨论】:
标签: java servlets jakarta-ee ejb ip-address