org.jacorb.imr

Class ImplementationRepositoryImpl

public class ImplementationRepositoryImpl extends ImplementationRepositoryPOA

This is the main class of the JacORB implementation repository. It keeps track of the registered POAs with lifespan policy PERSISTENT and provides a way for migrating and restarting the POAS servers.

Author: Nicolas Noffke $Id: ImplementationRepositoryImpl.java,v 1.66 2007/02/06 23:47:53 andre.spiegel Exp $

Constructor Summary
ImplementationRepositoryImpl(ORB orb)
The constructor.
Method Summary
voidconfigure(Configuration myConfiguration)
voidedit_server(String name, String command, String host)
Updates the server with a new command and host.
StringgetIORFile()
ImRInfoget_imr_info()
Get host and port (wrapped inside an ImRInfo object) of this repository.
ServerInfoget_server_info(String server)
Get the ServerInfo object of a specific server.
voidhold_server(String name)
Hold a server.
HostInfo[]list_hosts()
List all hosts currently registered with this repository.
ServerInfo[]list_servers()
List all registered server.
static voidmain(String[] args)
The main method.
voidregister_host(HostInfo host)
Register a new host with a server startup daemon.
voidregister_poa(String name, String server, String host, int port)
This method registers a POA.
voidregister_server(String name, String command, String host)
Register a logical server.
voidrelease_server(String name)
Release a server from state "holding".
voidsave_server_table()
Save the server table to a backup file.
voidset_server_down(String server)
This method sets a server down, i.e. not.active.
voidshutdown(boolean wait)
Shut the repository down orderly, i.e. with saving of the server table.
voidstart_server(String name)
Start a server.
voidunregister_host(String name)
Remove a host from the servertable.
voidunregister_server(String name)
Remove a logical server from the server table.
static voidusage()
Prints the usage screen and exits.

Constructor Detail

ImplementationRepositoryImpl

public ImplementationRepositoryImpl(ORB orb)
The constructor. It builds up the server table and starts up the SocketListener thread.

Method Detail

configure

public void configure(Configuration myConfiguration)

edit_server

public void edit_server(String name, String command, String host)
Updates the server with a new command and host. For migrating purposes.

Parameters: name the servers name. command the new startup command for this server. host the new host.

Throws: UnknownServerName a server with name has not been registered.

getIORFile

public String getIORFile()

get_imr_info

public ImRInfo get_imr_info()
Get host and port (wrapped inside an ImRInfo object) of this repository.

Returns: the ImRInfo object of this repository.

get_server_info

public ServerInfo get_server_info(String server)
Get the ServerInfo object of a specific server.

Parameters: server the servers name.

Returns: the ServerInfo object of the server with name server

Throws: UnknownServerName the server server has not been registered.

hold_server

public void hold_server(String name)
Hold a server. This causes all requests for this server to be delayed until it is released. Holding a server is useful for migrating or maintaining it. There is not timeout set, so requests might be delayed indefinetly (or, at least, until the communication layer protests;-).

Parameters: name the servers name.

Throws: org.jacorb.imr.UnknownServerName a server with name has not been registered.

list_hosts

public HostInfo[] list_hosts()
List all hosts currently registered with this repository. It is not guaranteed that the references inside the HostInfo objects are still valid.

Returns: an array containing all known hosts.

list_servers

public ServerInfo[] list_servers()
List all registered server. The ServerInfo objects contain also a list of the associated POAs.

Returns: an array containing all registered servers.

main

public static void main(String[] args)
The main method. "Parses" the arguments and sets the corresponding attributes up, creates a new ImplementationRepositoryImpl instance and runs the ORB.

register_host

public void register_host(HostInfo host)
Register a new host with a server startup daemon.

Parameters: host a HostInfo object containing the hosts name and a reference to its ServerStartupDaemon object.

Throws: org.jacorb.imr.RegistrationPackage.IllegalHostName name is not valid. org.jacorb.imr.RegistrationPackage.InvalidSSDRef It was impossible to connect to the daemon.

register_poa

public void register_poa(String name, String server, String host, int port)
This method registers a POA. It has actually two functions: The reason for using only one method for those two tasks is that it is much more difficult for the ORB, which does the registering, to distinguish between an newly created POA and a restarted one.

Parameters: name the POAs name. server the logical server name of the server the running in. host the POAs host. port the POas port.

Throws: org.jacorb.imr.RegistrationPackage.IllegalPOAName the POAs name is not valid. org.jacorb.imr.RegistrationPackage.DuplicatePOAName an active POA with name is currently registered. org.jacorb.imr.UnknownServerName The server has not been registered.

register_server

public void register_server(String name, String command, String host)
Register a logical server. The logical server corresponds to a process which has a number of POAs.

Parameters: name the servers name. command the startup command for this server if it should be restarted on demand. Has to be empty (NOT null) if the server should not be restarted. host the host on which the server should be restarted. Should not be null, but is ignored if no startup command is specified.

Throws: org.jacorb.imr.AdminPackage.IllegalServerName the servers name is not valid. org.jacorb.imr.AdminPackage.DuplicateServerName a server with name has already been registered.

release_server

public void release_server(String name)
Release a server from state "holding".

Parameters: name the servers name.

Throws: org.jacorb.imr.UnknownServerName a server with name has not been registered.

save_server_table

public void save_server_table()
Save the server table to a backup file.

Throws: org.jacorb.imr.AdminPackage.FileOpFailed something went wrong.

set_server_down

public void set_server_down(String server)
This method sets a server down, i.e. not.active. If a request for that server is encountered, the server is tried to be restarted.

Parameters: server the servers name.

Throws: org.jacorb.imr.UnknownServerName No server with name server has been registered.

shutdown

public void shutdown(boolean wait)
Shut the repository down orderly, i.e. with saving of the server table. The actual shutdown is done in the SocketListener thread because, if done from here, the orb wont shut don correctly because this connection is still active. (See end of SocketListener.run())

Parameters: wait wait_for_completion (from ORB.shutdown()). If false, then the ORB is forced down, ignoring any open connection.

start_server

public void start_server(String name)
Start a server.

Parameters: name the servers name.

Throws: org.jacorb.imr.UnknownServerName a server with name has not been registered.

unregister_host

public void unregister_host(String name)
Remove a host from the servertable. Hosts are removed automatically on server startup, if they can't be accessed.

Parameters: name the hosts name.

Throws: UnknownHostName no host with that name known.

unregister_server

public void unregister_server(String name)
Remove a logical server from the server table. If a server is removed, all of its POAs are removed as well.

Parameters: name the servers name.

Throws: org.jacorb.imr.UnknownServerName a server with name has not been registered.

usage

public static void usage()
Prints the usage screen and exits.