Ice Reference Documentation
<<< Previous | Properties | Next >>>

# Ice Object Adapter Properties

## `name`.AdapterId

### Synopsis

    name.AdapterId=id

### Description

Specifies an identifier for the object adapter with the name `name`. This identifier must be unique among all object adapters using the same locator instance. If a locator proxy is defined using ``name`.Locator` or Ice.Default.Locator, this object adapter sets its endpoints with the locator registry upon activation.

## `name`.ReplicaGroupId

### Synopsis

    name.ReplicaGroupId=id

### Description

Identifies the group of replicated object adapters to which this adapter belongs. The replica group is treated as a virtual object adapter, so that an indirect proxy of the form `identity@``id` refers to the object adapters in the group. During binding, a client will attempt to establish a connection to an endpoint of one of the participating object adapters, and automatically try others until a connection is successfully established or all attempts have failed. Similarly, an outstanding request will, when permitted, automatically fail over to another object adapter of the replica group upon connection failure. The set of endpoints actually used by the client during binding is determined by the locator's configuration policies.

Defining a value for this property has no effect unless `name`.AdapterId is also defined. Furthermore, the locator registry may require replica groups to be defined in advance (see IceGrid.Registry.DynamicRegistration), otherwise `Ice.NotRegisteredException` is raised upon adapter activation. Regardless of whether an object adapter is replicated, it can always be addressed individually in an indirect proxy if it defines a value for `name`.AdapterId.

## `name`.Endpoints

### Synopsis

    name.Endpoints=endpoints

### Description

Sets the endpoints for the object adapter `name` to `endpoints`. These endpoints specify the network interfaces on which the object adapter receives requests. Proxies created by the object adapter contain these endpoints, unless the ``name`.PublishedEndpoints` property is also specified.

## `name`.PublishedEndpoints

### Synopsis

    name.PublishedEndpoints=endpoints

### Description

When creating a proxy, the object adapter `name` normally includes the endpoints defined by ``name`.Endpoints`. If ``name`.PublishedEndpoints` is defined, the object adapter uses these endpoints instead. This is useful in many situations, such as when a server resides behind a port-forwarding firewall, in which case the object adapter's public endpoints must specify the address and port of the firewall.

## `name`.Locator

### Synopsis

    name.Locator=locator

### Description

Specifies a locator for the object adapter with the name `name`. The value is a stringified proxy to the Ice locator interface.

## `name`.RegisterProcess

### Synopsis

    name.RegisterProcess=num

### Description

If `num` is set to a value larger than zero, the object adapter with the name `name` registers the server with the locator registry. Registration occurs upon the object adapter's initial activation, during which the object adapter creates a servant implementing the `Ice::Process` interface, adds the servant using a UUID, and registers its proxy with the locator registry using the value of the `Ice.ServerId` property for the server id. The servant implements the `shutdown` operation by invoking `shutdown` on the object adapter's communicator.

It is important for a server to be registered with the locator registry so that services such as IceGrid can request a graceful shutdown when necessary. If a server is not registered, then platform-specific techniques are used to request a shutdown, and these techniques are not always effective (especially on Windows platforms).

| Only one object adapter in a server should register with a locator registry.

The `Ice::Process` servant represents a potential target for denial-of-service attacks. The object adapter uses a UUID to make the proxy more difficult to guess, but the object adapter should be configured with secure endpoints if the server operates in a potentially hostile environment. Alternatively, a dedicated object adapter can be created specifically to provide a restricted access point for services such as IceGrid.

## `name`.Router

### Synopsis

    name.Router=router

### Description

Specifies a router for the object adapter with the name `name`. The value is a stringified proxy to the Ice router control interface. Defining a router allows the object adapter to receive callbacks from the router over outgoing connections from this process to the router, thereby avoiding the need for the router to establish a connection back to the object adapter.

| A router can only be assigned to one object adapter. Specifying the same router for more than one object adapter results in undefined behavior. The default value is no router.

## `name`.ThreadPool.Size

### Synopsis

    name.ThreadPool.Size=num

### Description

A communicator creates a default server thread pool that dispatches requests to its object adapters. An object adapter can also be configured with its own thread pool. This is useful in avoiding deadlocks due to thread starvation by ensuring that a minimum number of threads is available for dispatching requests to certain Ice objects.

`num` is the initial and also minimum number of threads in the thread pool. The default value is zero, meaning that an object adapter by default uses the communicator's server thread pool. See Ice.ThreadPool.Server.Size for more information.

## `name`.ThreadPool.SizeMax

### Synopsis

    name.ThreadPool.SizeMax=num

### Description

`num` is the maximum number of threads for the thread pool. Thread pools in Ice can grow and shrink dynamically, based on an average load factor. This thread pool will not grow larger than `num`, and does not shrink to a number of threads smaller than the value specified by `name`.ThreadPool.Size.

The default value is the value of ``name`.ThreadPool.Size`, meaning that by default, this thread pool does not grow dynamically.

## `name`.ThreadPool.SizeWarn

### Synopsis

    name.ThreadPool.SizeWarn=num

### Description

Whenever `num` threads are active in a thread pool, a "low on threads" warning is printed. The default value for is 80% of the value specified by ``name`.ThreadPool.SizeMax`.

## `name`.ThreadPool.StackSize

### Synopsis

    name.ThreadPool.StackSize=num

### Description

`num` is the stack size (in bytes) of threads in the thread pool. The default value is zero, meaning the operating system's default is used.

## Ice.PrintAdapterReady

### Synopsis

    Ice.PrintAdapterReady=num

### Description

If `num` is set to a value larger than zero, an object adapter prints "`adapter_name` ready" on standard output after initialization is complete. This is useful for scripts that need to wait until an object adapter is ready to be used.

<<< Previous | Home | Next >>>
Ice Warning Properties | Up | Ice Plugin Properties