java.lang.Object
java.rmi.server.RemoteObject
java.rmi.server.RemoteServer
java.rmi.server.UnicastRemoteObject
is.codion.common.rmi.server.AbstractServer<AbstractRemoteEntityConnection,EntityServerAdmin>
is.codion.framework.server.EntityServer
- All Implemented Interfaces:
is.codion.common.rmi.server.Server<AbstractRemoteEntityConnection,,EntityServerAdmin> Serializable,Remote
public class EntityServer
extends is.codion.common.rmi.server.AbstractServer<AbstractRemoteEntityConnection,EntityServerAdmin>
A remote server class, responsible for handling requests for AbstractRemoteEntityConnections.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class is.codion.common.rmi.server.AbstractServer
is.codion.common.rmi.server.AbstractServer.ClientConnection<T extends Object>Nested classes/interfaces inherited from interface is.codion.common.rmi.server.Server
is.codion.common.rmi.server.Server.Locator -
Field Summary
Fields inherited from class java.rmi.server.RemoteObject
refFields inherited from interface is.codion.common.rmi.server.Server
CLIENT_HOST -
Constructor Summary
ConstructorsConstructorDescriptionEntityServer(EntityServerConfiguration configuration) Constructs a new EntityServer and binds it to a registry on the port found in the configuration. -
Method Summary
Modifier and TypeMethodDescriptionprotected final AbstractRemoteEntityConnectionconnect(is.codion.common.rmi.server.RemoteClient remoteClient) protected AbstractRemoteEntityConnectioncreateRemoteConnection(is.codion.common.db.database.Database database, is.codion.common.rmi.server.RemoteClient remoteClient, int port, RMIClientSocketFactory clientSocketFactory, RMIServerSocketFactory serverSocketFactory) Creates the remote connection provided by this serverprotected final voiddisconnect(AbstractRemoteEntityConnection connection) static voidIf no arguments are supplied a new EntityServer is started.protected final voidmaintainConnections(Collection<is.codion.common.rmi.server.AbstractServer.ClientConnection<AbstractRemoteEntityConnection>> connections) final EntityServerAdminserverAdmin(is.codion.common.user.User user) final intstatic EntityServerStarts the server, using the configuration from system properties.static EntityServerstartServer(EntityServerConfiguration configuration) Starts the server.Methods inherited from class is.codion.common.rmi.server.AbstractServer
addAuthenticator, addShutdownListener, auxiliaryServers, clients, connect, connection, connectionCount, connections, connectionsAvailable, disconnect, getAdmin, getConnectionLimit, getMaintenanceInterval, logShutdownAndReturn, registry, serverInformation, setAdmin, setConnectionLimit, setMaintenanceInterval, shutdown, validateUserCredentialsMethods inherited from class java.rmi.server.UnicastRemoteObject
clone, exportObject, exportObject, exportObject, exportObject, exportObject, unexportObjectMethods inherited from class java.rmi.server.RemoteServer
getClientHost, getLog, setLog
-
Constructor Details
-
EntityServer
Constructs a new EntityServer and binds it to a registry on the port found in the configuration.- Parameters:
configuration- the server configuration- Throws:
RemoteException- in case of a remote exceptionRuntimeException- in case the domain model classes are not found on the classpath or if the jdbc driver class is not found or in case of an exception while constructing the initial pooled connections
-
-
Method Details
-
serverAdmin
public final EntityServerAdmin serverAdmin(is.codion.common.user.User user) throws is.codion.common.rmi.server.exception.ServerAuthenticationException - Parameters:
user- the server admin user- Returns:
- the administration interface for this server
- Throws:
is.codion.common.rmi.server.exception.ServerAuthenticationException- in case authentication failsIllegalStateException- in case no server admin instance is available
-
serverLoad
public final int serverLoad() -
connect
protected final AbstractRemoteEntityConnection connect(is.codion.common.rmi.server.RemoteClient remoteClient) throws RemoteException, is.codion.common.rmi.server.exception.LoginException - Specified by:
connectin classis.codion.common.rmi.server.AbstractServer<AbstractRemoteEntityConnection,EntityServerAdmin> - Throws:
RemoteExceptionis.codion.common.rmi.server.exception.LoginException
-
disconnect
- Specified by:
disconnectin classis.codion.common.rmi.server.AbstractServer<AbstractRemoteEntityConnection,EntityServerAdmin> - Throws:
RemoteException
-
createRemoteConnection
protected AbstractRemoteEntityConnection createRemoteConnection(is.codion.common.db.database.Database database, is.codion.common.rmi.server.RemoteClient remoteClient, int port, RMIClientSocketFactory clientSocketFactory, RMIServerSocketFactory serverSocketFactory) throws RemoteException, is.codion.common.db.exception.DatabaseException Creates the remote connection provided by this server- Parameters:
database- the underlying databaseremoteClient- the client requesting the connectionport- the port to use when exporting this remote connectionclientSocketFactory- the client socket factory, null for defaultserverSocketFactory- the server socket factory, null for default- Returns:
- a remote connection
- Throws:
RemoteException- in case of an exceptionis.codion.common.db.exception.DatabaseException- in case a database connection can not be established, for example if a wrong username or password is provided
-
maintainConnections
protected final void maintainConnections(Collection<is.codion.common.rmi.server.AbstractServer.ClientConnection<AbstractRemoteEntityConnection>> connections) throws RemoteException - Specified by:
maintainConnectionsin classis.codion.common.rmi.server.AbstractServer<AbstractRemoteEntityConnection,EntityServerAdmin> - Throws:
RemoteException
-
startServer
Starts the server, using the configuration from system properties.- Returns:
- the server instance
- Throws:
RemoteException- in case of an exception
-
startServer
public static EntityServer startServer(EntityServerConfiguration configuration) throws RemoteException Starts the server.- Parameters:
configuration- the configuration- Returns:
- the server instance
- Throws:
RemoteException- in case of an exception
-
main
public static void main(String[] arguments) throws RemoteException, is.codion.common.rmi.server.exception.ServerAuthenticationException If no arguments are supplied a new EntityServer is started.- Parameters:
arguments- 'shutdown' (case-insensitive) causes a running server to be shut down, otherwise a server is started- Throws:
RemoteException- in case of a remote exception during service exportis.codion.common.rmi.server.exception.ServerAuthenticationException- in case of missing or incorrect admin user information
-