[Top] [Prev] [Next] [Bottom]

1. Introducing Domains


What This Chapter Is About

This chapter introduces the following topics:

What Is a Domain?

As a business grows, application developers may need to organize the different segments of the business by sets of functionality that require administrative autonomy but allow sharing of services and data. Each functionality set defines an application that may span one or more computer machines, and that is administered independently from other applications. Such a functionally distinct application is referred to as a domain; in practice, the organization often uses the domain's functionality as part of its name so you find applications with names like the "accounting" domain or the "order entry" domain.

Interoperability Between Domains

The BEA TUXEDO system Domains feature provides a framework for interoperability between the domains of a business that continues the BEA TUXEDO enhanced client/server model. Interoperability means more than merely the capability of communicating from one domain to another. By transparently making access to services of a remote domain available to users of the local domain (or accepting local service requests from users of a remote domain), Domains, in effect, breaks down the walls between the business applications of an organization. Domains does this by defining a set of processes, called gateways, that manage the communication between domains. BEA TUXEDO system Domains is offered in an instance called TDOMAIN, which can be used to provide interoperability among two or more BEA TUXEDO applications.

Domains Terms

The following terms are used in our discussion of Domains.

Advertised
A service is advertised when a service table entry exists for it in the BEA TUXEDO Bulletin Board. When a Domain gateway server is booted, it advertises all of the remote services that it is importing from remote domains in the Bulletin Board of the local domain (that is, the domain on which the gateway server is booted). After a remote service is advertised by the domain gateway server, it remains advertised until either an unadvertise command is issued or a MIB request removes the service.

Alternate Remote Domain
A remote domain that is used when the primary remote domain is unavailable.

BEA TUXEDO Application
A BEA TUXEDO application is bounded by the environment described in a single TUXCONFIG file. A BEA TUXEDO application can communicate with another BEA TUXEDO application through a domain gateway group.

BEA TUXEDO Domain
A BEA TUXEDO application that is independently administered. A domain can be connected to other BEA TUXEDO domains through the Domains feature.

BEA TUXEDO Domains
The BEA TUXEDO feature that allows one domain to communicate with another domain.

Bridge Failback
The restoration of message traffic to a higher priority circuit. The Bridge process always tries to use the highest priority circuit defined for the machine. When that circuit becomes unavailable (due to circuit failure or other reasons), the Bridge transfers message traffic to a lower priority circuit, and periodically checks the availability of higher-priority circuits. When possible, the Bridge restores message traffic to a higher priority circuit.

Bridge Failover
The transfer of message traffic to a lower priority circuit when a higher priority circuit fails.

Domain
See BEA TUXEDO Domain.

Domain Gateway
A process that relays requests and replies between one domain and others.

Gateway Group
A collection of processes that provide communication services between one domain and other domains. It contains both a GWADM process and a gateway process, for example, a GWTDOMAIN process.

Domain Gateway Group
See Gateway Group.

Failback
See Bridge Failback and TDOMAIN Failback.

Failover
See Bridge Failover and TDOMAIN Failover.

Incoming Connection
A connection to the local gateway that is initiated by a remote domain gateway process on a remote domain.

Lazy Connection
A connection between a domain gateway and a remote domain that is not established until the remote domain receives a request for a remote service. A lazy connection keeps initialization overhead low for configurations involving many domains.
When a domain gateway server is booted, no connections are made to any remote domains. All remote services are assumed to be available and are advertised in the BEA TUXEDO Bulletin Board. When the first request for a service in a particular remote domain is made, the gateway server receives the request and tries to establish the connection. If the connection is made, the request flows to the remote domain and the connection remains active. If the connection fails, the client receives a failure message and the service remains advertised.

Link-level Failover in Domains
Use of an alternate network address for a particular remote domain.

Load Balancing
The practice of distributing service requests among all the servers in a given domain to achieve the most efficient handling of those requests.
When a service request is routed to a domain gateway, the gateway implements a load balancing algorithm and applies the data-dependent routing algorithm to find the proper remote domains to which the request should be routed. Load balancing and data-dependent routing algorithms are based on the remote service table entries and remote domain table entries in the gateway shared memory.

