No worries - thanks for helping me out.

 

 

From: Sergey Beryozkin [mailto:[email protected]] 
Sent: 06 January 2010 12:31
To: [email protected]; Paul Wilton; [email protected]
Subject: RE: another question on RequestDispatcherProvider

 

 

Hi,

I've verified that the 2nd option (using CXFServlet) is basically
identical to the first one, I had to do :

<init-param>
    <param-name>redirect-list</param-name>
    <param-value>/WEB-INF/book.jsp</param-value>
</init-param>

<init-param>
    <param-name>redirect-servlet-name</param-name>
    <param-value>jsp</param-value>
</init-param>

Without the redirect-servlet-name parameter CXFServlet with a "/"
pattern will be reentered after this CXFServlet has tried to forward.

So, to summarize, if we have CXFServlet with a "/" pattern then the
following options are available as far as redirection to jsp or indeed
some other resources/servlets is concerned :

1. RequestDispacterProvider configuration in Spring has to include a
dispatcherName property to avoid a CXFServlet reentrance.
2. Alternatively, CXFServlet has to include the 2 init parameters,
similar to the above one, but for private resources the option 1 would
likely be preferred and indeed option 1 will be just slightly more
effective
It might make sense to combine the 2 options if users are allowed to
directly interact with some resources, ex, when redirecting to diff URIs
or when both external users and RequestDispatcherProvider reuse the same
resources such as JSP pages, etc

thanks Paul for experimenting with this feature
cheers, Sergey




-----Original Message-----
From: Sergey Beryozkin [mailto:[email protected]]
Sent: Wed 1/6/2010 5:03 AM
To: Paul Wilton; [email protected]
Subject: RE: another question on RequestDispatcherProvider


Hi Paul

thanks for the confirmation, I'll update the docs. But will also play a
bit with the 2nd option to make sure it also works given that both
RequestDispatchProvider and CXFServlet will create a custom
HttpServletRequest wrapper, so I'd like to test that no interference
will occur...

cheers, Sergey

-----Original Message-----
From: Paul Wilton [mailto:[email protected]]
Sent: Wed 1/6/2010 5:01 AM
To: Sergey Beryozkin; [email protected]
Subject: RE: another question on RequestDispatcherProvider

Hi Sergey

Option 1 works : )



Thanks

Paul





From: Sergey Beryozkin [mailto:[email protected]]
Sent: 05 January 2010 17:45
To: Paul Wilton; [email protected]
Subject: RE: another question on RequestDispatcherProvider





Hi Paul

I have tried to modify CXFServlet listening on '/' to block if it is a
/WEB-INF/* pathImfo which is being processed now, but I've observed what
you did. Basically, when a RequestDispatcherProvider forwards, the first
servlet which gets this forward request is the same CXFServlet so
blocking it just results in the original forward request being blocked
and thus an empty response is returned.

So here is what can be done here :

1. add

<property name="dispatcherName" value="jsp"/>

to

<bean id="dispatchProvider1"
class="org.apache.cxf.jaxrs.provider.RequestDispatcherProvider">

        <property name="resourcePath" value="/WEB-INF/jsp/test.jsp"/>

        <property name="scope" value="request"/>

    </bean>

it will restrict the space a bit and will exclude CXFServlet from a list
of candidates, as far as RequestDispatcher.forward(...) is concerned.


I have tried it from Eclipse, though I will need to update it to ensure
JDK but not JRE is used by default for JSP pages be compiled...But
CXFServlet is definitely bypassed.

2. If it is feasible to make your jsp pages public by moving them one
level higher from /WEB-INF, say to /jsp/..., then configuring CXFServlet
to redirect to /jsp/test.jsp will do the trick. What will happen is that
RequestDispatcherProvider will forward and CXFServlet will forward it
further... I think the reason it could not forward to /WEB-INF was that
private resources under /WEB-INF are not visible at the CXFServlet
level...

hope it helps, can you please try one of the above options ?

thanks, Sergey

-----Original Message-----
From: Paul Wilton [mailto:[email protected]]
Sent: Tue 1/5/2010 10:01 AM
To: Sergey Beryozkin
Cc: [email protected]
Subject: RE: another question on RequestDispatcherProvider

Hi Sergey

I have tried extending the CXFServlet and overriding the redirect method
as you suggest. But the response is empty by that time -

By the time redirect method is invoked has the CXFServlet already
intercepted the  .jsp request and created a new Response (discarding the
one generated when the JSP was initially processed by the servlet
container) ?




This e-mail (and any attachments) is confidential and may contain
personal views which are not the views of the BBC unless specifically
stated. If you have received it in error, please delete it from your
system. Do not use, copy or disclose the information in any way nor act
in reliance on it and notify the sender immediately.

Please note that the BBC monitors e-mails sent or received. Further
communication will signify your consent to this

This e-mail has been sent by one of the following wholly-owned
subsidiaries of the BBC:

BBC Worldwide Limited, Registration Number: 1420028 England, Registered
Address: BBC Media Centre, 201 Wood Lane, London, W12 7TQ
BBC World News Limited, Registration Number: 04514407 England,
Registered Address: BBC Media Centre, 201 Wood Lane, London, W12 7TQ
BBC World Distribution Limited, Registration Number: 04514408,
Registered Address: BBC Media Centre, 201 Wood Lane, London, W12 7TQ






Reply via email to