Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Finally, DefaultCXFServlet serves a requested book.html.

Serving welcome pages

Starting from CXF 2.5.5 and 2.6.2 it is possible to configure CXFServlet to serve welcome pages in a number of ways.

For example, lets assume we have a web application called "webapp" which has a root resource called "index.html".
For CXFServlet to support both "/webapp" and "/webapp/index.html" requests returning "index.html", while letting all other requests to proceed to the actual endpoints, the following can be done.

Option1. Delegating to Default Servlet

Code Block
xml
xml

<servlet>
        <servlet-name>CXFServlet</servlet-name>
        <display-name>CXF Servlet</display-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
        <init-param>
            <param-name>redirects-list</param-name>
            <param-value>
              /
              /index.html
            </param-value>
        </init-param>
        <init-param>
            <param-name>redirect-attributes</param-name>
            <param-value>
              javax.servlet.include.request_uri
            </param-value>
        </init-param>
        <init-param>
            <param-name>redirect-servlet-name</param-name>
            <param-value>default</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>

        <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

Note that the redirects-list parameter has two space separated values, "/" and "index.html".
The request attribute 'javax.servlet.include.request_uri' might need to be set for the underlying container like Jetty to successfully read "index.html".

Option2. Using CXFServlet itself to read index.html

Code Block
xml
xml

<servlet>
        <servlet-name>CXFServlet</servlet-name>
        <display-name>CXF Servlet</display-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
        <init-param>
            <param-name>static-welcome-file</param-name>
            <param-value>/index.html</param-value>
        </init-param> 
        <init-param>
            <param-name>static-resources-list</param-name>
            <param-value>/index.html</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>

Publishing an endpoint with the API

...