嘿,我在这里有一个小问题,在此应用程序中,我通过how to mark user's current location on Primefaces Gmap?的使用设法使用户获得IP地址。在这里,我的实现方法很好:
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext externalContext = context.getExternalContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
String ip = request.getRemoteAddr();
System.out.println("ip: " + ip);
问题在于,现在我需要做同样的事情,但是在休息服务中,但是在休息服务中,我无法获得FacesContext
,所以我无法获得ExternalContext
,因此继续...您知道如何通过休息服务实现相同目标吗?我尝试了这个:
Accessing FacesContext from Web Service
但是没有运气,这就是我目前正在使用POSTMAN测试服务的内容:
@POST
@Path("/test")
public void test() {
ServletContext servletContext = (ServletContext) context;
HttpServletRequest request = (HttpServletRequest) servletContext;
String ip = request.getRemoteAddr();
System.out.println("ip: " + ip);
}
这是我声明上下文变量的方式:
@Resource
WebServiceContext context;
第二个代码未通过HttpServletRequest request = (HttpServletRequest) servletContext;
,它给了我错误
Caused by: java.lang.ClassCastException: org.jboss.ws.common.injection.ThreadLocalAwareWebServiceContext cannot be cast to javax.servlet.ServletContext