2016-07-18 36 views
0

我的要求是從兩個不同的模塊調用服務。但是,一些URL可以允許這兩個模塊,一些URL允許特定於該模塊。 下面是我對實現當前的配置是如何限制在不同模塊中訪問服務

<servlet> 
     <servlet-name>animals</servlet-name> 
     <servlet-class> 
      org.glassfish.jersey.servlet.ServletContainer 
     </servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>com.lion,com.dog</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
     <servlet-name>animals</servlet-name> 
     <url-pattern>/lion/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
     <servlet-name>animals</servlet-name> 
     <url-pattern>/dogs/*</url-pattern> 
</servlet-mapping> 

例如,如果我有一個稱爲'barking'該服務位於com.dog package.Now我可以調用使用兩個網址這一服務類似服務下面

/lions/barking 
/dogs/barking 

根據我的要求/lions/barking應該顯示404錯誤。但它給出了答覆。

但有些網址都應該工作。無論服務位於何處。

/lions/eat 
/dogs/eat 

怎麼做配置,以實現該功能

任何幫助將不勝感激!!!!

+0

爲獅子和狗創建超類和擴展他們匹配您需要的API端點。 – aksappy

回答

0

使用「http Servlet請求過濾器」根據您的業務需求自定義和配置/提供請求。

請看以下示例代碼:

public class RequestUrlFilter implements Filter { 

    private static List<String> validUrls = new ArrayList<>(); 

    public void init(FilterConfig filterConfig) throws ServletException { 
     //Load the valid list of urls here 
     validUrls.add("/lions/eat"); 
     validUrls.add("/dogs/eat"); 
     validUrls.add("/dogs/barking"); 
    } 

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

      if(validUrls.contains(((HttpServletRequest)request).getRequestURI()) { 
       filterChain.doFilter(request,response); 
      } else { 
       //Error Response 
       RequestDispatcher rd = (HttpServletRequest)request.getRequestDispatcher("Error.jsp"); 
       rd.forward(request, response); 
      } 
    } 

    public void destroy() { 
    } 
} 
相關問題