Hi Sergey, I don't get it. It does not work... What am I doing wrong?
<servlet> <servlet-name>RestfulApp</servlet-name> <servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class> <init-param> <param-name>jaxrs.serviceClasses</param-name> <param-value> org.foo.bar.MyServiceImpl </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <display-name>Redirect CXF Servlet</display-name> <servlet-name>RedirectCXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFNonSpringServlet</servlet-class> <init-param> <param-name>redirects-list</param-name> <param-value>/rest/Styles/(\w)+.css</param-value> </init-param> <init-param> <param-name>redirect-servlet-path</param-name> <param-value>/Styles</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>RedirectCXFServlet</servlet-name> <url-pattern>/Styles/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>RestfulApp</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> So we have the MyServiceImpl, which performs a forwarding (via RequestDispatcher) to a JSP page. This JSP does call a stylesheet like so: <link rel="StyleSheet" type="text/css" href="Styles/default.css"/> This ends up in a request like this: http://server:port/appcontext/rest/Styles/default.css Now, I would expect the RedirectCXFServlet to catch this request and forward it to http://server:port/appcontext/Styles/default.css But nothing like this happens. I still get a 404 on http://server:port/appcontext/rest/Styles/default.css. :-/ Thank you and best regards, Marko -----Ursprüngliche Nachricht----- Von: Sergey Beryozkin [mailto:sberyoz...@gmail.com] Gesendet: Mittwoch, 29. April 2015 13:46 An: users@cxf.apache.org Betreff: Re: AW: AW: AW: AW: AW: AW: How to forward requests to a JSP page when using CXFNonSpringJaxrsServlet np, thanks for experimenting with the redirection code :-) Let me know please if it works Sergey On 29/04/15 12:43, Voss, Marko wrote: > Thank you Sergey, I will test this as soon as I can continue working > on this again. :) > > Cheers, > Marko > > -----Ursprüngliche Nachricht----- > Von: Sergey Beryozkin [mailto:sberyoz...@gmail.com] > Gesendet: Mittwoch, 29. April 2015 13:29 > An: users@cxf.apache.org > Betreff: Re: AW: AW: AW: AW: AW: How to forward requests to a JSP page > when using CXFNonSpringJaxrsServlet > > <init-param> > <param-name>redirects-list</param-name> > <param-value> > /(\w)+.css > </param-value> > </init-param> > <init-param> > <param-name>redirect-servlet-name</param-name> > <param-value>default</param-value> > </init-param> > > or even > > <init-param> > <param-name>static-resources-list</param-name> > <param-value>/(\w)+.css</param-value> > </init-param> > > > though the latter option is limited... > > HTH, Sergey > > On 29/04/15 12:22, Sergey Beryozkin wrote: >> LOL, it has 3 such servlet declarations, not 2. I'm confused :-) >> Still the examples are straightforward IMHO. Check the example >> showing a redirect for all the html pages... >> >> Sergey >> On 29/04/15 12:18, Sergey Beryozkin wrote: >>> Well, I've mentioned which servlet parameters need to be checked. >>> The web.xml has 4 servlet declarations, only 2 of them have these >>> parameters. What exactly is confusing ? >>> >>> >>> On 29/04/15 12:06, Voss, Marko wrote: >>>> Hi Sergey, >>>> >>>> to be honest, those are multiple examples at once, aren't they? >>>> This is confusing for me... >>>> >>>> >>>> -----Ursprüngliche Nachricht----- >>>> Von: Sergey Beryozkin [mailto:sberyoz...@gmail.com] >>>> Gesendet: Mittwoch, 29. April 2015 12:28 >>>> An: users@cxf.apache.org >>>> Betreff: Re: AW: AW: AW: AW: How to forward requests to a JSP page >>>> when using CXFNonSpringJaxrsServlet >>>> >>>> Hi Marko >>>> On 29/04/15 10:44, Voss, Marko wrote: >>>>> Hi Sergey, >>>>> >>>>>> You can control by configuring CXFServlet with init parameters >>>>>> that would let it know that a default servlet needs to take care >>>>>> of all of .css files, set a redirect init parameter there Does it help ? >>>>> >>>>> Well, I do not know, how to set this up for the >>>>> CXFNonSpringJaxrsServlet. I can see a parameter named >>>>> 'jaxrs.static.subresources' in that class, but I highly doubt, >>>>> that this is the same. Can you show me an example, of how to do >>>>> this, please? >>>>> >>>> See for example >>>> >>>> https://git-wip-us.apache.org/repos/asf?p=cxf.git;a=blob;f=systests >>>> / >>>> jaxrs/src/test/resources/jaxrs_dispatch/WEB-INF/web.xml;h=a2212337b >>>> d 6a9ed7a212b21a6826850581601121;hb=HEAD >>>> >>>> >>>> >>>> (redirect-list, redirect-servlet-name parameters) - redirect to a >>>> 'default' or other servlet name representing a default servlet. >>>> >>>> It is only needed if you have a wildcard URL pattern for CXFServlet >>>> because it obviously catches all the requests... >>>> >>>> Cheers, Sergey >>>> >>>> >>>> >>>> >>>> >>>>> Thank you very much. >>>>> >>>>> Best regards, >>>>> Marko >>>>> >>>>> -----Ursprüngliche Nachricht----- >>>>> Von: Sergey Beryozkin [mailto:sberyoz...@gmail.com] >>>>> Gesendet: Donnerstag, 23. April 2015 13:55 >>>>> An: users@cxf.apache.org >>>>> Betreff: Re: AW: AW: AW: How to forward requests to a JSP page >>>>> when using CXFNonSpringJaxrsServlet >>>>> >>>>> Hi Marko >>>>> >>>>> On 23/04/15 07:48, Voss, Marko wrote: >>>>>> Hi Sergey, >>>>>> >>>>>> I am running into a different issue with this. The forwarding >>>>>> calls a JSP, which requires a stylesheet. >>>>>> >>>>>> The JAXRS service, which is performing the forwarding is located at: >>>>>> >>>>>> /appcontext/rest/service >>>>>> >>>>>> The JSP is located at: >>>>>> >>>>>> /appcontext/foo.jsp >>>>>> >>>>>> The stylesheet will be loaded from: >>>>>> >>>>>> /appcontext/rest/css/stylesheet.css >>>>>> >>>>>> Instead of: >>>>>> >>>>>> /appcontext/css/stylesheet.css >>>>> >>>>> What entity loads this stylesheet, JSP ? Using a "/css/stylesheet.css" >>>>> relative to a base HTTP address ? >>>>> So CXF endpoint is at "/appcontext/rest" base address and I think >>>>> this base address is used when forwarding. CXF does not know that >>>>> given a JSP reference such as "/appcontext/css/stylesheet.css" it >>>>> needs to use "/appcontext" only as a base address. >>>>> Well, JSP can just use a context value only, instead of the base >>>>> HTTP address that CXF sets up. I.e, use Servlet API in JSP to get >>>>> the context and + "css/stylesheet.css" to it. >>>>> >>>>>> >>>>>> Even if I put the stylesheet into a rest folder, it does not >>>>>> work, because the JAXRS servlet, "thinks" it has to handle a rest >>>>>> service request. >>>>> >>>>> You can control by configuring CXFServlet with init parameters >>>>> that would let it know that a default servlet needs to take care >>>>> of all of .css files, set a redirect init parameter there >>>>> >>>>> >>>>> Does it help ? >>>>> >>>>> Cheers, Sergey >>>>>> >>>>>> Why is the stylesheet loaded like this? How can I avoid this behavior? >>>>>> >>>>>> >>>>>> Thank you in advance and best regards, >>>>>> >>>>>> Marko >>>>>> >>>> >>> >> >> > > > -- > Sergey Beryozkin > > Talend Community Coders > http://coders.talend.com/ > > Blog: http://sberyozkin.blogspot.com > -- Sergey Beryozkin Talend Community Coders http://coders.talend.com/ Blog: http://sberyozkin.blogspot.com