You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2002/01/09 23:48:45 UTC

cvs commit: jakarta-avalon-cornerstone/src/java/org/apache/avalon/cornerstone/blocks/transport/publishing SocketObjectStreamConnectionHandler.java SocketObjectStreamPublisher.java

hammant     02/01/09 14:48:45

  Modified:    src/java/org/apache/avalon/cornerstone/blocks/transport/publishing
                        SocketObjectStreamPublisher.java
  Added:       src/java/org/apache/avalon/cornerstone/blocks/transport/publishing
                        SocketObjectStreamConnectionHandler.java
  Log:
  Use cornerstone's own Connection Manager
  
  Revision  Changes    Path
  1.2       +62 -8     jakarta-avalon-cornerstone/src/java/org/apache/avalon/cornerstone/blocks/transport/publishing/SocketObjectStreamPublisher.java
  
  Index: SocketObjectStreamPublisher.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/src/java/org/apache/avalon/cornerstone/blocks/transport/publishing/SocketObjectStreamPublisher.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SocketObjectStreamPublisher.java	9 Jan 2002 21:40:04 -0000	1.1
  +++ SocketObjectStreamPublisher.java	9 Jan 2002 22:48:45 -0000	1.2
  @@ -8,11 +8,21 @@
    */
   package org.apache.avalon.cornerstone.blocks.transport.publishing;
   
  -
  -
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
  -import org.apache.commons.altrmi.server.impl.socket.PlainSocketServer;
  +import org.apache.avalon.framework.component.Composable;
  +import org.apache.avalon.framework.component.ComponentManager;
  +import org.apache.avalon.framework.component.ComponentException;
  +import org.apache.avalon.cornerstone.services.sockets.SocketManager;
  +import org.apache.avalon.cornerstone.services.sockets.ServerSocketFactory;
  +import org.apache.avalon.cornerstone.services.connection.ConnectionManager;
  +import org.apache.avalon.cornerstone.services.connection.ConnectionHandlerFactory;
  +import org.apache.avalon.cornerstone.services.connection.ConnectionHandler;
  +import org.apache.commons.altrmi.server.impl.socket.PartialSocketObjectStreamServer;
  +
  +import java.net.InetAddress;
  +import java.net.UnknownHostException;
  +import java.net.ServerSocket;
   
   
   /**
  @@ -20,11 +30,14 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
  -public class SocketObjectStreamPublisher extends AbstractPublisher {
  +public class SocketObjectStreamPublisher extends AbstractPublisher implements Composable, ConnectionHandlerFactory {
   
  -    private int mPort;
  +    private SocketManager m_socketManager;
  +    private ConnectionManager m_connectionManager;
  +    private int m_port;
  +    private InetAddress m_bindTo;
   
       /**
        * Pass the <code>Configuration</code> to the <code>Configurable</code>
  @@ -36,8 +49,42 @@
       public void configure(Configuration configuration) throws ConfigurationException {
   
           super.configure(configuration);
  +        m_port = configuration.getChild("port").getValueAsInteger();
  +        try
  +        {
  +            final String bindAddress = configuration.getChild( "bind" ).getValue();
  +            m_bindTo = InetAddress.getByName( bindAddress );
  +        }
  +        catch( final UnknownHostException unhe )
  +        {
  +            throw new ConfigurationException( "Malformed bind parameter", unhe );
  +        }
   
  -        mPort = configuration.getChild("port").getValueAsInteger();
  +    }
  +
  +    public void compose(ComponentManager manager) throws ComponentException {
  +        m_socketManager = (SocketManager)manager.lookup( SocketManager.ROLE );
  +        m_connectionManager = (ConnectionManager)manager.lookup( ConnectionManager.ROLE );
  +    }
  +
  +    /**
  +     * Construct an appropriate ConnectionHandler.
  +     *
  +     * @return the new ConnectionHandler
  +     * @exception Exception if an error occurs
  +     */
  +    public ConnectionHandler createConnectionHandler()
  +            throws Exception {
  +        final SocketObjectStreamConnectionHandler handler = new SocketObjectStreamConnectionHandler( (PartialSocketObjectStreamServer) mAltrmiServer );
  +        setupLogger( handler );
  +        return handler;
  +    }
  +
  +    /**
  +     * Release a previously created ConnectionHandler.
  +     * e.g. for spooling.
  +     */
  +    public void releaseConnectionHandler(ConnectionHandler connectionHandler) {
       }
   
       /**
  @@ -49,8 +96,15 @@
        */
       public void initialize() throws Exception {
   
  -        mAltrmiServer = new PlainSocketServer(mPort);
  +        mAltrmiServer = new PartialSocketObjectStreamServer();
   
           super.initialize();
  +
  +        final ServerSocketFactory factory =
  +            m_socketManager.getServerSocketFactory( "plain" );
  +        final ServerSocket serverSocket = factory.createServerSocket( m_port, 5, m_bindTo );
  +
  +        m_connectionManager.connect( "SocketObjectStreamListener", serverSocket, this );
  +
       }
   }
  
  
  
  1.1                  jakarta-avalon-cornerstone/src/java/org/apache/avalon/cornerstone/blocks/transport/publishing/SocketObjectStreamConnectionHandler.java
  
  Index: SocketObjectStreamConnectionHandler.java
  ===================================================================
  /*
   * Created by IntelliJ IDEA.
   * User: Administrator
   * Date: Jan 9, 2002
   * Time: 10:25:12 PM
   * To change template for new class use 
   * Code Style | Class Templates options (Tools | IDE Options).
   */
  package org.apache.avalon.cornerstone.blocks.transport.publishing;
  
  import org.apache.avalon.framework.logger.AbstractLogEnabled;
  import org.apache.avalon.framework.component.Component;
  import org.apache.avalon.cornerstone.services.connection.ConnectionHandler;
  import org.apache.commons.altrmi.server.impl.socket.PartialSocketObjectStreamServer;
  
  import java.net.Socket;
  import java.net.ProtocolException;
  import java.io.IOException;
  
  public class SocketObjectStreamConnectionHandler extends AbstractLogEnabled
      implements Component, ConnectionHandler {
  
      private PartialSocketObjectStreamServer m_PartialSocketObjectStreamServer;
  
      public SocketObjectStreamConnectionHandler(PartialSocketObjectStreamServer partialSocketObjectStreamServer) {
          m_PartialSocketObjectStreamServer = partialSocketObjectStreamServer;
      }
  
      /**
       * Handle a connection.
       * This handler is responsible for processing connections as they occur.
       *
       * @param connection the connection
       * @exception IOException if an error reading from socket occurs
       * @exception ProtocolException if an error handling connection occurs
       */
      public void handleConnection(Socket connection)
              throws IOException, ProtocolException {
          m_PartialSocketObjectStreamServer.handleConnection(connection);
      }
  }
  
  
  

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