有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取调用我的JAXRS rest Web服务的客户端的主机名

我已经在JAX-RS Jersey开发了我的rest服务。我已经在Tomcat 7.0中部署了。现在我将我的web服务URL公开给第三方客户端。我想使用验证机制,包括获取主机名,即使用我的服务的客户端主机名。我想匹配我们数据库输入的主机名。如何获取客户端的主机名

这是我的网站。xml:

<servlet>
    <servlet-name>ServletAdaptor</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletAdaptor</servlet-name>
        <url-pattern>/intellixservices/*</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>secureRESTFilter</filter-name>
        <filter-class>com.astroved.intellix.security.SecurityFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>secureRESTFilter</filter-name>
        <url-pattern>/intellixservices/*</url-pattern>
    </filter-mapping>

现在我正在创建一个实现过滤器的SecurityFilter类。内部doFilter()方法-

@Override
public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpReq = (HttpServletRequest) req;
    HttpServletResponse httpRes = (HttpServletResponse)res;
    String url = "http://localhost:8888/IntellixWebApi/intellixservices/dnareport";
    System.out.println("In security filter");
    req.getRequestDispatcher(url).forward(req, res);    

    chain.doFilter(httpReq, httpRes);
}

但它不会转发到下一个URL。在Resource类中,它返回xml/json类型


共 (1) 个答案

  1. # 1 楼答案

    你考虑过使用过滤器吗?不确定这是否是一个好的设计,但可以使用request.getRemoteHost()在doFilter方法中获得值 request.getRemoteAddr()并进行验证 编辑: 忘记了代理背后的客户。。这个Getting IP address of client链接可能会有所帮助