Setting Up a BEA Tuxedo Application

     Previous  Next    Open TOC in new window  Open Index in new window  View as PDF - New Window  Get Adobe Reader - New Window
Content starts here

Managing Remote BEA Tuxedo CORBA Client Applications

This chapter explains how to configure connections from remote BEA Tuxedo CORBA client applications to CORBA objects via the standard Internet Inter-ORB Protocol (IIOP). This chapter is specific to BEA Tuxedo CORBA servers.

Note: The BEA Tuxedo CORBA Java client and BEA Tuxedo CORBA Java client ORB were deprecated in Tuxedo 8.1 and are no longer supported in Tuxedo 9.x. All BEA Tuxedo CORBA Java client and BEA Tuxedo CORBA Java client ORB text references, associated code samples, etc. should only be used:
Note: Technical support for third party CORBA Java ORBs should be provided by their respective vendors. BEA Tuxedo does not provide any technical support or documentation for third party CORBA Java ORBs.

This topic includes the following sections:

 


CORBA Object Terminology

The following terms are used in this chapter.

DLL

Dynamic Link Libraries. A DLL is a collection of functions grouped into a load module that is dynamically linked with an executable program at run time for a Windows application.

IIOP

Internet Inter-ORB Protocol (IIOP). IIOP is basically TCP/IP with some CORBA-defined message exchanges that serve as a common backbone protocol.

ISH

IIOP Server Handler. This is a client process running on an application site that acts as a surrogate on behalf of the remote client.

ISL

IIOP Server Listener. This is a server process running on an application site that listens for remote clients requesting connection.

Server

A server hosted on a machine in a BEA Tuxedo domain. A BEA Tuxedo CORBA server is built with the BEA Tuxedo CORBA buildobjserver command. CORBA Servers implement BEA Tuxedo functionality, such as security, transactions, and object state management. Servers can make invocations on any server, inside or outside a BEA Tuxedo domain.

Native Client

A client located within a BEA Tuxedo domain, using the CORBA ORB to make invocations on objects either inside or outside the BEA Tuxedo domain. A native client's host contains the BEA Tuxedo administrative and infrastructure components, such as tmadmin, FactoryFinder, and ISL/ISH. Native clients use the environmental objects to access CORBA objects. You build native C++ clients with the buildobjclient command or native Java clients using the tools provided by the third-party ORB.

Remote Client

A client not located within a BEA Tuxedo domain. A remote client can use the CORBA ORB to make invocations on objects either inside or outside the BEA Tuxedo domain. A remote client's host does not contain BEA Tuxedo administrative and infrastructure components, such as tmadmin, FactoryFinder, and ISL/ISH; it does contain supporting software (the CORBA ORB) that allows remote clients to invoke objects. Remote clients use the environmental objects to access CORBA objects. You build remote C++ clients with the buildobjclient command or remote Java clients using the tools provided by the third-party ORB.

Native Joint Client/server

