首页 > 解决方案 > 如何通过java中的rest服务获取用户ip

问题描述

嘿,伙计们,我在这里有一个小问题,在我的应用程序中,由于此实现,我设法获取用户 ip如何在 Primefaces Gmap 上标记用户的当前位置?它工作正常继承人我如何实现它:

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

标签: javarestpostman

解决方案


推荐阅读