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

Reply via email to