User: starksm 
  Date: 01/05/29 18:59:10

  Modified:    src/main/org/jnp/server Main.java MainMBean.java
  Log:
  Add support for setting the RMI client and server socket factories on which
  the Naming interface implementation is exported.
  
  Revision  Changes    Path
  1.6       +60 -13    jnp/src/main/org/jnp/server/Main.java
  
  Index: Main.java
  ===================================================================
  RCS file: /cvsroot/jboss/jnp/src/main/org/jnp/server/Main.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Main.java 2001/04/26 07:50:52     1.5
  +++ Main.java 2001/05/30 01:59:10     1.6
  @@ -16,6 +16,8 @@
   import java.rmi.Remote;
   import java.rmi.RemoteException;
   import java.rmi.MarshalledObject;
  +import java.rmi.server.RMIClientSocketFactory;
  +import java.rmi.server.RMIServerSocketFactory;
   import java.rmi.server.UnicastRemoteObject;
   import java.util.Properties;
   
  @@ -33,7 +35,7 @@
   
   @author oberg
   @author [EMAIL PROTECTED]
  -@version $Revision: 1.5 $
  +@version $Revision: 1.6 $
   */
   public class Main
      implements Runnable, MainMBean
  @@ -41,13 +43,26 @@
       // Constants -----------------------------------------------------
   
       // Attributes ----------------------------------------------------
  -    NamingServer theServer;
  -    MarshalledObject serverStub;
  -    ServerSocket serverSocket;
  -
  -    int port = 1099;
  -    int rmiPort = 0; // Anonymous
  -    Category log;
  +    /** The Naming interface server implementation */
  +    protected NamingServer theServer;
  +    protected MarshalledObject serverStub;
  +    /** The jnp server socket through which the NamingServer stub is vended */
  +    protected ServerSocket serverSocket;
  +    /** An optional custom client socket factory */
  +    protected RMIClientSocketFactory clientSocketFactory;
  +    /** An optional custom server socket factory */
  +    protected RMIServerSocketFactory serverSocketFactory;
  +    /** The class name of the optional custom client socket factory */
  +    protected String clientSocketFactoryName;
  +    /** The class name of the optional custom server socket factory */
  +    protected String serverSocketFactoryName;
  +    /** The jnp protocol listening port. The default is 1099, the same as
  +        the RMI registry default port. */
  +    protected int port = 1099;
  +    /** The RMI port on which the Naming implementation will be exported. The
  +        default is 0 which means use any available port. */
  +    protected int rmiPort = 0;
  +    protected Category log;
   
       // Static --------------------------------------------------------
       public static void main(String[] args)
  @@ -88,6 +103,32 @@
       public void setPort(int p) { port = p; }
       public int getPort() { return port; }
   
  +    public String getClientSocketFactory()
  +    {
  +        return serverSocketFactoryName;
  +    }
  +    public void setClientSocketFactory(String factoryClassName)
  +        throws ClassNotFoundException, InstantiationException, 
IllegalAccessException
  +    {
  +        this.clientSocketFactoryName = factoryClassName;
  +        ClassLoader loader = Thread.currentThread().getContextClassLoader();
  +        Class clazz = loader.loadClass(clientSocketFactoryName);
  +        clientSocketFactory = (RMIClientSocketFactory) clazz.newInstance();
  +    }
  +
  +    public String getServerSocketFactory()
  +    {
  +        return serverSocketFactoryName;
  +    }
  +    public void setServerSocketFactory(String factoryClassName)
  +        throws ClassNotFoundException, InstantiationException, 
IllegalAccessException
  +    {
  +        this.serverSocketFactoryName = factoryClassName;
  +        ClassLoader loader = Thread.currentThread().getContextClassLoader();
  +        Class clazz = loader.loadClass(serverSocketFactoryName);
  +        serverSocketFactory = (RMIServerSocketFactory) clazz.newInstance();
  +    }
  +
       public void start()
         throws Exception
       {
  @@ -99,18 +140,24 @@
           NamingContext.setLocal(theServer);
   
           // Export server
  -        serverStub = new 
MarshalledObject(UnicastRemoteObject.exportObject(theServer, rmiPort));
  +        Remote stub = UnicastRemoteObject.exportObject(theServer, rmiPort, 
clientSocketFactory, serverSocketFactory);
  +        serverStub = new MarshalledObject(stub);
   
           // Start listener
           try
           {
               serverSocket = null;
  -            serverSocket = new ServerSocket(getPort());
  -            log.info("Started jnpPort=" + getPort()+", rmiPort="+getRmiPort());
  +            serverSocket = new ServerSocket(port);
  +            // If an anonymous port was specified get the actual port used
  +            if( port == 0 )
  +                port = serverSocket.getLocalPort();
  +            String msg = "Started jnpPort=" + port +", rmiPort=" + rmiPort
  +                + ", Client SocketFactory="+clientSocketFactory+", Server 
SocketFactory="+serverSocketFactory;
  +            log.info(msg);
               listen();
           } catch (IOException e)
           {
  -            log.error("Could not start on port " + getPort(), e);
  +            log.error("Could not start on port " + port, e);
           }
       }
   
  @@ -191,7 +238,7 @@
       {
         new Thread(this).start();
       }
  -
  +    
       // Private -------------------------------------------------------
   
       // Inner classes -------------------------------------------------
  
  
  
  1.4       +10 -5     jnp/src/main/org/jnp/server/MainMBean.java
  
  Index: MainMBean.java
  ===================================================================
  RCS file: /cvsroot/jboss/jnp/src/main/org/jnp/server/MainMBean.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MainMBean.java    2001/04/23 06:08:06     1.3
  +++ MainMBean.java    2001/05/30 01:59:10     1.4
  @@ -7,13 +7,11 @@
    */
   package org.jnp.server;
   
  -/**
  - *   <description> 
  +/** The Mbean interface for the jnp provider server.
    *      
  - *   @see <related>
  - *   @author $Author: starksm $
  + *   @author oberg
    *   @author [EMAIL PROTECTED]
  - *   @version $Revision: 1.3 $
  + *   @version $Revision: 1.4 $
    */
   public interface MainMBean
   {
  @@ -25,6 +23,13 @@
      
      public void setPort(int p);
      public int getPort();
  +
  +   public String getClientSocketFactory();
  +   public void setClientSocketFactory(String factoryClassName)
  +           throws ClassNotFoundException, InstantiationException, 
IllegalAccessException;
  +   public String getServerSocketFactory();
  +   public void setServerSocketFactory(String factoryClassName)
  +           throws ClassNotFoundException, InstantiationException, 
IllegalAccessException;
   
      public void start()
         throws Exception;
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to