アプリケーション (URL: /rest/*) には既存の Jersey REST サービスがあります。サンプル URL は次のようになります。http://xxx:8080/app/rest/company/getdata
プロパティに基づいて、REST 呼び出しを別のコンテキスト (URL: /newrest/*) にリダイレクトする必要があります。サンプル URL は次のようになります。http://xxx:8080/app/newrest/company/getdata
そこで、web.xml にサーブレット マッピングを追加しました。
したがって、私の web.xml は以下のスニペットのようになります。
<servlet>
<servlet-name>ServletAdaptor</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>xxx.httpservice</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletAdaptor</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>secureRESTFilter</filter-name>
<filter-class>xxx.RESTSecurityFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>secureRESTFilter</filter-name>
<url-pattern>/rest/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>NewAdaptor</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>xxx.newhttpservice</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>NewAdaptor</servlet-name>
<url-pattern>/newrest/*</url-pattern>
</servlet-mapping>
ServletAdaptor サーブレットのプロパティをチェックするためのフィルターを作成しました。必要に応じて NewAdaptor サーブレットにリダイレクトする必要があります。必要(プロパティに基づく)。
この問題を解決するための指示が必要です。助けてください。
私のフィルター クラスの dofilter メソッドは次のようになります。
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
String productMode = "b";//hardcoded for this example
String url = request.getRequestURL().toString();
if(productMode.equals("a")){
chain.doFilter(req, res);
}else{
url=url.replace("rest", "newrest");
req.getRequestDispatcher(url).forward(req, res);
}
}
しかし、RequestDispatcher はリクエストを新しい URL に転送していないようです。