Chris, Thanks again for the suggestion.
I've done some more debugging and found the problem... The HTTP 1.0 compliant connector on Tomcat 4 throws away any cookies it finds after the first session id cookie. If there's no session id cookie, or the session id cookie happens to be the last one in the list then everything will work fine, but if it isn't then cookies appear to get lost. This bug is not present in the HTTP 1.1 connector, but this runs *significantly* slower with Cocoon on our test environments. Here's the problem code in Tomcat: > for (int i = 0; i < cookies.length; i++) { > if (cookies[i].getName().equals > (Globals.SESSION_COOKIE_NAME)) { > > // Override anything requested in the URL > request.setRequestedSessionId(cookies[i].getValue( > )); > request.setRequestedSessionCookie(true); > request.setRequestedSessionURL(false); > if (debug >= 1) > log(" Requested cookie session id is " + > ((HttpServletRequest) > request.getRequest()).getRequestedSessionId()); > break; // Accept only the first session id value > > } > request.addCookie(cookies[i]); > } I'll double check I've got the latest copy and then post this to the Tomcat list. Stuart. P.S. Anyone know why the Tomcat 4.0 HTTP 1.1 connector is so much slower with Cocoon? On Friday, December 7, 2001, at 11:50 am, Chris Newland wrote: > Hi Stuart, > > I had some problems using the cookie taglib myself so I resorted to Java > code in my XSP. > > Here's a snippet of the code I use (works for me on Cocoon2b2) > > (very hacky - breaks the separation of concerns principle - I'll take > another look at the taglib when I have time ;) > > <xsp:page > language="java" > xmlns:xsp="http://apache.org/xsp" > xmlns:xsp-cookie="http://apache.org/xsp/cookie/2.0" > xmlns:xsp-request="http://apache.org/xsp/request/2.0" > xmlns:esql="http://apache.org/cocoon/SQL/v2" > xmlns:session="http://apache.org/xsp/session/2.0" >> > ... > > <xsp:structure> > <xsp:include>org.apache.cocoon.environment.Cookie</xsp:include> > </xsp:structure> > > ... > > <xsp:logic> > > Cookie[] user_cookies = <xsp-cookie:getCookies/>; > > Cookie user_cookie = null; > > if (user_cookies != null) > { > > <![CDATA[ > for (int i = 0; i < user_cookies.length; i++) > ]]> > { > > if (user_cookies[i].getName().equals("test_cookie")) > { > user_cookie = user_cookies[i]; <!-- cookie was found --> > } > > } > > } > > ... > > Hope this helps, > > Best Regards, > > Chris > > PS. Shall we take this to the cocoon-users mailing list as there may be > other users with solutions to this problem ? > > > -----Original Message----- > From: Stuart Roebuck [mailto:[EMAIL PROTECTED]] > Sent: 07 December 2001 11:22 > To: [EMAIL PROTECTED] > Subject: Re: [C2] [Bug?] Cookies missing from environment > > > Chris, > > Thanks for the rapid response... > > Looking at the Cocoon log the "HEADER PARAMETERS" of the request display > the cookie: > >> HEADER PARAMETERS: >> >> PARAM: 'cookie' VALUES: '[JSESSIONID=D29143D183239003153020F4A5F020A1; >> testcookie=31]' >> ^ >> ^ >> ^^^^^^^^^^^ > > so it's getting there, but seems to be getting no further. I'm surprised > if I'm the first person to find this, which is why I reckon I must be > doing something brain-dead. > > Stuart. > > > On Friday, December 7, 2001, at 11:05 am, Chris Newland wrote: > >> Hi Stuart, >> >> Are you sure that the client browser is adding the cookie to the http >> request it is making to Cocoon? A cookie contains a path parameter that >> tells the browser that the cookie should only be submitted when the >> browser >> is requesting URLs that match a certain path on the server. >> >> If you want the cookie to be submitted to every URL on a given server >> then >> set the cookie path parameter to "/". >> >> You can check if the browser is submitting the cookie by using a HTTP >> viewer >> that acts as a proxy to your browser. For Windows I would recommend >> HTTPInspector, but I'm sure there are equivalent tools for *NIX. The >> cookies >> will appear in the HTTP header. >> >> Best Regards, >> >> Chris >> >> -----Original Message----- >> From: Stuart Roebuck [mailto:[EMAIL PROTECTED]] >> Sent: 07 December 2001 10:47 >> To: [EMAIL PROTECTED] >> Subject: [C2] [Bug?] Cookies missing from environment >> >> >> I'm currently working on an action which needs to set and check cookies. >> >> Setting is fine, but checking/reading is not working. >> >> It gets the request from the environment and uses either getCookies or >> getCookieMap to get the list of cookies. But neither work, despite the >> fact that session handling is working fine - i.e. the session cookie is >> being handled correctly by the system (I'm not using URL rewriting) - so >> the browser is storing and returning the JSESSIONID cookie. >> >> I did some remote debugging, put a breakpoint on every call to the Cocoon >> HttpRequest constructor and found that the HttpServletRequest object >> passed to it never contains any cookies. >> >> Any ideas or pointers - am I doing something really brain-dead? >> >> Thanks, >> >> Stuart. Public Key - 1024D/88DD65AF 2001-11-23 Stuart Roebuck (Adolos) Key fingerprint = 89D9 E405 F8B1 9B22 0FA2 F2C1 9E57 5AB1 88DD 65AF ------------------------------------------------------------------------- Stuart Roebuck [EMAIL PROTECTED] Lead Developer Java, XML, MacOS X, XP, etc. ADOLOS <http://www.adolos.com/> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]