The following comment has been added to this issue:

     Author: Ate Douma
    Created: Fri, 9 Apr 2004 2:54 AM
       Body:
One little addition.

In the portlet spec there is no mention of a restriction like SRV.6.2.2. It seems that 
for the current spec it is allowed for the portlet container to pass on wrapped 
request objects to a included servlet. But, once filtering is going to be supported in 
a future version of the spec it wouldn't supprise me to see this requirement also to 
be applied.
So, maybe this issue should be passed on to the spec leaders to look into? (I have no 
idea who's on that)

---------------------------------------------------------------------
View this comment:
  http://issues.apache.org/jira/browse/JS2-9?page=comments#action_28058

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/JS2-9

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: JS2-9
    Summary: Caching of portal parameters 
o.a.j.engine.servlet.ServletRequestImpl.getParameterMap() prevents subsequent 
RequestDispatcher invokation query string parameter merging
       Type: Bug

     Status: Unassigned
   Priority: Blocker

    Project: Jetspeed 2
   Versions:
             2.0-dev/cvs

   Assignee: 
   Reporter: Ate Douma

    Created: Thu, 8 Apr 2004 6:48 PM
    Updated: Fri, 9 Apr 2004 2:54 AM
Environment: Windows XP, J2SE1.4.2_03, Tomcat 4.1.29

Description:
Sorry for the long summary but I couldn't think of something shorter.

The o.a.j.engine.servlet.ServletRequestImpl.getParameterMap() only retrieves the 
portal parameters on first access and stores them in a Map which is returned on 
subsequent requests.

This seems smart from performance but actually is killing when a portlet wants to 
include a servlet or jsp with a RequestDispatcher and needs to specify additional 
query parameters (on the path).

On invokation of the RequestDispatcher Tomcat (at least) unwraps the ServletRequest 
chain of ServerRequestWrappers until it finds one of its own or one which is not an 
instance of ServletRequestWrapper (in 
org.apache.catalina.core.ApplicationDispatcher.wrapRequest()). Then it plugs a new 
HttpServletRequestWrapper into that part of the chain so it can merge any query string 
parameters on *top* of whatever parameters were already defined.

This all means that the set of request parameters will have been changed BELOW the 
o.a.j.engine.servlet.ServletRequestImpl (funny method name: wrapRequest() if you think 
of it ;-)
Because of the parameter caching these will however NOT become available to the 
included servlet or jsp.

Personnally I don't understand why Tomcat is not wrapping the request instead of 
plugging itself lower into the chain. Probably this should be reported as a bug to 
Tomcat.

But for the moment the current problem should be fixed I think by no longer caching 
the parameters in o.a.j.engine.servlet.ServletRequestImpl because its blocking my 
StrutsPortlet framework because its a common practice in struts applications to use 
query string parameters on actionforwards.

Ate  


---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to