CXF将url重定向到静态html页面

时间:2014-03-11 15:09:50

标签: spring cxf

我有我的web.xml

<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>
        org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
        <init-param>
            <param-name>static-resources-list</param-name>
            <param-value>/myfiles/(\w.*)+(.html|.js)</param-value>
        </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

spring config:

<jaxrs:server id="services" address="/">
    <jaxrs:serviceBeans>
        <bean class="com.abc.MyController"/>
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <bean class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider"/>
    </jaxrs:providers>
</jaxrs:server>

我的其他资源适用于网址http://localhost/appname/resource...

现在我的源代码中有src/main/webapp/myfiles/fileOne.html。 我想使用网址http://localhost/appname/file重定向到fileOne.html。我该怎么办?

编辑

我在上面的web.xml cxf配置中添加了static-resources-list。我知道http://localhost/appname/myfiles/fileOne.html有效,但我想使用网址http://localhost/appname/file来提供fileOne.html。我该怎么做?

3 个答案:

答案 0 :(得分:1)

找到解决方案;以防任何人需要它。

CXF servlet配置中的redirects-list参数并没有达到我的目的。所以我在web.xml中添加了以下servlet配置,以重定向到我的html页面。

<servlet>
    <servlet-name>swagger-ui</servlet-name>
    <jsp-file>/myfiles/fileOne.html</jsp-file>
</servlet>

<servlet-mapping>
    <servlet-name>swagger-ui</servlet-name>
    <url-pattern>/file</url-pattern>
</servlet-mapping>

答案 1 :(得分:0)

你可以在servlet标签中使用这样的东西:

<init-param>
   <param-name>static-welcome-file</param-name>
   <param-value>/index.html</param-value>
</init-param>

答案 2 :(得分:0)

您的CXFServlet网址映射是个问题。您将映射作为/ *。因此所有请求,甚至静态资源都被路由到CXFServlet。尝试将CXFServlet映射到其他内容。它会工作得很好。您不需要static-resources-list。

因为您将CXFServlet的url映射作为/ *,所以每个URL都会尝试从CXFServlet中找到响应,因为它的jax-rs服务器不知道静态资源,因此没有找到响应。