Local Domain
View of an application (that is, a subset of the application's services) that is available to other domains. A local domain is always represented by a domain gateway group, and the terms are used interchangeably.

Local Gateway
The functionality of a specific gateway group within a local BEA TUXEDO application. Multiple gateways may be running within a single BEA TUXEDO application. Other BEA TUXEDO applications view these gateways as different remote domains.

Local Service
A service of a local domain that is available to remote domains through a domain gateway group.

Outgoing Connection
A connection from the local gateway that has been generated as a result of one of the following: an automatic retry of the connection, an initial request to the remote domain, or a dmadmin(1) connect command issued by the administrator.

Primary Remote Domain
The remote domain with the highest priority. It is used when it is available.

Remote Domain
View of an application that is accessed through a domain gateway group.

Remote Gateway
The functionality of a specific gateway group within a remote BEA TUXEDO application.

Remote Service
A service of a remote domain that is made available to the local application through a domain gateway group.

Remote Service Fan-Out
A configuration in which a remote service that is imported from multiple remote domains is advertised only once by a local domain gateway. A remote service can be fanned-out by a gateway server that imports the same service name from multiple remote domains. If the remote service name is imported from multiple remote domains, the local gateway advertises the service only once in the BEA TUXEDO Bulletin Board. Fan-Out is achieved through the gateway shared memory.

TDOMAIN Failback
The restoration of message traffic to a primary remote domain. The domain gateway always tries to use the primary domain or the highest-level alternate remote domain defined for a service. When these domains become unavailable (due to circuit failure or other reasons), the gateway transfers message traffic to a lower-priority alternate remote domain, and periodically checks the availability of the primary remote domain and the highest-level alternate remote domain. When possible, the gateway restores message traffic to the primary remote domain or the highest-level remote domain.

TDOMAIN Failover
The transfer of message traffic to an alternate remote domain when a primary remote domain fails.

Unadvertised
A service is unadvertised when there is no service table entry for it in the BEA TUXEDO Bulletin Board.

How Domains Works

BEA TUXEDO provides an application programming framework that simplifies the development of open OLTP distributed applications by hiding the complexity associated with the distribution of application processing. The framework consists of the following:

It is not always possible, however, to structure applications as a single distributed application because of their nature, geographical location, confidentiality, and potential growth. Also, an enterprise may want to expand their business by cooperating with other organizations that provide OLTP services under the control of different transaction processing monitors, such as BEA's TopEnd, Transarc's Encina, IBM's CICS, Bull's TDS, Bull's TP8, ICL's TPMS, and so forth.

The BEA TUXEDO system provides the basic framework for domain interoperability. This framework defines a set of processes, called gateways, that manage the communication between domains. These gateways run within a BEA TUXEDO server group. This is illustrated in Figure 1-1, which shows a BEA TUXEDO application that requires services (in this case, credit card authorizations) from a remote domain.

Figure 1-1 A Generalized View of Two Communicating Domains

The application also accepts service requests (for example, balance inquiries) from remote domains. The gateway process provides bidirectional transaction control, and administrative tools that allow the configuration of the information required for interoperability of the local application with other domains. This configuration information includes the identification of a set of exported services, imported services, addressing, and access control. The BEA TUXEDO configuration of TDOMAIN is the subject of Chapter 2, "Configuring TDOMAIN."

Figure 1-2 shows a more detailed view of the environment associated with domains.

Figure 1-2 A Look at Domains Environments

The example shows a credit card authorization center running under the control of the BEA TUXEDO system. The authorization center has two gateway groups: bankgw1 and bankgw2. bankgw1 provides access to two remote BEA TUXEDO domain; bankgw2 provides access to one remote domains (Bank XYZ) using the OSI TP protocol.

In this example, Bank ABC generates service requests to the credit card authorization center. These requests are received by a gateway running within group bankgw1. This gateway issues a service request on behalf of the remote domain to the credit card authorization service that is provided by a local server. The server processes the request and sends the reply to the gateway, and the gateway returns it to Bank ABC.

The credit card authorization center may also issue service requests, For example, the authorization center may send balance inquiries to Bank ABC. Domains makes this possible by behaving as a local server that advertises the services available on the other domains as if they were local services.

Domains provides the notion of a local domain to control incoming requests, and to provide a generic addressing framework for the application. Local domains help to provide partial views of an application, that is, a subset of the local services available to a set of remote domains. Each local domain is always represented by at most one gateway server group.

Cooperating with Other Applications

The main goal of the Domains feature is to allow the cooperation of BEA TUXEDO applications with dozens of applications running in other administrative domains. By meeting this goal, the BEA TUXEDO system provides a common framework for controlling very large applications that may include domains running other transaction processing systems.

Domains maintains the BEA TUXEDO client/server model by making access to services on the remote TP System (or accepting service requests from a remote TP System) transparent to both the application programmer land the end-user (see Figure 1-3). Application programmers use the ATMI interface to access the services provided by remote domains, or to define services that can be executed by a remote domain. The following section discusses the implications of these interdomain communications on the different ATMI primitives.

Figure 1-3 Two-way Communication through a Gateway

Domains provides an asynchronous multithreaded gateway able to process both requests going out to remote domains and requests coming in from remote domains. Any request can be processed within a transaction.

Security in Domains

The following four types of security are provided in Domains. These methods can be used separately or in combination with each other:

ATMI Programming Framework

The BEA TUXEDO system provides an application programming framework that simplifies the development of open OLTP applications, and hides the complexity associated with the distribution of the application. The framework is an extended client/server model that offers three programming paradigms:

These paradigms are provided through the Application Transaction Management Interface (ATMI), and are designed to meet the requirements of open OLTP systems. ATMI helps open OLTP application developers structure their code for portability, location transparency, performance, modular growth, and reliability.

Extending the BEA TUXEDO Client-Server Model

Domains extends the BEA TUXEDO client/server model to provide transaction interoperability across TP domains. This extension preserves the model and the ATMI interface by making access to services on the remote domain (or accepting service requests from a remote domain) transparent to both the application programmer and the end user. Domains makes this possible via a highly asynchronous multitasking gateway that processes outgoing and incoming service requests to or from remote domains.

What Is a Domain Gateway?

A Domain gateway is a BEA TUXEDO-supplied server that enables access to and from remote domains (DGW in Figure 1-4). In addition, Domains provides a gateway administrative server (GWADM in Figure 1-4) that enables run-time administration of the Domain gateway group and a Domain administrative server (DMADM in Figure 1-4) that enables run-time administration of the BEA TUXEDO application-wide Domain configuration information. The application administrator enables remote domain access by specifying one or more gateway groups (each containing a domain gateway and a gateway administration server) and a domain administrative group in the GROUPS section of the TUXCONFIG file, and by adding entries for the gateway and the administrative servers in the SERVERS section. Configuration is covered in Chapter 3, "Running Domains."

Figure 1-4 Domains Configuration

Domain gateways support the following functionality:

The functions of the BEA TUXEDO client/server model listed above are realized through the following capabilities of Domain gateways:

Requesting Local and Remote Services Using Request/Response Communication

Domain gateways provide support for the request/response model of communication defined by the ATMI interface. A BEA TUXEDO application can request remote services exactly as if they were offered within the application. Also, remote domains can request services offered within the local application exactly as if they were offered within the remote application.

Support for ATMI Primitives

The following BEA TUXEDO ATMI primitives are logically limited to use within a single application and are not supported across domains:

Support for tpforward(3c) is provided to preserve the portability of applications using this primitive. Forwarded requests are interpreted by Domain gateways as simple service requests. This is illustrated in Figure 1-5 in the simple case of a service using tpforward to send a request to a remote service.

Figure 1-5 Using tpforward to Send a Request to a Remote Service

Enabling Conversational Services Using Conversational Communication

The ATMI interface is a connection-oriented interface that enables clients to establish and maintain a conversation with services configured and coded with the conversational paradigm (instead of the request/response paradigm).

BEA TUXEDO applications can use tpconnect(3c) to open a conversation with a remote service, tpsend(3c) and tprecv(3c) to communicate with this service, and tpdiscon(3c) to end the conversation. Domain gateways maintain the conversation with the remote service, and provide the same semantics for returns (that is, tpreturn with TPSUCCESS or TPFAIL) and disconnects as defined for BEA TUXEDO conversational services.

Note that the ATMI connection-oriented primitives provide half-duplex conversations and that tpforward(3c) is not allowed within a conversational service.

Application administrators indicate whether a remote service is a conversational service by specifying CONV=Y in the DM_REMOTE_SERVICES section of the DMCONFIG file.

Sending Data Between Clients and Servers with Typed Buffers

In the BEA TUXEDO system, applications use typed buffers to send data between clients and servers. The typed buffer mechanism allows application programmers to transfer data without knowing the data representation scheme used by the machines on which the application's clients and servers are running.

A Domain gateway can receive and process service requests sent from workstations, BEA TUXEDO machines, or remote domains with different machine representations. Hence, gateways must be linked with the typed buffer switch defined by the application administrator so the gateways know how, for example, to decode the data sent with the service request.

Domain gateways always try to decode any service request that is received encoded for two reasons:

Following the OSI terminology, there is a difference between abstract syntax (that is, the structure of the data) and transfer syntax (that is, the particular encoding used to transfer the data). Each typed buffer implicitly defines a particular data structure (that is, its abstract syntax) and the encoding rules (that is, its typed buffer operations) required to map the data structure to a particular transfer syntax (for example, XDR).

The BEA TUXEDO system provides a set of predefined buffer types (STRING, CARRAY, FML, VIEW, X_C_TYPE, X_OCTET, and X_COMMON) and the encoding rules required to map these types to the XDR transfer syntax.

Application programmers can supply their own buffer types by adding an instance to the tm_typesw array in $TUXDIR/lib/tmtypesw.c (see tuxtypes(5) and typesw(5)), and by supplying the routines for the new type (see buffer(3c)).

Defining Transaction and Blocking Timeouts

The BEA TUXEDO system provides two timeout mechanisms: a transaction timeout mechanism and a blocking timeout mechanism. The transaction timeout is used to define the duration of a transaction, which may involve several service requests. The timeout value is defined when the transaction is started (with tpbegin(3c)). The blocking timeout is used to define the duration of service requests, that is, how long the application is willing to wait for a reply to a service request. The timeout value is a global value defined in the BLOCKTIME field of the RESOURCES section of the TUXCONFIG file. The transaction timeout always overrides a blocking timeout value.

The BEA TUXEDO transaction timeout mechanism is used unchanged in the Domains framework. This is possible because Domain gateways implement the TMS functionality and therefore are required to handle the TMS_TIMEOUT messages generated by the BBL.

Domain gateways, however, cannot use the BEA TUXEDO blocking timeout mechanism. This is because the blocking timeout mechanism uses information stored in the registry slot assigned to each client or server. Information in the registry slot is used by the local BBL to detect requesters that have been blocked for a time greater than BLOCKTIME. Domain gateways, however, are multitasking servers that may process several service requests at a time. This means that the Domain gateways cannot successfully use the registry slot mechanism.

When a Domain blocking timeout condition arises, the Domain gateway sends an error/failure reply message to the requester, and then it cleans any context associated with the service request.

Ways to Establish Connections Between your Domains

You can specify the conditions under which a local domain gateway tries to establish a connection to a remote domain. You specify these conditions by assigning a value to the CONNECTION_POLICY parameter in the domains configuration file (dmconfig). You can select any of the following connection policies:

Failover and Failback in Domains

Domains-level failover provides fail over to alternate remote domains when a failure is detected with a primary remote domain. It also provides failback to the primary remote domain when it is restored. Domains-level failover/failback defines a remote domain as being available when a network connection can be established to the remote domain, and unavailable when a network connection cannot be established to the remote domain.

Note: For more detailed information on failover and failback, see Chapter 2, "Configuring TDOMAIN."



[Top] [Prev] [Next] [Bottom]