You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by le...@apache.org on 2002/08/19 05:06:07 UTC

cvs commit: jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl AbstractServer.java ServerStreamReadWriter.java StreamServerConnection.java

leif        2002/08/18 20:06:07

  Modified:    altrmi/src/java/org/apache/excalibur/altrmi/server/impl
                        AbstractServer.java ServerStreamReadWriter.java
                        StreamServerConnection.java
  Log:
  Close any open client connections when the stream server is stopped.
  Leaving them open was causing problems when used in a Servlet within Tomcat.
  You would get ClassNotFoundExceptions as the connection threads were still
  running after Tomcat had destroyed the servlet.
  
  Revision  Changes    Path
  1.5       +7 -8      jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/AbstractServer.java
  
  Index: AbstractServer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/AbstractServer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AbstractServer.java	24 Apr 2002 12:43:01 -0000	1.4
  +++ AbstractServer.java	19 Aug 2002 03:06:07 -0000	1.5
  @@ -176,14 +176,13 @@
   
       protected void killAllConnections()
       {
  -
  -        Iterator it = mConnections.iterator();
  -
  -        while( it.hasNext() )
  +        // Copy the connections into an array to avoid ConcurrentModificationExceptions
  +        //  as the connections are closed.
  +        AltrmiServerConnection[] connections =
  +            (AltrmiServerConnection[])mConnections.toArray( new AltrmiServerConnection[0] );
  +        for ( int i = 0; i < connections.length; i++ )
           {
  -            AltrmiServerConnection asc = (AltrmiServerConnection)it.next();
  -
  -            asc.endConnection();
  +            connections[i].endConnection();
           }
       }
   
  
  
  
  1.4       +22 -1     jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/ServerStreamReadWriter.java
  
  Index: ServerStreamReadWriter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/ServerStreamReadWriter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ServerStreamReadWriter.java	24 Apr 2002 12:43:01 -0000	1.3
  +++ ServerStreamReadWriter.java	19 Aug 2002 03:06:07 -0000	1.4
  @@ -49,4 +49,25 @@
   
       protected abstract AltrmiRequest writeReplyAndGetRequest( AltrmiReply altrmiReply )
           throws IOException, ClassNotFoundException;
  +    
  +    protected void close()
  +    {
  +        try
  +        {
  +            mInputStream.close();
  +        }
  +        catch ( IOException e )
  +        {
  +            System.out.println( "Failed closing an Altrmi connection input stream: " + e );
  +        }
  +        
  +        try
  +        {
  +            mOutputStream.close();
  +        }
  +        catch ( IOException e )
  +        {
  +            System.out.println( "Failed closing an Altrmi connection output stream: " + e );
  +        }
  +    }
   }
  
  
  
  1.5       +2 -1      jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/StreamServerConnection.java
  
  Index: StreamServerConnection.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/StreamServerConnection.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StreamServerConnection.java	24 Apr 2002 12:43:01 -0000	1.4
  +++ StreamServerConnection.java	19 Aug 2002 03:06:07 -0000	1.5
  @@ -145,6 +145,7 @@
       public void endConnection()
       {
           mEndConnection = true;
  +        mReadWriter.close();
       }
   
       /**
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>