Yes. The session state was being carried between unrelated requests and the
AddressBook test spotted the anomaly.

As discussed on yesterday's chat, I rebuilt Axis using AspectJ and then
added the following aspect to debug this problem:

(See attached file: SessionDebug.java)
I started out with a much simpler aspect, but that gave too much log data,
so I narrowed down the scope of the 'pointcut' and printed some input
parameters and return values.

The log from this is attached for anyone who is interested:
(See attached file: ajlog2).
It was fairly easy to spot the session instances going in and out of the
hashtable and work out what was going on. The nice part about using AspectJ
was that it provided a full trace of the methods issued by SimpleAxisServer
without me adding any code into the class (which I would later have to take
out). Also, the aspect was very quick to write compared to the
corresponding amount of debug code.

For more on AspectJ, see aspectj.org. Its open source (Mozilla Public
License) and freely downloadable.

Finally, here's a diff of build.xml to rebuild Axis with AspectJ in case
anyone else wants to try it. You also have to put the relevant jars in the
ant /lib directory:

(See attached file: build.xml.diff)

Glyn


                                                                                       
                            
                    Glen Daniels                                                       
                            
                    <gdaniels@macro       To:     "'[EMAIL PROTECTED]'" 
<[EMAIL PROTECTED]>            
                    media.com>            cc:                                          
                            
                                          Subject:     RE: cvs commit:                 
                            
                    06/03/02 14:11         
xml-axis/java/src/org/apache/axis/transport/http                        
                    Please respond         SimpleAxisServer.java                       
                            
                    to axis-dev                                                        
                            
                                                                                       
                            
                                                                                       
                            




Nice catch.

What this what was causing the AddressBook test to fail in some cases?

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, March 06, 2002 8:55 AM
> To: [EMAIL PROTECTED]
> Subject: cvs commit: xml-axis/java/src/org/apache/axis/transport/http
> SimpleAxisServer.java
>
>
> glyn        02/03/06 05:54:59
>
>   Modified:    java/src/org/apache/axis/transport/http
>                         SimpleAxisServer.java
>   Log:
>   Prevent cookie2 from being incorrectly carried from request
> to request.
>
>   Revision  Changes    Path
>   1.54      +2 -2
> xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer.java
>
>   Index: SimpleAxisServer.java
>   ===================================================================
>   RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/Sim
> pleAxisServer.java,v
>   retrieving revision 1.53
>   retrieving revision 1.54
>   diff -u -r1.53 -r1.54
>   --- SimpleAxisServer.java       26 Feb 2002 15:23:22 -0000
1.53
>   +++ SimpleAxisServer.java       6 Mar 2002 13:54:59 -0000
1.54
>   @@ -235,7 +235,7 @@
>                        // wipe cookies if we're doing sessions
>                        if (doSessions) {
>                            cookie.delete(0, cookie.length());
>   -                        cookie2.delete(0, cookie.length());
>   +                        cookie2.delete(0, cookie2.length());
>                        }
>                        authInfo.delete(0, authInfo.length());
>
>   @@ -443,7 +443,7 @@
>                            .append(cooky)
>                            .append("\r\nSet-Cookie2: ")
>                            .append(cooky);
>   -                    // OH, THE HUMANITY!  yes this is inefficient.
>   +                    // OH, THE HUMILITY!  yes this is inefficient.
>                        out.write(cookieOut.toString().getBytes());
>                    }
>
>
>
>
>


Attachment: SessionDebug.java
Description: Binary data

Attachment: ajlog2
Description: Binary data

Attachment: build.xml.diff
Description: Binary data

Reply via email to