404使用Tuckey URLRewriteFilter与JAX-RS时

时间:2014-12-12 10:07:57

标签: web-services jax-rs tuckey-urlrewrite-filter tomee cross-context

我正在尝试将URLRewriteFilter与许多不同类型的资源结合使用。它适用于静态资源和常规servlet。但是,对于基于JAX-RS的服务,我得到了404。

情况如下: 有两个Web应用程序:

  • base
  • base#nested

/base/Something/nested/furtherPath的请求需要转发到/base/nested/furtherPath。这意味着从/base上下文转发到/base/nested上下文。

为此,我在/base上下文中配置了URLRewrite过滤器:

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
    </filter-class>
    <init-param>
        <param-name>logLevel</param-name>
        <param-value>DEBUG</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

规则(urlrewrite.xml)如下:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite use-context="true">
    <rule>
        <from>/base/([^/]*)/([^/]*)/(.*)</from>
        <to type="forward" context="base/nested">/$3</to>        
    </rule>
</urlrewrite>

crossContext上下文的/base属性设置为true

这适用于常规servlet和静态资源,但不适用于JAX-RS服务。我在TomEE JAX-RS 1.6.0中这样做。

感谢您的帮助!

0 个答案:

没有答案