2010-09-28 73 views
1

我需要实现类似过滤器或侦听器的东西,它拦截HTTP请求并为各种目的检索HTTP头。拦截服务器java中的HTTP请求

我使用Java,Jboss应用程序服务器和Web服务。我希望这个过滤系统在Web服务调用之前执行 - 正在考虑方面,但他们不保留HTTP相关的东西。过滤器后,应执行服务呼叫。

由于Jax-WS处理程序只保存SOAP有效内容,因此不适用于我。

任何想法?

在此先感谢。

回答

3

你能不能创建一个servlet过滤器来拦截所有来到你的web服务引擎的请求?如果您使用的是Axis或其他SOAP引擎,那么我希望您应该能够创建一个过滤器来拦截所有到达SOAP引擎提供的主Servlet的请求。

public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException 
    { 
    HttpServletRequest httpRequest=(HttpServletRequest)request; 
    HttpServletResponse httpResponse=(HttpServletResponse)response; 
     Enumeration headerNames = httpRequest.getHeaderNames(); 
     while(headerNames.hasMoreElements()) { 
      String headerName = (String)headerNames.nextElement(); 
      out.println(headerName); 
      out.println(request.getHeader(headerName)); 
     } 
     chain.doFilter(request,response); 
} 
+0

据我所知,过滤器接口只提供ServeletRequest和ServletResponse,它们不包含HTTP相关信息。编辑:我会需要HttpServletRequest对象。我可能在这里错过了什么吗? – Pascal 2010-09-28 19:36:54

+0

几乎所有你需要的应该在那里..查看这里的示例代码。 – Shamik 2010-09-28 19:39:20

+0

更多关于这里http://download.oracle.com/javaee/1.3/api/javax/servlet/http/HttpServletRequest.html#getHeaderNames() – Shamik 2010-09-28 19:40:50

0

使用libpcap和Java接口jNetPcap

+0

感谢您的回复。看了一下,看起来非常像低级API。我只需要提取HTTP头。它是否允许拦截器与Web服务等其他组件进行链接? – Pascal 2010-09-28 19:34:14