2016-07-18 11 views
0

Meine Anforderung besteht darin, die Dienste von zwei verschiedenen Modulen aus aufzurufen. Einige URLs können jedoch beide Module zulassen, einige URLs erlauben spezifische für dieses Modul. Unten ist meine aktuelle Konfiguration für die Erreichung diesesWie kann ich den Zugriff auf den Dienst in verschiedenen Modulen einschränken?

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

Zum Beispiel, wenn ich einen Dienst als 'barking' dieser Dienst aufgerufen haben in com.dog befindet sich package.Now i diesen Dienst zwei URLs aufrufen können wie unter

/lions/barking 
/dogs/barking 

Gemäß meiner Anforderung /lions/barking sollte 404 Fehler zeigen. Aber es gibt die Antwort.

Aber einige URL beide sollten funktionieren. Unabhängig davon, wo der Dienst befindet.

/lions/eat 
/dogs/eat 

Wie die Konfiguration zu tun, die Funktionalität

Jede Hilfe wird zu erreichen, sehr geschätzt !!!!

+0

Superklassen für Löwe und Hund anlegen und erweitern sie die api Endpunkten übereinstimmen, die Sie benötigen. – aksappy

Antwort

0

Verwenden Sie einen "HTTP-Servlet-Anforderungsfilter", um die Anforderungen gemäß Ihren Geschäftsanforderungen anzupassen und zu konfigurieren/zu bedienen.

finden Sie die folgende Beispielcode:

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() { 
    } 
}