activation.idl revision 608:7e06bf1dcb09
1/* 2 * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26// 27 28module activation { 29 // Possible values for endpointType argument on Server.getEndpoint() 30 // If you change the value of this constant then update 31 // core.EndPoint accordingly. It has a duplicate definition 32 // to avoid a compilation dependency. 33 const string IIOP_CLEAR_TEXT = "IIOP_CLEAR_TEXT"; 34 35 // REVISIT Use the CORBA 2.3 ORBid if we ever get the Java ORB ID 36 // issue resolved. 37 typedef string ORBid; 38 typedef long ServerId ; 39 typedef sequence<string> POAName ; 40 41 /** Raised if getEndpoint is called on a server callback object for 42 * an invalid endpoint type 43 */ 44 exception NoSuchEndPoint {} ; 45 46 /** 47 * Raised if an attempt is made to retrieve ports corresponding to 48 * non-registered ORB 49 */ 50 51 exception InvalidORBid {} ; 52 53 /** Raised if an operation is attempted against an invalid server ID. 54 */ 55 exception ServerNotRegistered { 56 ServerId serverId ; 57 }; 58 59 /** Raised if an operation is attempted for a server that is not running, 60 * and the server is required to be running for the operation. 61 */ 62 exception ServerNotActive { 63 ServerId serverId ; 64 }; 65 66 /** Raised if an operation is attempted against a server that is in a 67 * hold down state. A server becomes held down if it fails to activate 68 * within 10 seconds. 69 */ 70 exception ServerHeldDown { 71 ServerId serverId ; 72 }; 73 74 /** Raised if an attempt is made to activate a server that is already 75 * running. 76 */ 77 exception ServerAlreadyActive{ 78 ServerId serverId ; 79 }; 80 81 /** Raised if an attempt is made to register a serverdef with the 82 * same applicationName as an existing serverdef. 83 */ 84 exception ServerAlreadyRegistered { 85 ServerId serverId; 86 }; 87 88 /** Raised if an attempt is made to install a server that is currently 89 * installed. Note that a newly created server starts out in an uninstalled 90 * state. 91 */ 92 exception ServerAlreadyInstalled { 93 ServerId serverId; 94 } ; 95 96 /** Raised if an attempt is made to uninstall a server that is currently 97 * uninstalled. Note that a newly created server starts out in an 98 * uninstalled 99 * state. 100 */ 101 exception ServerAlreadyUninstalled { 102 ServerId serverId; 103 } ; 104 105 /** Raised if an attempt is made to register an invalid serverdef. 106 */ 107 exception BadServerDefinition { 108 string reason; 109 }; 110 111 /** Raised if an attempt is made to register endpoints for the 112 * same ORB again 113 */ 114 exception ORBAlreadyRegistered { 115 ORBid orbId; 116 }; 117 118 typedef long TCPPort ; 119 typedef sequence<ServerId> ServerIds; 120 121 // passing a struct containing endpointType and port-#s 122 struct EndPointInfo { 123 string endpointType; 124 TCPPort port; 125 }; 126 127 typedef sequence<EndPointInfo> EndpointInfoList; 128 129 // struct contain ORB and port info 130 struct ORBPortInfo { 131 ORBid orbId; 132 TCPPort port; 133 }; 134 135 typedef sequence<ORBPortInfo> ORBPortInfoList; 136 137 typedef sequence<ORBid> ORBidList; 138 139 /** Server callback API, passed to Activator in active method. 140 */ 141 interface Server { 142 /** Shutdown this server. Returns after orb.shutdown() completes. 143 */ 144 void shutdown(); 145 146 /** Install the server. Returns after the install hook completes 147 * execution in the server. 148 */ 149 void install(); 150 151 /** Uninstall the server. Returns after the uninstall hook 152 * completes execution. 153 */ 154 void uninstall(); 155 }; 156 157 interface Activator { 158 // A new ORB started server registers itself with the Activator 159 void active(in ServerId serverId, in Server serverObj) 160 raises (ServerNotRegistered); 161 162 // Install a particular kind of endpoint 163 void registerEndpoints( in ServerId serverId, in ORBid orbId, 164 in EndpointInfoList endPointInfo) 165 raises (ServerNotRegistered,NoSuchEndPoint, ORBAlreadyRegistered) ; 166 167 // list active servers 168 ServerIds getActiveServers(); 169 170 // If the server is not running, start it up. 171 void activate(in ServerId serverId) 172 raises (ServerAlreadyActive, ServerNotRegistered, ServerHeldDown); 173 174 // If the server is running, shut it down 175 void shutdown(in ServerId serverId) 176 raises (ServerNotActive, ServerNotRegistered); 177 178 // Invoke the server install hook. If the server is not 179 // currently running, this method will activate it. 180 void install(in ServerId serverId) 181 raises (ServerNotRegistered, ServerHeldDown, 182 ServerAlreadyInstalled); 183 184 // list all registered ORBs for a server 185 ORBidList getORBNames(in ServerId serverId) 186 raises (ServerNotRegistered); 187 188 // Invoke the server uninstall hook. If the server is not 189 // currently running, this method will activate it. 190 // After this hook completes, the server may still be running. 191 void uninstall(in ServerId serverId) 192 raises (ServerNotRegistered, ServerHeldDown, 193 ServerAlreadyUninstalled); 194 }; 195 196 interface Locator { 197 198 // struct to return the list of endpoints for a server for a specific 199 // endpoint 200 struct ServerLocation { 201 string hostname; 202 ORBPortInfoList ports; 203 }; 204 205 // struct to return the list of endpoints for a server for a specific 206 // ORB 207 struct ServerLocationPerORB { 208 string hostname; 209 EndpointInfoList ports; 210 }; 211 212 // locate server - returns the port with a specific type for all registered 213 // ORBs of an active server. 214 // Starts the server if it is not already running. 215 ServerLocation locateServer( 216 in ServerId serverId, 217 in string endPoint) 218 raises(NoSuchEndPoint, ServerNotRegistered, ServerHeldDown); 219 220 // locate server - returns all ports registered with a specified ORB for 221 // an active server 222 // Starts the server if it is not already running. 223 ServerLocationPerORB locateServerForORB( 224 in ServerId serverId, 225 in ORBid orbId) 226 raises(InvalidORBid, ServerNotRegistered, ServerHeldDown); 227 228 // get the port for the endpoint of the locator 229 TCPPort getEndpoint(in string endPointType) 230 raises(NoSuchEndPoint); 231 232 // Useful from external BadServerIdHandlers which need 233 // to pick a particular port type. 234 TCPPort getServerPortForType( 235 in ServerLocationPerORB location, 236 in string endPointType) 237 raises(NoSuchEndPoint); 238 }; 239 240 interface ServerManager : Activator, Locator { }; 241 242 interface InitialNameService { 243 exception NameAlreadyBound {}; 244 245 // bind initial name 246 void bind ( 247 in string name, 248 in Object obj, 249 in boolean isPersistant) raises (NameAlreadyBound); 250 251 }; 252 253 interface Repository { 254 // server program definition. We should make this a ValueType. 255 struct ServerDef { 256 string applicationName; // alias used for servers with identical 257 // serverName values. 258 string serverName; // Class name of server's main class. 259 string serverClassPath; // class path used to run the server. 260 string serverArgs; 261 string serverVmArgs; 262 }; 263 264 // register server definition 265 // This returns the serverId of the server. A newly created server is 266 // always uninstalled. 267 ServerId registerServer (in ServerDef serverDef) 268 raises (ServerAlreadyRegistered, BadServerDefinition); 269 270 // unregister server definition 271 void unregisterServer (in ServerId serverId) 272 raises (ServerNotRegistered); 273 274 // get server definition 275 ServerDef getServer(in ServerId serverId) 276 raises (ServerNotRegistered); 277 278 // Return whether the server has been installed 279 boolean isInstalled( in ServerId serverId ) 280 raises (ServerNotRegistered); 281 282 // Mark the server as being installed. Raises ServerAlreadyInstalled 283 // if the server is currently marked as installed. 284 void install( in ServerId serverId ) 285 raises (ServerNotRegistered, ServerAlreadyInstalled) ; 286 287 // Mark the server as being uninstalled. Raises ServerAlreadyUninstalled 288 // if the server is currently marked as uninstalled. 289 void uninstall( in ServerId serverId ) 290 raises (ServerNotRegistered, ServerAlreadyUninstalled) ; 291 292 // list registered servers 293 ServerIds listRegisteredServers (); 294 295 typedef sequence<string> StringSeq ; 296 297 // Returns list of ALL applicationNames defined in ServerDefs of registered 298 // servers. 299 StringSeq getApplicationNames(); 300 301 // Find the ServerID associated with the given application name. 302 ServerId getServerID( in string applicationName ) 303 raises (ServerNotRegistered) ; 304 }; 305}; 306