blob: 3d58a29d51ebb57d16e590fc7f232995f8ed6833 [file] [log] [blame]
/*
* Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code 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 General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
//
module activation {
// Possible values for endpointType argument on Server.getEndpoint()
// If you change the value of this constant then update
// core.EndPoint accordingly. It has a duplicate definition
// to avoid a compilation dependency.
const string IIOP_CLEAR_TEXT = "IIOP_CLEAR_TEXT";
// REVISIT Use the CORBA 2.3 ORBid if we ever get the Java ORB ID
// issue resolved.
typedef string ORBid;
typedef long ServerId ;
typedef sequence<string> POAName ;
/** Raised if getEndpoint is called on a server callback object for
* an invalid endpoint type
*/
exception NoSuchEndPoint {} ;
/**
* Raised if an attempt is made to retrieve ports corresponding to
* non-registered ORB
*/
exception InvalidORBid {} ;
/** Raised if an operation is attempted against an invalid server ID.
*/
exception ServerNotRegistered {
ServerId serverId ;
};
/** Raised if an operation is attempted for a server that is not running,
* and the server is required to be running for the operation.
*/
exception ServerNotActive {
ServerId serverId ;
};
/** Raised if an operation is attempted against a server that is in a
* hold down state. A server becomes held down if it fails to activate
* within 10 seconds.
*/
exception ServerHeldDown {
ServerId serverId ;
};
/** Raised if an attempt is made to activate a server that is already
* running.
*/
exception ServerAlreadyActive{
ServerId serverId ;
};
/** Raised if an attempt is made to register a serverdef with the
* same applicationName as an existing serverdef.
*/
exception ServerAlreadyRegistered {
ServerId serverId;
};
/** Raised if an attempt is made to install a server that is currently
* installed. Note that a newly created server starts out in an uninstalled
* state.
*/
exception ServerAlreadyInstalled {
ServerId serverId;
} ;
/** Raised if an attempt is made to uninstall a server that is currently
* uninstalled. Note that a newly created server starts out in an
* uninstalled
* state.
*/
exception ServerAlreadyUninstalled {
ServerId serverId;
} ;
/** Raised if an attempt is made to register an invalid serverdef.
*/
exception BadServerDefinition {
string reason;
};
/** Raised if an attempt is made to register endpoints for the
* same ORB again
*/
exception ORBAlreadyRegistered {
ORBid orbId;
};
typedef long TCPPort ;
typedef sequence<ServerId> ServerIds;
// passing a struct containing endpointType and port-#s
struct EndPointInfo {
string endpointType;
TCPPort port;
};
typedef sequence<EndPointInfo> EndpointInfoList;
// struct contain ORB and port info
struct ORBPortInfo {
ORBid orbId;
TCPPort port;
};
typedef sequence<ORBPortInfo> ORBPortInfoList;
typedef sequence<ORBid> ORBidList;
/** Server callback API, passed to Activator in active method.
*/
interface Server {
/** Shutdown this server. Returns after orb.shutdown() completes.
*/
void shutdown();
/** Install the server. Returns after the install hook completes
* execution in the server.
*/
void install();
/** Uninstall the server. Returns after the uninstall hook
* completes execution.
*/
void uninstall();
};
interface Activator {
// A new ORB started server registers itself with the Activator
void active(in ServerId serverId, in Server serverObj)
raises (ServerNotRegistered);
// Install a particular kind of endpoint
void registerEndpoints( in ServerId serverId, in ORBid orbId,
in EndpointInfoList endPointInfo)
raises (ServerNotRegistered,NoSuchEndPoint, ORBAlreadyRegistered) ;
// list active servers
ServerIds getActiveServers();
// If the server is not running, start it up.
void activate(in ServerId serverId)
raises (ServerAlreadyActive, ServerNotRegistered, ServerHeldDown);
// If the server is running, shut it down
void shutdown(in ServerId serverId)
raises (ServerNotActive, ServerNotRegistered);
// Invoke the server install hook. If the server is not
// currently running, this method will activate it.
void install(in ServerId serverId)
raises (ServerNotRegistered, ServerHeldDown,
ServerAlreadyInstalled);
// list all registered ORBs for a server
ORBidList getORBNames(in ServerId serverId)
raises (ServerNotRegistered);
// Invoke the server uninstall hook. If the server is not
// currently running, this method will activate it.
// After this hook completes, the server may still be running.
void uninstall(in ServerId serverId)
raises (ServerNotRegistered, ServerHeldDown,
ServerAlreadyUninstalled);
};
interface Locator {
// struct to return the list of endpoints for a server for a specific
// endpoint
struct ServerLocation {
string hostname;
ORBPortInfoList ports;
};
// struct to return the list of endpoints for a server for a specific
// ORB
struct ServerLocationPerORB {
string hostname;
EndpointInfoList ports;
};
// locate server - returns the port with a specific type for all registered
// ORBs of an active server.
// Starts the server if it is not already running.
ServerLocation locateServer(
in ServerId serverId,
in string endPoint)
raises(NoSuchEndPoint, ServerNotRegistered, ServerHeldDown);
// locate server - returns all ports registered with a specified ORB for
// an active server
// Starts the server if it is not already running.
ServerLocationPerORB locateServerForORB(
in ServerId serverId,
in ORBid orbId)
raises(InvalidORBid, ServerNotRegistered, ServerHeldDown);
// get the port for the endpoint of the locator
TCPPort getEndpoint(in string endPointType)
raises(NoSuchEndPoint);
// Useful from external BadServerIdHandlers which need
// to pick a particular port type.
TCPPort getServerPortForType(
in ServerLocationPerORB location,
in string endPointType)
raises(NoSuchEndPoint);
};
interface ServerManager : Activator, Locator { };
interface InitialNameService {
exception NameAlreadyBound {};
// bind initial name
void bind (
in string name,
in Object obj,
in boolean isPersistant) raises (NameAlreadyBound);
};
interface Repository {
// server program definition. We should make this a ValueType.
struct ServerDef {
string applicationName; // alias used for servers with identical
// serverName values.
string serverName; // Class name of server's main class.
string serverClassPath; // class path used to run the server.
string serverArgs;
string serverVmArgs;
};
// register server definition
// This returns the serverId of the server. A newly created server is
// always uninstalled.
ServerId registerServer (in ServerDef serverDef)
raises (ServerAlreadyRegistered, BadServerDefinition);
// unregister server definition
void unregisterServer (in ServerId serverId)
raises (ServerNotRegistered);
// get server definition
ServerDef getServer(in ServerId serverId)
raises (ServerNotRegistered);
// Return whether the server has been installed
boolean isInstalled( in ServerId serverId )
raises (ServerNotRegistered);
// Mark the server as being installed. Raises ServerAlreadyInstalled
// if the server is currently marked as installed.
void install( in ServerId serverId )
raises (ServerNotRegistered, ServerAlreadyInstalled) ;
// Mark the server as being uninstalled. Raises ServerAlreadyUninstalled
// if the server is currently marked as uninstalled.
void uninstall( in ServerId serverId )
raises (ServerNotRegistered, ServerAlreadyUninstalled) ;
// list registered servers
ServerIds listRegisteredServers ();
typedef sequence<string> StringSeq ;
// Returns list of ALL applicationNames defined in ServerDefs of registered
// servers.
StringSeq getApplicationNames();
// Find the ServerID associated with the given application name.
ServerId getServerID( in string applicationName )
raises (ServerNotRegistered) ;
};
};