[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transport/sslmultiplex ...

Tom Elrod tom.elrod at jboss.com
Wed Jul 12 00:49:51 EDT 2006


  User: telrod  
  Date: 06/07/12 00:49:51

  Added:       src/main/org/jboss/remoting/transport/sslmultiplex    
                        SSLMultiplexClientInvoker.java
                        SSLMultiplexServerInvoker.java
                        TransportClientFactory.java
                        TransportServerFactory.java
  Log:
  JBREM-496 & JBREM-492 & JBREM-535 - changed invoker loading to use a client and server factory instead of loading classes directly.  This allows users ability to plugin custom transport implementation with zero config.  Also added config for forcing remote call when client and server within same jvm (which was able to do previously using BYVALUE config, but not any more).  Also changed way to get hint if transport supports ssl to be provided by the transport factory instead of the transport itself.
  
  Revision  Changes    Path
  1.1      date: 2006/07/12 04:49:51;  author: telrod;  state: Exp;JBossRemoting/src/main/org/jboss/remoting/transport/sslmultiplex/SSLMultiplexClientInvoker.java
  
  Index: SSLMultiplexClientInvoker.java
  ===================================================================
  /*
  * JBoss, Home of Professional Open Source
  * Copyright 2006, JBoss Inc., and individual contributors as indicated
  * by the @authors tag. See the copyright.txt in the distribution for a
  * full listing of individual contributors.
  *
  * This is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as
  * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
  
  /*
   * Created on Mar 24, 2006
   */
  package org.jboss.remoting.transport.sslmultiplex;
  
  import org.jboss.remoting.InvokerLocator;
  import org.jboss.remoting.security.SSLSocketBuilder;
  import org.jboss.remoting.transport.multiplex.Multiplex;
  import org.jboss.remoting.transport.multiplex.MultiplexClientInvoker;
  import org.jboss.remoting.transport.multiplex.VirtualSocket;
  
  import javax.net.SocketFactory;
  import java.io.IOException;
  import java.net.Socket;
  import java.util.Map;
  
  
  /**
   * A SSLMultiplexClientInvoker.
  
   * @author <a href="mailto:ron.sigal at jboss.com">Ron Sigal</a>
   * @version $Revision: 1.1 $
   * <p>
   * Copyright (c) 2006
   * </p>
   */
  
  public class SSLMultiplexClientInvoker extends MultiplexClientInvoker
  {
  
     public SSLMultiplexClientInvoker(InvokerLocator locator) throws IOException
     {
        super(locator);
     }
  
     
  /**
   * @param locator
   * @param configuration
   * @throws IOException
   */
     public SSLMultiplexClientInvoker(InvokerLocator locator, Map configuration) throws IOException
     {
        super(locator, configuration);
     }
     
     
  /**
   * 
   */
     protected SocketFactory createSocketFactory(Map configuration)
     {
        SocketFactory sf = super.createSocketFactory(configuration);
        
        if (sf != null)
           return sf;
        
        try
        {
           SSLSocketBuilder server = new SSLSocketBuilder(configuration);
           sf = server.createSSLSocketFactory();
           this.configuration.put(Multiplex.SOCKET_FACTORY, sf);
        }
        catch(Exception e)
        {
           log.error("Error creating SSL Socket Factory for client invoker.", e);
        }
        
        return sf;
     }
     
     
     protected Socket createSocket(String address, int port) throws IOException
     {
        SocketFactory sf = getSocketFactory();
        if (sf == null)
           createSocketFactory(configuration);
  
        VirtualSocket socket = new VirtualSocket(configuration);
        socket.connect(getConnectSocketAddress(), getBindSocketAddress(), timeout);
        return socket;
     }
  }
  
  
  
  
  1.1      date: 2006/07/12 04:49:51;  author: telrod;  state: Exp;JBossRemoting/src/main/org/jboss/remoting/transport/sslmultiplex/SSLMultiplexServerInvoker.java
  
  Index: SSLMultiplexServerInvoker.java
  ===================================================================
  /*
  * JBoss, Home of Professional Open Source
  * Copyright 2006, JBoss Inc., and individual contributors as indicated
  * by the @authors tag. See the copyright.txt in the distribution for a
  * full listing of individual contributors.
  *
  * This is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as
  * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
  
  /*
   * Created on Mar 24, 2006
   */
  package org.jboss.remoting.transport.sslmultiplex;
  
  import org.jboss.remoting.InvokerLocator;
  import org.jboss.remoting.security.CustomSSLServerSocketFactory;
  import org.jboss.remoting.security.SSLSocketBuilder;
  import org.jboss.remoting.security.SSLSocketBuilderMBean;
  import org.jboss.remoting.transport.multiplex.MultiplexServerInvoker;
  
  import javax.net.ServerSocketFactory;
  import javax.net.SocketFactory;
  import javax.net.ssl.SSLServerSocketFactory;
  import java.io.IOException;
  import java.util.Map;
  
  
  /**
   * @author <a href="mailto:ron.sigal at jboss.com">Ron Sigal</a>
   * @version $Revision: 1.1 $
   * <p>
   * Copyright (c) Mar 24, 2006
   * </p>
   */
  
  public class SSLMultiplexServerInvoker extends MultiplexServerInvoker
  {
  
  /**
   * @param locator
   */
     public SSLMultiplexServerInvoker(InvokerLocator locator)
     {
        super(locator);
     }
  
  
  /**
   * @param locator
   * @param configuration
   */
     public SSLMultiplexServerInvoker(InvokerLocator locator, Map configuration) throws IOException
     {
        super(locator, configuration);
     }
  
  /**
   * @param configuration
   * @return
   */
     protected SocketFactory createSocketFactory(Map configuration)
     {
        SocketFactory socketFactory = null;
        if ((socketFactory = super.createSocketFactory(configuration)) != null)
           return socketFactory;
  
        ServerSocketFactory serverSocketFactory = getServerSocketFactory();
  
        try
        {
           if (serverSocketFactory  instanceof CustomSSLServerSocketFactory)
           {
              CustomSSLServerSocketFactory customServerSocketFactory = (CustomSSLServerSocketFactory) serverSocketFactory;
              SSLSocketBuilderMBean builder = customServerSocketFactory.getSSLSocketBuilder();
              boolean shouldUseDefault = builder.getUseSSLServerSocketFactory();
              builder.setUseSSLSocketFactory(shouldUseDefault);
              boolean useClientMode = builder.isServerSocketUseClientMode();
              builder.setSocketUseClientMode(useClientMode);
              return builder.createSSLSocketFactory();
           }
  
           SSLSocketBuilder builder = new SSLSocketBuilder(configuration);
           return builder.createSSLSocketFactory();
        }
        catch(Exception e)
        {
           log.error("Error creating SSL Socket Factory for server invoker.", e);
  //         throw new IOException("Error creating SSL Socket Factory.  Root cause: " + e.getMessage());
           return null;
        }
     }
  
     protected ServerSocketFactory getDefaultServerSocketFactory()
     {
        return SSLServerSocketFactory.getDefault();
     }
  }
  
  
  
  
  1.1      date: 2006/07/12 04:49:51;  author: telrod;  state: Exp;JBossRemoting/src/main/org/jboss/remoting/transport/sslmultiplex/TransportClientFactory.java
  
  Index: TransportClientFactory.java
  ===================================================================
  /*
  * JBoss, Home of Professional Open Source
  * Copyright 2005, JBoss Inc., and individual contributors as indicated
  * by the @authors tag. See the copyright.txt in the distribution for a
  * full listing of individual contributors.
  *
  * This is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as
  * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
  package org.jboss.remoting.transport.sslmultiplex;
  
  import org.jboss.remoting.InvokerLocator;
  import org.jboss.remoting.transport.ClientFactory;
  import org.jboss.remoting.transport.ClientInvoker;
  
  import java.io.IOException;
  import java.util.Map;
  
  /**
   * @author <a href="mailto:tom.elrod at jboss.com">Tom Elrod</a>
   */
  public class TransportClientFactory implements ClientFactory
  {
     public ClientInvoker createClientInvoker(InvokerLocator locator, Map config) throws IOException
     {
        return new SSLMultiplexClientInvoker(locator, config);
     }
  
     public boolean supportsSSL()
     {
        return true;
     }
  
  }
  
  
  1.1      date: 2006/07/12 04:49:51;  author: telrod;  state: Exp;JBossRemoting/src/main/org/jboss/remoting/transport/sslmultiplex/TransportServerFactory.java
  
  Index: TransportServerFactory.java
  ===================================================================
  package org.jboss.remoting.transport.sslmultiplex;
  
  import org.jboss.remoting.InvokerLocator;
  import org.jboss.remoting.ServerInvoker;
  import org.jboss.remoting.transport.ServerFactory;
  
  import java.io.IOException;
  import java.util.Map;
  
  /**
   * @author <a href="mailto:tom.elrod at jboss.com">Tom Elrod</a>
   */
  public class TransportServerFactory implements ServerFactory
  {
     public ServerInvoker createServerInvoker(InvokerLocator locator, Map config) throws IOException
     {
        return new SSLMultiplexServerInvoker(locator, config);
     }
  
     public boolean supportsSSL()
     {
        return true;
     }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list