A process that has two purposes: (1) execute code acting as the starter for some business actions and (2) execute method code for invocations on objects. A joint client/server located within a BEA Tuxedo domain. You build native joint C++ client/servers with the buildobjclient command. Java native joint client/servers are not supported.
Note: The server role of the native joint client/server is considerably less robust than that of a server. It has none of the BEA Tuxedo CORBA administrative and infrastructure components, such as tmadmin, FactoryFinder, and ISL/ISH (hence none of BEA Tuxedo's scalability and reliability attributes), it does not use the BEA Tuxedo TP Framework, and it requires more direct interaction between the client and the ORB.

Remote Joint Client/server

A process that has two purposes: (1) execute code acting as the starter for some business actions and (2) execute method code for invocations on objects. A joint client/server located outside a BEA Tuxedo domain. The joint client/server does not use the BEA Tuxedo TP Framework and requires more direct interaction between the Client and the ORB. You build remote joint C++ client/servers with the buildobjclient command or remote Java client/servers using the tools provided by the third-party ORB.
Note: A joint client/server is different from a server that acts as a client as part of its server role. Once the server completes processing of an invocation, it returns to dormancy. A joint client/server is always in the active mode, executing code not related to a server role; the server role temporarily interrupts the active client role, but the client role is always resumed.
Note: The server role of the remote joint client/server is considerably less robust than that of a server. Neither the client nor the server has any of the BEA Tuxedo administrative and infrastructure components, such as tmadmin, FactoryFinder, and ISL/ISH (hence, none of BEA Tuxedo's scalability and reliability attributes).

BEA Tuxedo CORBA object

A CORBA object that is implemented using TP Framework and that implements security, transactions, and object state management. CORBA objects are implemented in BEA Tuxedo CORBA servers; that is, they are part of a BEA Tuxedo domain and use the BEA Tuxedo infrastructure.

Callback Object

A CORBA object supplied as a parameter in a client's invocation on a target object. The target object can make invocations on the callback object either during the execution of the target object or at some later time (even after the invocation on the target object has been completed). A callback object might be located inside or outside a BEA Tuxedo domain.

 


Remote CORBA Client Overview

In this section, the term "remote client" represents a CORBA client application that is deployed on systems that do not have the full BEA Tuxedo CORBA server software installed. This means that no administration or application servers are running there and that no bulletin board is present. All communication between the client and the application takes place over the network.

The types of clients are:

A client process can run on UNIX or Microsoft Windows. The client has access to the CORBA ORB interface. The networking behind the calls is transparent to the user. The client process registers with the system and has the same status as a native client.

The client can do the following:

Note: A client process communicates with the native domain through the ISH.

Illustration of an Application with Remote CORBA Clients

Figure 14-1 shows an example of an application with remote clients connected. Any request by a remote client to access the CORBA server application is sent over the network to the ISH. This process sends the request to the appropriate server and sends the reply back to the remote client.

Figure 14-1 Bank Application with Remote Clients

Bank Application with Remote Clients

How the Remote Client Connects to an Application

The client connects to the ISL process in the IIOP Listener/Handler using a known network address. This is initiated when the client calls the Bootstrap object constructor. The ISL process uses a function that is specific to the operating system to pass the connection directly to the selected ISH process. To the client application, there is only one connection. The client application does not know, or need to know, that it is now connected to the ISH process.

 


Setting Environment Variables for Remote CORBA Clients

For CORBA C++ clients, environment variables can be used to pass information to the system, as follows:

 


Setting the Maximum Number of Remote CORBA Clients

To join remote clients to an application, you must specify the MAXWSCLIENTS parameter in the MACHINES section of the UBBCONFIG file.

MAXWSCLIENTS tells the BEA Tuxedo system at boot time how many accesser slots to reserve exclusively for remote clients. For native clients, each accesser slot requires one semaphore. However, the ISH process (executing on the native platform on behalf of remote clients) multiplexes remote client accessers through a single accesser slot and, therefore, requires only one semaphore. This points out an additional benefit of the remote extension. By putting more clients out on remote systems and taking them off the native platform, an application reduces its IPC resource requirements.

MAXWSCLIENTS takes its specified number of accesser slots from the total set in MAXACCESSERS. This is important to remember when specifying MAXWSCLIENTS; enough slots must remain to accommodate native clients as well as servers. Do not specify a value for MAXWSCLIENTS greater than MAXACCESSERS. The following table describes the MAXWSCLIENTS parameter.

Parameter
Description
MAXWSCLIENTS
Specifies the maximum number of remote clients that may connect to a machine.
The default is 0. If a value is not specified, remote clients may not connect to the machine being described.
The syntax is MAXWSCLIENTS=number.

 


Configuring a Listener for a Remote CORBA Client

Remote clients access your application through the services of an ISL process and one or more ISH processes. The ISL is specified in one entry as a server supplied by the BEA Tuxedo system. The ISL can support multiple remote clients and acts as the single point of contact for all the remote clients connected to your application at the network address specified on the ISL command line. The listener schedules work for one or more remote handler processes. An ISH process acts as a surrogate within the administrative domain of your application for remote clients on remote systems. The ISH uses a multiplexing scheme to support multiple remote clients concurrently.

To join remote clients to an application, you must list the ISL processes in the SERVERS section of the UBBCONFIG file. The processes follow the same syntax for listing any server.

Format of the CLOPT Parameter

You use the following ISL command-line options (CLOPT) to pass information to the ISL process for remote clients. The format of the CLOPT parameter is as follows:

ISL SRVGRP="identifier"
SRVID="number"
CLOPT="[ -A ] [ servopts options ] -- -n netaddr
[ -C {detect|warn|none} ]
[ -d device ]
[ -K {client|handler|both|none} ]
[ -m minh ]
[ -M maxh ]
[ -T client-timeout]
[ -x mpx-factor ]
[ -H external-netaddr"
For a detailed description of the CLOPT command line options, see the ISL command in the BEA Tuxedo Command Reference.

 


Modifying the Configuration File to Support Remote CORBA Clients

Listing 14-1 shows a sample UBBCONFIG file to support remote clients, as follows:

 


Configuring Outbound IIOP for Remote Joint Client/Servers

Support for outbound IIOP provides native clients and servers acting as native clients the ability to invoke on a remote object reference outside of the BEA Tuxedo domain. This means that calls can be invoked on remote clients that have registered for callbacks, and objects in remote servers can be accessed.

Administrators are the only users who interact directly with the outbound IIOP support components. Administrators are responsible for booting the ISLs with the correct startup parameters to enable outbound IIOP to objects not located in a connected client. Administrators may need to adjust the number of ISLs they boot and the various startup parameters to obtain the best configuration for their installation's specific workload characteristics.

Administrators have the option of booting the ISLs with the default parameters. However, the default BEA Tuxedo ISL startup parameters do not enable use of outbound IIOP.

Note: Outbound IIOP is not supported for transactions or security.

Functional Description

Outbound IIOP support is required to support client callbacks. In BEA WebLogic Enterprise versions 4.0 and 4.1, the ISL/ISH was an inbound half-gateway. Outbound IIOP support adds the outbound half-gateway to the ISL/ISH. (See Figure 14-2.)

There are three types of outbound IIOP connections available, depending on the version of GIOP supported by the native server and the remote joint client/server application:

Bi-directional and dual-paired connection outbound IIOP provides outbound IIOP to object references located in joint client/servers connected to an ISH. Asymmetric outbound IIOP provides outbound IIOP to object references not located in a joint client/server connected to an ISH, and also allows BEA Tuxedo CORBA clients to invoke on any object reference, not only object references located in clients currently connected to an ISH.

Each type of outbound IIOP is described in more detail in the following sections.

Figure 14-2 Joint Client/Server IIOP Connections Supported

Joint Client/Server IIOP Connections Supported

Bidirectional Outbound IIOP

With bidirectional outbound IIOP, the following operations are executed (see Figure 14-3):

  1. A client creates an object reference and invokes on a BEA Tuxedo CORBA server. The client ORB identifies the connection as being bidirectional using the service context. The service context travels with the message to the BEA Tuxedo CORBA server.
  2. When unmarshaling the object reference, the BEA Tuxedo CORBA server compares the host/port in the service context with the host/port in the object reference. If they match, the ORB adds the ISH client information needed for routing to the ISH. This client information travels with the object reference whenever it is passed to other BEA Tuxedo CORBA servers.
  3. At some point in time, a BEA Tuxedo CORBA server or native client invokes on the object reference, and the routing code invokes on the appropriate ISH, given the client information.
  4. The ISH sends the request to the client over the same client connection.
  5. The client executes the method and sends the reply back to the ISH via the client connection.
  6. The ISH receives the reply and sends it to the BEA Tuxedo CORBA server.
  7. Figure 14-3 Bidirectional Connection


    Bidirectional Connection

Asymmetric Outbound IIOP

With asymmetric outbound IIOP, the following operations are executed (see Figure 14-4):

  1. A server gets an object reference from some source. It could be a naming service, a string_to_object, or it could be passed in through a client, but not located in that client. Since the object reference is not located in a client connected to an ISH, the outgoing call cannot be made using the bidirectional method. The BEA Tuxedo CORBA server invokes on the object reference.
  2. On the first invoke, the routing code invokes a service in the ISL and passes in the host/port.
  3. The ISL selects an ISH to handle the outbound invoke and returns the ISH information to the BEA Tuxedo CORBA server.
  4. The BEA Tuxedo CORBA server invokes on the ISH.
  5. The ISH determines which outgoing connection to use to send the request to the client. If none is connected, the ISH creates a connection to the host/port.
  6. The client executes the method and sends the reply back to the ISH.
  7. The ISH receives the reply and sends it to the BEA Tuxedo CORBA server.
  8. Figure 14-4 Asymmetric Outbound IIOP


    Asymmetric Outbound IIOP

Dual-paired Connection Outbound IIOP

With dual-paired connection outbound IIOP, the following operations are executed (see Figure 14-5):

  1. A client creates an object reference and calls the Bootstrap function (register_callback_port) and passes the object reference.
  2. The ISH gets the host/port from the IOR and stores it with the client context.
  3. The client invokes on a BEA Tuxedo CORBA server and passes the object reference. From the register_callback_port call, the ISH creates a service context containing the host/port. The service context travels with the message to the BEA Tuxedo CORBA server.
  4. When unmarshaling the object reference, the BEA Tuxedo CORBA server compares the host/port in the service context with the host/port in the object reference. If they match, the ORB adds the ISH client information to the object reference. This client information travels with the object reference whenever it is passed to other BEA Tuxedo CORBA servers.
  5. At some point in time, a BEA Tuxedo CORBA server or native client invokes on the object reference. The routing code invokes on the appropriate ISH, passing the client information.
  6. The ISH creates a second connection to the client. It sends the request to the client over the second connection.
  7. The client executes the method and sends the reply back to the ISH via the first client connection.
  8. The ISH receives the reply and sends it to the BEA Tuxedo CORBA server. If the client disconnects from the ISH, the second connection is also disconnected.
  9. Figure 14-5 Dual-paired Connections Outbound IIOP


    Dual-paired Connections Outbound IIOP

How the Routing Code Finds an ISL

The steps to finding an ISL are as follows:

  1. A service is advertised in each ISL.
  2. The routing code invokes on that service name.
  3. Note: Normal BEA Tuxedo routing is used to find an ISL.
  4. An idle ISL on the same machine is always chosen, if available. If not available, NETLOAD ensures that a local ISL is chosen most often.
  5. Note: Some invokes may be made to ISLs on nonlocal machines.

 


Using the ISL Command to Configure Outbound IIOP Support

Outbound IIOP support is used when a native C++ or Java client, or a server acting as a native client, invokes on an object reference that is a remote object reference. The routing code recognizes that the object reference is from a non-BEA Tuxedo CORBA ORB or from a remote BEA Tuxedo CORBA joint client/server.

Types of Object References

There are two kinds of remote object references:

Both are detected by the routing code and sent to the outbound IIOP support for handling.

User Interface

The user interface to outbound IIOP support is the commandline interface for booting the ISL process(es). New command-line options to configure the outbound IIOP processing were added to the ISL command in this release of the BEA Tuxedo software. These options enable support for asymmetric IIOP to object references not located in clients connected to an ISH.

The ISL command syntax listed below shows the new options for outbound IIOP support:

ISL SRVGRP="identifier"

SRVID="number"

CLOPT="[ -A ] [ servopts options ] -- -n netaddr
[ -C {detect|warn|none} ]
[ -d device ]
[ -K {client|handler|both|none} ]
[ -m minh ]
[ -M maxh ]
[ -T Client-timeout]
[ -x mpx-factor ]
[-H external-netaddr]
#NEW options for outbound IIOP
[-O]
[-o outbound-max-connections]
[-s Server-timeout]
[-u out-mpx-users] "

For a detailed description of the CLOPT command-line options, see the ISL command in the BEA Tuxedo Command Reference.


  Back to Top       Previous  Next