vinayc 2003/08/28 11:33:23
Added: server/impl/src/java/org/apache/altrmi/server/impl/rmi
RmiInvocationAdapter.java RmiServer.java
Log:
Refactorize (includes modularize,mavenize & rest of the nice's)
Revision Changes Path
1.1
incubator-altrmi/server/impl/src/java/org/apache/altrmi/server/impl/rmi/RmiInvocationAdapter.java
Index: RmiInvocationAdapter.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 1997-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software
* itself, if and wherever such third-party acknowledgments
* normally appear.
*
* 4. The names "Incubator", "AltRMI", and "Apache Software Foundation"
* must not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.altrmi.server.impl.rmi;
import java.rmi.RemoteException;
import org.apache.altrmi.common.Reply;
import org.apache.altrmi.common.Request;
import org.apache.altrmi.common.RmiInvocationHandler;
import org.apache.altrmi.server.impl.AbstractServer;
/**
* Class RmiinvocationAdapter for AltRMI over RMI invocation adaptation.
*
*
* @author Paul Hammant
* @version $Revision: 1.1 $
*/
public class RmiInvocationAdapter implements RmiInvocationHandler
{
/**
* The abstract server
*/
private AbstractServer m_abstractServer;
/**
* Constructor a RmiInvocationAdapter with an abstract server.
*
*
* @param abstractServer The abstract server
*
*/
public RmiInvocationAdapter( AbstractServer abstractServer )
{
m_abstractServer = abstractServer;
}
/**
* Handle an Invocation
*
*
* @param request The request
*
* @return an AltRMI reply object
*
* @throws RemoteException if a problem during processing
*
*/
public Reply handleInvocation( Request request ) throws RemoteException
{
return m_abstractServer.handleInvocation( request, "RMI-TODO");
}
}
1.1
incubator-altrmi/server/impl/src/java/org/apache/altrmi/server/impl/rmi/RmiServer.java
Index: RmiServer.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 1997-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software
* itself, if and wherever such third-party acknowledgments
* normally appear.
*
* 4. The names "Incubator", "AltRMI", and "Apache Software Foundation"
* must not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.altrmi.server.impl.rmi;
import org.apache.altrmi.common.DefaultThreadPool;
import org.apache.altrmi.common.RmiInvocationHandler;
import org.apache.altrmi.common.ThreadPool;
import org.apache.altrmi.server.Authenticator;
import org.apache.altrmi.server.ClassRetriever;
import org.apache.altrmi.server.ServerException;
import org.apache.altrmi.server.ServerMonitor;
import org.apache.altrmi.server.ServerSideClientContextFactory;
import org.apache.altrmi.server.impl.AbstractServer;
import org.apache.altrmi.server.impl.DefaultAuthenticator;
import org.apache.altrmi.server.impl.DefaultServerSideClientContextFactory;
import org.apache.altrmi.server.impl.NullServerMonitor;
import org.apache.altrmi.server.impl.adapters.InvocationHandlerAdapter;
import org.apache.altrmi.server.impl.classretrievers.PlainClassRetriever;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
/**
* Class RmiServer for serving of AltRMI over RMI
*
*
* @author Paul Hammant
* @version $Revision: 1.1 $
*/
public class RmiServer extends AbstractServer
{
/**
* The invocation adapter
*/
private RmiInvocationAdapter m_rmiInvocationAdapter;
/**
* The port
*/
private int m_port;
/**
* The registry
*/
private Registry m_registry;
/**
* Constructor a RmiServer with a preexiting invocation handler.
*
* @param invocationHandlerAdapter
* @param serverMonitor
* @param threadPool
* @param contextFactory
* @param port
*/
public RmiServer(InvocationHandlerAdapter invocationHandlerAdapter,
ServerMonitor serverMonitor,
ThreadPool threadPool, ServerSideClientContextFactory
contextFactory,
int port)
{
super(invocationHandlerAdapter, serverMonitor, threadPool,
contextFactory);
m_port = port;
}
public static class WithNoInvocationHandler extends RmiServer
{
/**
*
* @param classRetriever
* @param authenticator
* @param serverMonitor
* @param threadPool
* @param contextFactory
* @param port
*/
public WithNoInvocationHandler(ClassRetriever classRetriever,
Authenticator authenticator, ServerMonitor serverMonitor,
ThreadPool threadPool, ServerSideClientContextFactory
contextFactory,
int port)
{
super(new InvocationHandlerAdapter(classRetriever,
authenticator,serverMonitor, contextFactory),
serverMonitor, threadPool, contextFactory, port);
}
}
public static class WithSimpleDefaults extends WithNoInvocationHandler
{
/**
* @param port
*/
public WithSimpleDefaults(int port)
{
super(
new PlainClassRetriever(),
new DefaultAuthenticator(),
new NullServerMonitor(),
new DefaultThreadPool(),
new DefaultServerSideClientContextFactory(),
port);
}
}
/**
* Start the server.
*
* @throws ServerException if an exception during starting.
*/
public void start() throws ServerException
{
setState(STARTING);
try
{
m_rmiInvocationAdapter = new RmiInvocationAdapter( this );
UnicastRemoteObject.exportObject( m_rmiInvocationAdapter );
m_registry = LocateRegistry.createRegistry( m_port );
m_registry.rebind( RmiInvocationHandler.class.getName(),
m_rmiInvocationAdapter );
setState(STARTED);
}
catch( RemoteException re )
{
throw new ServerException( "Some problem setting up RMI server",
re);
}
}
/**
* Stop the server.
*
*/
public void stop()
{
setState(SHUTTINGDOWN);
killAllConnections();
try
{
m_registry.unbind( RmiInvocationHandler.class.getName() );
}
catch( RemoteException re )
{
m_serverMonitor.stopServerError(this.getClass(),
"RmiServer.stop(): Error stopping RMI server - RemoteException",re);
}
catch( NotBoundException nbe )
{
m_serverMonitor.stopServerError(this.getClass(),
"RmiServer.stop(): Error stopping RMI server - NotBoundException",nbe);
}
setState(STOPPED);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]