type=page
status=published
title=Administering the Object Request Broker (ORB)
next=javamail.html
prev=concurrent.html
~~~~~~

= Administering the Object Request Broker (ORB)

[[GSADG00018]][[abltr]]


[[administering-the-object-request-broker-orb]]
== 15 Administering the Object Request Broker (ORB)

{productName} supports a standard set of protocols and formats that
ensure interoperability. Among these protocols are those defined by
CORBA. The Object Request Broker (ORB) is the central component of
CORBA. The ORB provides the required infrastructure to identify and
locate objects, handle connection management, deliver data, and request
communication. This chapter describes how to configure the ORB and the
IIOP listeners.

The following topics are addressed here:

* link:#ablts[About the ORB]
* link:#abltw[Configuring the ORB]
* link:#ablty[Administering IIOP Listeners]

Instructions for accomplishing the tasks in this chapter by using the
Administration Console are contained in the Administration Console
online help.

[[ablts]][[GSADG00590]][[about-the-orb]]

=== About the ORB

The Common Object Request Broker Architecture (CORBA) model is based on
clients requesting services from distributed objects or servers through
a well-defined interface by issuing requests to the objects in the form
of remote method requests. A remote method request carries information
about the operation that needs to be performed, including the object
name (called an object reference) of the service provider and
parameters, if any, for the invoked method. CORBA automatically handles
network programming tasks such as object registration, object location,
object activation, request de-multiplexing, error-handling, marshalling,
and operation dispatching.

[[abltw]][[GSADG00591]][[configuring-the-orb]]

=== Configuring the ORB

A CORBA object never talks directly with another. Instead, the object
makes requests through a remote stub to the Internet Inter-Orb Protocol
(IIOP) running on the local host. The local ORB then passes the request
to an ORB on the other host using IIOP. The remote ORB then locates the
appropriate object, processes the request, and returns the results.

IIOP can be used as a Remote Method Invocation (RMI) protocol by
applications or objects using RMI-IIOP. Remote clients of enterprise
beans (EJB modules) communicate with {productName} by using RMI-IIOP.

[[ablty]][[GSADG00592]][[administering-iiop-listeners]]

=== Administering IIOP Listeners

An IIOP listener is a listen socket that accepts incoming connections
from the remote clients of enterprise beans and from other CORBA-based
clients. Multiple IIOP listeners can be configured for {productName}.
For each listener, specify a port number (optional; default 1072), a
network address, and security attributes (optional). If you create
multiple listeners, you must assign a different port number for each
listener.

The following topics are addressed here:

* link:#gioyo[To Create an IIOP Listener]
* link:#giowc[To List IIOP Listeners]
* link:#giwlq[To Update an IIOP Listener]
* link:#giowj[To Delete an IIOP Listener]

[[gioyo]][[GSADG00478]][[to-create-an-iiop-listener]]

==== To Create an IIOP Listener

Use the `create-iiop-listener` subcommand in remote mode to create an
IIOP listener.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Create an IIOP listener by using the
link:reference-manual/create-iiop-listener.html#GSRFM00032[`create-iiop-listener`] subcommand.
+
Information about the properties for the subcommand is included in this
help page.
3. To apply your changes, restart {productName}.
+
See link:domains.html#ginqj[To Restart a Domain].

[[GSADG00263]][[gipfl]]
Example 15-1 Creating an IIOP Listener

This example creates an IIOP listener named `sample_iiop_listener`.

[source]
----
asadmin> create-iiop-listener --listeneraddress 192.168.1.100
--iiopport 1400 sample_iiop_listener
Command create-iiop-listener executed successfully.
----

[[GSADG1011]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help create-iiop-listener` at the command line.

[[giowc]][[GSADG00479]][[to-list-iiop-listeners]]

==== To List IIOP Listeners

Use the `list-iiop-listeners` subcommand in remote mode to list the
existing IIOP listeners.

1. Ensure that the server is running. Remote subcommands require a running server.
2. List the IIOP listeners by using the
link:reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`] subcommand.

[[GSADG00264]][[gipcm]]
Example 15-2 Listing IIOP Listeners

This example lists all the IIOP listeners for the server instance.

[source]
----
asadmin> list-iiop-listeners
orb-listener-1
SSL
SSL_MUTUALAUTH
sample_iiop_listener
Command list-iiop-listeners executed successfully.
----

[[GSADG1012]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help list-iiop-listeners` at the command line.

[[giwlq]][[GSADG00480]][[to-update-an-iiop-listener]]

==== To Update an IIOP Listener

1. List the IIOP listeners by using the
link:reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`] subcommand.
2. Modify the values for the specified IIOP listener by using the
link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
+
The listener is identified by its dotted name.

[[GSADG00265]][[giwlj]]
Example 15-3 Updating an IIOP Listener

This example changes SSL from enabled to disabled.

[source]
----
asadmin> set "server.iiop-service.iiop-listener.SSL.enabled"
server.iiop-service.iiop-listener.SSL.enabled=false
Command set executed successfully.
----

[[giowj]][[GSADG00481]][[to-delete-an-iiop-listener]]

==== To Delete an IIOP Listener

Use the `delete-iiop-listener` subcommand in remote mode to delete an
IIOP listener.

1. Ensure that the server is running. Remote subcommands require a running server.
2. List the IIOP listeners by using the
link:reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`] subcommand.
3. Delete an IIOP listener by using the
link:reference-manual/delete-iiop-listener.html#GSRFM00084[`delete-iiop-listener`] subcommand.
4. To apply your changes, restart {productName}.
+
See link:domains.html#ginqj[To Restart a Domain].

[[GSADG00266]][[giped]]
Example 15-4 Deleting an IIOP Listener

This example deletes the IIOP listener named `sample_iiop_listener`.

[source]
----
asadmin> delete-iiop-listener sample_iiop_listener
 Command delete-iiop-listener executed successfully.
----

[[GSADG1013]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help delete-iiop-listener` at the command line.


