2016-07-18 9 views
0

私の要件は2つの異なるモジュールからサービスを呼び出すことです。しかし、いくつかのURLは両方のモジュールを許可でき、いくつかのURLはそのモジュールに固有のものを許可します。以下 は、私が'barking'と呼ばれるサービスを持っている場合、私は異なるモジュールでサービスへのアクセスを制限する方法

/lions/barking 
/dogs/barking 
以下のような2つのURLを使ってこのサービスを呼び出すことができますpackage.Now例えば

<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> 

は、このサービスがcom.dogに位置していることを実現するための私の現在の設定です

私の要件として/lions/barking404エラーを表示する必要があります。しかし、それは応答を提供します。

しかし、いくつかのURLは両方とも機能するはずです。サービスがどこにあるかに関係します。すべてのヘルプは大歓迎されます

その機能を達成するための設定を行うにはどのように

/lions/eat 
/dogs/eat 

!!!!

+0

は、ライオンと犬のためのスーパークラスを作成し、必要なAPIエンドポイントを一致させるために、それらを拡張します。 – aksappy

答えて

0

「httpサーブレットリクエストフィルタ」を使用して、ビジネス要件に応じてリクエストをカスタマイズし、設定/配信します。

は、以下のサンプルコードを見つけてください:

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() { 
    } 
} 
関連する問題