如何使用CXF隐藏WSDL

我使用CXF和
Spring开发了一个
Java Web服务.

由于安全原因,我想隐藏WSDL,尽管WS仍然可用.

有没有办法用CXF做到这一点? 最佳答案 您可以在web.xml中添加一个servlet过滤器来阻止处理?wsdl请求:

<filter>
    <filter-name>wsdlFilter</filter-name>
    <filter-class>com.mycompany.myWsdlFilterClass</filter-class>    
</filter>

<filter-mapping>
  <filter-name>wsdlFilter</filter-name>
  <url-pattern>*?wsdl</url-pattern>
</filter-mapping>

doFilter()方法如下所示:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
    ServletException {

  String queryString = ((HttpServletRequest) request).getQueryString();    
  if(queryString!=null && queryString.toLowerCase().startsWith("wsdl")){
    return; //the filter chain stops and request does not get processed
  }
  else{
    chain.doFilter(request, response);
  }

}
点赞