我在JAX-RS Jersey开发了我的休息服务。我已部署在Tomcat 7.0中。现在我将我的Web服务URL暴露给第三方客户端。我想放置验证机制,包括获取主机名,即使用我的服务的客户端主机名。我想与我们的数据库输入的主机名匹配。如何获取客户端的主机名?
这是我的web.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>
现在我正在创建一个实现Filter的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);
}
但它没有转发到下一个网址。在Resource
类中,它返回xml / json类型。
答案 0 :(得分:0)
您是否考虑使用过滤器?不确定这是否是一个好的设计,但你可以使用request.getRemoteHost()
在doFilter方法中获取值
request.getRemoteAddr()
并进行验证
编辑:
忘记了代理后面的客户端..这个Getting IP address of client链接可能有帮助