It turns out to be a caused by myfaces.  It has the following explicit check
for the "/WEB-INF" string at the start of the pathInfo...

public void service(ServletRequest request,
148                         ServletResponse response)
149             throws IOException,
150                    ServletException
151     {
152 
153         HttpServletRequest httpRequest = ((HttpServletRequest) request);
154         String pathInfo = httpRequest.getPathInfo();
155 
156         // if it is a prefix mapping ...
157         if (pathInfo != null
158                 && (pathInfo.startsWith("/WEB-INF") || pathInfo
159                         .startsWith("/META-INF")))
160         {
161             StringBuffer buffer = new StringBuffer();
162 
163             buffer.append(" Someone is trying to access a secure
resource : ").append(pathInfo);
164             buffer.append("\n remote address is
").append(httpRequest.getRemoteAddr());
165             buffer.append("\n remote host is
").append(httpRequest.getRemoteHost());
166             buffer.append("\n remote user is
").append(httpRequest.getRemoteUser());
167             buffer.append("\n request URI is
").append(httpRequest.getRequestURI());
168 
169             log.warn(buffer.toString());
170 
171             // Why does RI return a 404 and not a 403, SC_FORBIDDEN ?
172 
173             ((HttpServletResponse) response)
174                     .sendError(HttpServletResponse.SC_NOT_FOUND);
175             return;
176         }
...

I tried removing the "/" from my dispatcher path and it worked :)  My
configuration now looks like this...

<bean id="dispatchProvider"
      class="org.apache.cxf.jaxrs.provider.RequestDispatcherProvider">
      <property name="logRedirects" value="true"/>
      <property name="classResources">
         <map>
            <entry
              
key="com.virginaustralia.checkin_api.v3.model.ItineraryReadRS"
               value="WEB-INF/view/faces/rest/reservation.xhtml" />
         </map>
      </property>
      <property name="beanNames">
          <map>
              <entry
key="com.virginaustralia.checkin_api.v3.model.ItineraryReadRS"
value="reservation"/>
          </map>
      </property>
   </bean>

Using "WEB-INF" instead of "/WEB-INF" at the start makes it pass the myfaces
check and fortunately the relative path seems to work.




--
View this message in context: 
http://cxf.547215.n5.nabble.com/RequestDispatcherProvider-error-dispatching-to-xhtml-in-WEB-INF-folder-tp5752229p5752232.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to