BEA Logo BEA WebLogic Enterprise Release 5.0

  Corporate Info  |  News  |  Solutions  |  Products  |  Partners  |  Services  |  Events  |  Download  |  How To Buy

 

   WLE Doc Home   |   Administration & Related Topics   |   Previous   |   Next   |   Contents   |   Index

Creating a Configuration File

This chapter discusses the following topics:

About the Configuration File

The configuration file is the primary way to define the configuration of WLE applications. It consists of parameters that the WLE software interprets to create an executable application.

This file is usually created by programmers who develop and build WLE applications. Administrators modify the configuration file as necessary to satisfy application and system requirements.

Build Environment

In addition to the configuration file, you need the following three basic components to build a WLE application:

Forms of the Configuration File

The configuration file exists in two forms:

UBBCONFIG

The UBBCONFIG file is an ASCII version of the configuration file. You can create and edit this version with any editor. Sample configuration files are provided with each of the WLE sample applications, including the simple sample - Simpapp. You must create a UBBCONFIG file for each new application. You can use any of the sample UBBCONFIG files as a starting point and edit it to meet the requirements of your particular application. The syntax used for entries in the file is described in detail in the ubbconfig (5) reference pages in the BEA TUXEDO Reference Manual.

TUXCONFIG

The TUXCONFIG file is a binary version of the configuration file that you generate from the ASCII version using the tmloadcf (1) command. You cannot create this file directly; a UBBCONFIG file must be created first. You can, however, use the tmconfig (1) command to edit many of the parameters in this file while the application is running.

The TUXCONFIG file contains information used by tmboot (1) to start the servers and initialize the bulletin board of a BEA TUXEDO system bulletin board instantiation in an orderly sequence. The tmadmin (1) command line utility uses the configuration file (or a copy of it) to carry out monitoring activities. The tmshutdown (1) command references the configuration file for information needed to shut the application down.

Note: When tmloadcf (1) is executed, the TUXCONFIG environment variable must be set to the full path name of the device or system file where TUXCONFIG is to be loaded.

Configuration File Content

The configuration file can contain up to ten specification sections and many different parameters. Lines beginning with an asterisk (*) indicate the beginning of a specification section and the name of the section immediately follows the asterisk.

Section Names and Functions

Supported section names and their functions are as follows:

Each of these sections and the associated parameters are discussed in the following sections of this document. Also, the syntax used for entries in this file is described in detail in the ubbconfig (5) reference pages in the BEA TUXEDO Reference Manual.

Arrangement of Sections in the Configuration File

The sections must be arranged in the file as follows:

For all sections except the RESOURCES section you can:

Sample UBBCONFIG File

Listing 3-1 shows a basic UBBCONFIG file. This is the UBBCONFIG file used for the University Basic sample application that is provided with the WLE software.

This file contains configuration information in four sections: RESOURCES , MACHINES , GROUPS , and SERVERS . Each of these sections and the associated parameters are discussed in the following sections of this document. This UBBCONFIG file also contains the required SERVICES section, but that section contains no information. For more information about the syntax used for entries in the file, see the ubbconfig (5) reference pages in the BEA TUXEDO Reference Manual.

Listing 3-1 University Basic Sample Application UBBCONFIG File (ubb_b.nt )


*RESOURCES
IPCKEY 55432
DOMAINID university
MASTER SITE1
MODEL SHM
LDBAL N
#----------------------------------------------------------------
*MACHINES

# Specify the name of your server machine
#
PCWIZ
LMID = SITE1

# Pathname of your copy of this sample application.
# Must match "APPDIR" in "setenv.cmd"
#
APPDIR = "C:\MY_APP_DIR\basic"

# Pathname of the tuxconfig file.
# Must match "TUXCONFIG" in "setenv.cmd"
#

TUXCONFIG="C:\MY_APP_DIR\basic\tuxconfig"

# Pathname of the WLE installation.
# Must match "TUXDIR" in "setenv.cmd"
#

TUXDIR="C:\wledir"

MAXWSCLIENTS=10
#----------------------------------------------------------------
*GROUPS

SYS_GRP
LMID = SITE1
GRPNO = 1

ORA_GRP
LMID = SITE1
GRPNO = 2
#----------------------------------------------------------------
*SERVERS

# By default, restart a server if it crashes, up to 5 times in
# 24 hours.
DEFAULT:
RESTART = Y
MAXGEN = 5

# Start the Tuxedo System Event Broker. This event broker must
# be started before any servers providing the NameManager Service #
TMSYSEVT
SRVGRP = SYS_GRP
SRVID = 1

# Start the NameManager Service (-N option). This name manager
# is being started as a Master (-M option).
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 2
CLOPT = "-A -- -N -M"

# Start a slave NameManager Service
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 3
CLOPT = "-A -- -N"

# Start the FactoryFinder (-F) service
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 4
CLOPT = "-A -- -F"

# Start the interface repository server
#
TMIFRSVR
SRVGRP = SYS_GRP
SRVID = 5

# Start the university server
#
univb_server
SRVGRP = ORA_GRP
SRVID = 1
RESTART = N

# Start the listener for IIOP clients
# Specify the host name of your server machine as
# well as the port. A typical port number is 2500
#
ISL
SRVGRP = SYS_GRP
SRVID = 6
CLOPT = "-A -- -n //PCWIZ:2500"

#----------------------------------------------------------------
*SERVICES


Administrative Requirements and Performance

This section provides information to assist you in administering your system.

Configuring NameManager

Adhering to the following requirements is fundamental to successful system administration:

Reliability Requirements

This section contains information that will improve system reliability.

Managing Factory Entries

When application servers "die," they often fail to unregister their factories with the NameManager. In some cases, the FactoryFinder may give out object references for factories that are no longer active. This occurs because the servers containing those factories have become unavailable, have failed to unregister their factories with the NameManager, and there is no other server capable of servicing the interface for that factory.

In general, an application factory can restart shortly thereafter, and then offer the factories. However, to ensure that factory entries are not kept indefinitely, the NameManager is notified when application servers die. Upon receipt of this notification, the NameManager may remove those factory entries that are not supported in any currently active server.

Configuring Multiple NameManagers and FactoryFinders

At a minimum, two NameManagers, a Master and a Slave, must be configured in an application, preferably on different machines, to provide querying capabilities for a FactoryFinder. Multiple FactoryFinders should also be configured in an application.

Designating a Master NameManager

A Master NameManager must be designated in the UBBCONFIG file. All registration activities are sent to the Master NameManager. The Master NameManager then notifies the Slave NameManagers about the updates. If the Master NameManager is down, registration/unregistration of factories is disabled until the Master restarts.

Performance Hint

Implementing the following hint may improve system performance of the administrative servers:

Configuring Resources

The following paragraphs explain how to set RESOURCES parameters that control the application as a whole.

RESOURCES is a required section and must appear as the first section in the configuration file. Some of the parameters in the RESOURCES section serve as system-wide defaults (UID , GID , PERM , MAXACCESSERS , MAXCONV , and MAXOBJECTS ) and can be overridden on a per-machine basis.

Table 3-1 lists some of the parameters in the RESOURCES section and gives sample values for a WLE server application. For more detailed information about these parameters, see the ubbconfig(5) reference page in the BEA TUXEDO Reference Manual.

Table 3-1 RESOURCES Section Parameters

Parameter

Description

Sample Value

Meaning of Sample Value

IPCKEY

The address of shared memory

39210

Indicates a number unique to this application on this system.

MAXSERVERS

IPC limit for the number of server processes

20

Allows up to 20 active server processes for this application.

MAXINTERFACES

The IPC limit for the number of interfaces

25

Allows up to 25 CORBA interfaces in the Bulletin Board interface tables.

The MAXINTERFACES parameter is specific to the WLE system.

MAXSERVICES

The IPC limit for the number of services offered

25

Allows up to 25 services to be advertised.

On WLE systems, each CORBA interface is mapped to a BEA TUXEDO service.

If you are using JavaServers, each JavaServe instance advertises two additional services.

MAXOBJECTS

The IPC limit for the number of CORBA objects

800

Allows up to 800 WLE active CORBA objects in the Active Object Map tables in the Bulletin Board.

The MAXOBJECTS parameter is specific to the WLE system.

MASTER

The administration site (MASTER ) for boot and shutdown

SITE1, SITE2

Specifying LMID SITE1 means the machine is the master. If LMID SITE2 is specified, the machine is the backup.

MODEL

Application architecture, which indicates a single machine or multiple machines application

MP

Indicates that this application has more than one machine in the configuration.

OPTIONS

The options used

LAN, MIGRATE

Indicates a networked application, and that the machine and servers can be migrated to alternate processors.

SECURITY

The level of security

APP_PW

Indicates that this is a secure application; clients are required to supply a password to join.

AUTHSVC

The name of an application authentication service invoked by the system for each client joining the system

"AUTHSVC"

Indicates that in addition to the password, clients must pass authentication from a service called "AUTHSVC" .

SYSTEM_ACCESS

The default mode used by BEA TUXEDO system libraries within application processes to gain access to a BEA TUXEDO system's internal tables

PROTECTED, FASTPATH,
NO_OVERRIDE

Specifying PROTECTED means the application code does not attach to shared memory.

LDBAL

Server load balancing enabled

Y

Indicates that load balancing is on.

This value is always Y in WLE systems; that is, setting LDBAL to N is ignored in the WLE system.

The following sections describe how to set the RESOURCES section parameters.

Setting the Shared Memory Address

You set the address of shared memory using the IPCKEY parameter. The WLE system uses this parameter to allocate application IPC resources so that they may be located easily by new processes joining the application. This key and its variations are used internally to allocate the Bulletin Board, message queues, and semaphores that must be available to new application processes. In a single processor mode, this key names the Bulletin Board; in a multiprocessor mode, this key names the message queue of the DBBL.

The IPCKEY parameter is:

Specifying the Master Machine

You must specify a master machine for all configurations (MASTER ). The master machine controls the booting and administration of the entire application. This machine is specified using a Logical Machine Identifier (LMID ). This is an alphanumeric name chosen by the administrator. (LMID s are discussed further in the section Configuring Machines.)

Two LMID s are specified if migration of the master site is to be allowed. If it is necessary to bring down the master site without shutting down the application, it is necessary to specify the backup master site.

The MASTER parameter:

Setting the Application Type

Among the architectural decisions you need to make for a WLE or a BEA TUXEDO application are the following:

The MODEL parameter specifies whether an application runs on a single processor. It is set to SHM for uniprocessors and also for multiprocessors with global shared memory. A MODEL value of MP is used for multiprocessors that do not have global shared memory, as well as for networked applications. This is a required parameter.

The OPTIONS parameter is a comma-separated list of application configuration options. Two available options are LAN (indicating a networked configuration) and MIGRATE (indicating that application server migration is supported).

Table 3-2 lists the characteristics for the MODEL and OPTIONS parameters.

Table 3-2

Parameter

Characteristics

MODEL

OPTIONS

Model and Options Parameter Characteristics

Note: No OPTIONS are specified for the SHM model.

Defining Access Control (BEA TUXEDO Servers)

The WLE system provides security features, but does not support access control lists (ACLs) at this time. This section applies only to BEA TUXEDO servers.

You can provide basic access to a BEA TUXEDO application using the following three parameters:

Defining IPC Limits

Because most IPC and Shared Memory Bulletin Board tables are statically allocated for speedy processing, it is important to tune them correctly. If they are sized too generously, memory and IPC resources are consumed to excess; if they are set too small, the process fails when the limits are eclipsed.

Currently, the following tunable parameters are related to IPC sizing in the RESOURCES section:

The cost incurred by increasing MAXACCESSERS is one additional semaphore per site per accessor. There is a small fixed semaphore overhead for system processes in addition to that added by the MAXACCESSERS value. The cost of increasing MAXSERVERS and MAXSERVICES is a small amount of shared memory that is kept for each server, service, and client entry, respectively. The general idea for these parameters is to allow for future growth of the application. It is especially important to pay attention to the value of MAXACCESSERS .

Note: Two additional parameters, MAXGTT and MAXCONV , affect shared memory. For details, see the UBBCONFIG (5) reference page in the BEA TUXEDO Reference Manual.

Table 3-3 lists the characteristics for the MAXACCESSERS, MAXSERVERS, MAXINTERFACES, MAXOBJECTS, and MAXSERVICES parameters.

Table 3-3 IPC Sizing Parameters Characteristics

Parameter

Characteristics

MAXACCESSERS

Number of processes on the site that is running the most processes.

You can overwrite the value on a per-machine basis in the MACHINES section.

The cost is one additional semaphore per accesser.

MAXSERVERS

Maximum number of server processes in an application (sum of all sites).

The cost is a small amount of shared memory.

MAXINTERFACES
(WLE servers)

Maximum number of CORBA interfaces advertised in the application (sum of all active interfaces in the domain).
The cost is a small amount of shared memory. Default is 100.

MAXOBJECTS
(WLE system)

Maximum number of CORBA objects in an application (sum of all objects in the domain).

The cost is a small amount of shared memory.

Default is 1000.

You can overwrite the value on a per-machine basis in the MACHINES section.

MAXSERVICES

Maximum number of BEA TUXEDO services advertised in the application (sum of all sites).

The cost is a small amount of shared memory.

Default is 100.

On WLE systems, each CORBA interface is mapped to a BEA TUXEDO service. Make sure you account for the number of services generated.

Enabling Load Balancing

Load balancing is always enabled on WLE systems. On BEA TUXEDO systems, use LDBAL=Y to enable load balancing.

Note: For more information about load balancing, see the section Enabling Load Balancing.

Setting Buffer Type and Subtype Limits

You can control the number of buffer types and subtypes allowed in the application with the MAXBUFTYPE and MAXBUFSTYPE parameters, respectively. The default for MAXBUFTYPE is 16. Unless you are creating many user-defined buffer types, you can omit MAXBUFTYPE . However, if you intend to use many different VIEW subtypes, you may want to set MAXBUFSTYPE to exceed its current default of 32.

The MAXBUFTYPE and MAXBUFSTYPE parameters have the following characteristics:

Parameter

Characteristics

MAXBUFTYPE

Maximum number of buffer types allowed in the system.

Default is 16.

Example: MAXBUFTYPE 20

MAXBUFSTYPE

Maximum number of buffer subtypes allowed in the system.

Default is 32.

Example: MAXBUFSTYPE 40

Setting the Number of Sanity Checks and Timeouts

You can set the number of times the administrative server (BBL) will periodically check the sanity of servers local to its machine. In addition, you can set the number of timeout periods for blocking messages, transactions, and other system activities.

You use the SCANUNIT parameter to control the granularity of such checks and timeouts. Its value (in seconds) can be a positive multiple of 5. Its default is 10.

You use the SANITYSCAN parameter to specify how many SCANUNIT s elapse between sanity checks of the servers. The value of SANITYSCAN * SCANUNIT cannot exceed 300. The default value of SANITYSCAN * SCANUNIT is approximately 120 seconds.

Example: Setting Sanity Checks and Timeouts

A SCANUNIT of 10 and a BLOCKTIME of 3 allows 30 seconds before the client application times out. The BLOCKTIME default is set so that BLOCKTIME * SCANUNIT is approximately 60 seconds. The time is a total of the following times:

Characteristics of the SCANUNIT, SANITYSCAN, and BLOCKTIME Parameters

The SCANUNIT, SANITYSCAN, and BLOCKTIME parameters have the following characteristics:

Parameter

Characteristics

SCANUNIT

Establishes granularity of check intervals and timeouts.

Value must be in multiples of 5 seconds.

Example: SCANUNIT 10

The default is 10 .

SANITYSCAN

Frequency at which the BBL checks the server (in SCANUNIT intervals).

SCANUNIT * SANITYSCAN must not exceed 300.

Default of SCANUNIT * SANITYSCAN is approximately 120 seconds.

Example: SANITYSCAN 3

BLOCKTIME

Timeout for blocking messages.

SCANUNIT * BLOCKTIME must not exceed 300.

Default of SCANUNIT * BLOCKTIME is approximately 60 seconds.

Example: BLOCKTIME 1

Setting Conversation Limits (BEA TUXEDO Servers)

You can specify the maximum number of conversations on a machine with the MAXCONV parameter.

Note: The MAXCONV parameter applies only to the BEA TUXEDO servers.

The MAXCONV parameter has the following characteristics:

Setting the Security Level

You can set three levels of security using the following parameters:

The SECURITY and AUTHSVC parameters have the following characteristics:

Parameter

Characteristics

Security

Accepted values are: NONE (default), APP_PW, USER_AUTH, ACL, and MANDATORY_ACL . The ACL and MANDATORY_ACL parameters are not supported and are ignored on machines using the WLE CORBA API.

Default is NONE .

Example: SECURITY APP_PW

AUTHSVC

The name of the authentication service.

SECURITY APP_PW must be specified.

Default is no authentication service.

Client authentication with Kerberos is possible.

Example: AUTHSVC ``AUTHSVC''

Setting Parameters of Unsolicited Notification (BEA TUXEDO Servers)

This section applies only to BEA TUXEDO servers.

You can set the default method for clients to receive unsolicited messages using the NOTIFY parameter. The client, however, can override this setting in the TPINIT structure when tpinit () is called.

The following three methods can be set for clients:

Two types of signals can be generated: SIGUSR1 and SIGUSR2 . The USIGNAL parameter allows the administrator to choose the type of signal. The default is SIGUSR2 . In applications that choose notification by signals, any MS-DOS client workstations are switched automatically to DIPIN .The NOTIFY and USIGNAL parameters have the following characteristics:

Parameter

Characteristics

NOTIFY

Value of IGNORE means clients should ignore unsolicited messages.

Value of DIPIN means clients should receive unsolicited messages by dip-In.

Value of SIGNAL means clients should receive unsolicited messages by signals.

Default is DIPIN.

Example: NOTIFY SIGNAL

USIGNAL

Value of SIGUSR1 means notify clients with this type of signal.

Value of SIGUSR2 means notify clients with this type of signal.

Default is SIGUSR2.

Example: USIGNAL SIGUSR1

Protecting Shared Memory

You can shield system tables kept in shared memory from application clients or servers using the SYSTEM_ACCESS parameter. This option is useful when applications are being developed because faulty application code can inadvertently corrupt shared memory with a bad pointer. When the application is fully debugged and tested, this option could then be changed to allow for faster responses. Following are the options for this parameter:

The PROTECTED, FASTPATH, and NO_OVERRIDE parameters have the following characteristics:

Parameter

Characteristics

PROTECTED

Internal structures in shared memory will not be corrupted inadvertently by application processes.

FASTPATH (default)

Application processes will join with access to shared memory at all times.

NO_OVERRIDE

The specified option cannot be changed.

Example: SYSTEM_ACCESS PROTECTED, NO_OVERRIDE

Configuring Machines

This section explains how to define parameters for each processor, or machine, on which your application runs.

Identifying Machines in the MACHINES Section

Every machine in an application must have a MACHINES section entry in the configuration file and it must be the second section in the file. The MACHINES section contains the following information specific to each machine in the application:

Example: MACHINES Section

The following example provides a sample MACHINES section of a configuration file:

*MACHINES
gumby LMID=SITE1
TUXDIR="/wledir"
APPDIR="/home/apps/mortgage"
TUXCONFIG="/home/apps/mortgage/tuxconfig"
ENVFILE="/home/apps/mortgage/ENVFILE"
MAXOBJECTS=700
ULOGPFX="/home/apps/mortgage/logs/ULOG"
MAXACCESSERS=100

Parameters in a Sample MACHINES Section

The following table describes the parameters used in the sample MACHINES section and their values.

Parameter

Description

gumby

The machine name obtained with the command uname -n on UNIX systems. On Windows NT systems, see the Computer Name value in the Network Control Panel.

LMID=SITE1

The logical machine identifier of the machine gumby.

TUXDIR

The double quoted string of the full path to the installed WLE or BEA TUXEDO software.

APPDIR

The string of the full path to the application directory, enclosed in double quotes

TUXCONFIG

The string of the full path name of the configuration file, enclosed in double quotes

ENVFILE

The string of the full path name of a file containing environment information, enclosed in double quotes

MAXOBJECTS

Override the system wide value defined in RESOURCES with 700.

ULOGPFX

The string of the full path name prefix of the log file, enclosed in double quotes

MAXACCESSERS

Override the system-wide value with 100 for this machine.

MAXCONV

Override the system-wide value with 15 for this machine.

Reserving the Physical Address and Machine ID

You initially define the address in the address portion, which is the basis for a MACHINES section entry. All other parameters in the entry describe the machine specified by the address. You must set the address to the value printed by calling uname -n on UNIX systems . On Windows NT systems, see the Computer Name value in the Network Control Panel.

The LMID parameter is mandatory and specifies a logical name used to designate the computer whose address has just been provided. It may be any alphanumeric value, and must be unique among other machines in the application.

The address and machine ID and the LMID parameter have the following characteristics:

Identifying the Location of the Configuration File

You identify the configuration file location and file name for the machine with TUXCONFIG , a required parameter. The TUXCONFIG parameter is enclosed in double quotes and represents the full path name up to 64 characters. The path specified must be the same as the environment variable, TUXCONFIG ; otherwise, the tmloadcf (1) will not compile the binary file.

The TUXCONFIG parameter has the following characteristics:

Identifying the Locations of the System and Application Software

Each machine in an application must have a copy of the WLE or BEA TUXEDO system software and application software. You identify the location of system software with the TUXDIR parameter. You identify the location of the application servers with the APPDIR parameter. Both parameters are mandatory. The APPDIR parameter becomes the current working directory of all server processes. The WLE or BEA TUXEDO software looks in the TUXDIR/bin and APPDIR for executables.

The TUXDIR and APPDIR parameters have the following characteristics:

Parameter

Characteristics

TUXDIR

The syntax requires the full path name in a string enclosed in double quotes: TUXDIR="< TUXDIR >" .

I dentifies the location of the WLE or BEA TUXEDO software.

I s a required parameter.

APPDIR

The syntax requires the full path name in a string enclosed in double quotes: APPDIR="< APPDIR>" .

Identifies the location of application servers.

Is a required parameter.

B ecomes the current working directory of server processes.

Identifying the User Log File Location

The user log file contains warning and informational messages, as well as error messages that describe the nature of any ATMI error with a return code of TPESYSTEM and TPEOS (that is, underlying system errors). The user can use this log to track application-related errors. By default, the file is named ULOG. mmddyy where mmddyy is the month, date, and two-digit year. By default, the file is written into the APPDIR .

You can override the default directory and prefix by specifying the ULOGPFX parameter which is the absolute path name of the application log file, without the date. For example, this may be set to APPDIR/logs/ULOG so that logs collect in a particular directory. In a networked application, a central log can be maintained by specifying a remote directory that is mounted on all machines.

The ULOGPFX parameter has the following characteristics:

Examples: ULOGPFX="/usr/appdir/logs/ULOG"
ULOGPFX="/mnt/usr/appdir/logs/BANKLOG"

Specifying Environment Variable Settings for Processes

With the ENVFILE parameter, you can specify a file that contains environment variable settings for all processes to be booted by the WLE or BEA TUXEDO system. The system sets TUXDIR and APPDIR for each process, so these variables should not be specified in this file. You can specify settings for the following variables because they affect an application's operation. Most of these settings apply only to BEA TUXEDO servers, as noted.

The ENVFILE parameter has the following characteristics:

Overriding System-wide Parameters

Table 3-4 lists the system-wide parameters you can override for a specific machine.

Note: You can override values on remote as well as local machines.

Table 3-4 System-wide Parameters That Can Be Overridden

Parameter

Characteristics

UID

The user ID of the administrator.

The default is the ID of the person who runs tmloadcf (1).

Example: UID =3002

On Windows NT, UID value is always 0.

GID

The group ID of the administrator.

The default is the ID of the person who runs tmloadcf (1).

Example: GID =100

On Windows NT, this value is always 0.

PERM

The permissions for access to IPC structures.

The default is 0666.

Example: PERM =0660

On Windows NT, this value is always 0.

MAXACCESSERS

Number of processes on the site that is running the most processes.

You can overwrite the value on a per-machine basis in the MACHINES section.

The cost is one additional semaphore per accessor.

MAXOBJECTS ( WLE system)

Maximum number of active CORBA objects in an application on any machine (sum of all active CORBA objects on the machine).

The cost is a small amount of shared memory.

Default is 1000.

You can overwrite the value on a per-machine basis in the MACHINES section.

MAXGTT

Maximum number of simultaneous global transactions in which a particular machine can be involved.

Configuring Groups

You can use GROUPS to group servers together logically. These groupings can later be used to access resource managers, and for server group migration. The GROUPS section of the configuration file contains the definition of server groups. You must define at least one server group for a machine to have an application server running on it. If no group is defined for a machine, the machine can still be part of the application and you can run the administrative command tmadmin (1) from that site.

For nontransactional, nondistributed systems, groups are relatively simple. You only need to define the basic mapping of group name to group number and logical machine of each group.

Specifying a Group Name, Number, and LMID

The group name is an alphanumeric name by which the group is identified. It must have a unique group number (GRPNO ). Each group must reside entirely on one logical machine (LMID ). The LMID is also mandatory.

Sample GROUPS Section

The example GROUPS section in Listing 3-2 is from the UBBCONFIG file in the WLE University sample Production application. In this sample, the groups specified by the RANGES identifier in the ROUTING section of the UBBCONFIG file need to be identified and configured.

The Production sample specifies four groups: ORA_GRP1, ORA_GRP2, APP_GRP1, and APP_GRP2 . These groups mst be configured, and the machines on which they run on must be identified.

Listing 3-2 Example GROUPS Section


*GROUPS

APP_GRP1
LMID = SITE1
GRPNO = 2
TMSNAME = TMS

APP_GRP2
LMID = SITE1
GRPNO = 3
TMSNAME = TMS

ORA_GRP1
LMID = SITE1
GRPNO = 4

OPENINFO = "ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir=.+MaxCur=5"

CLOSEINFO = ""
TMSNAME = "TMS_ORA"

ORA_GRP2
LMID = SITE1
GRPNO = 5

OPENINFO = "ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir=.+MaxCur=5"

CLOSEINFO = ""
TMSNAME = "TMS_ORA"


The preceding example shows how the ORA_GRP1, ORA_GRP2, APP_GRP1, and APP_GRP2 groups are configured. See the section Example: Factory-based Routing (WLE Servers) to understand how the names in the GROUPS section match the group names specified in the ROUTING section. This match is critical for the routing function to work correctly. Also, any change in the way groups are configured in an application must be reflected in the ROUTING section.

Note: The Production sample application packaged with the WLE software is configured to run entirely on one machine. However, you can easily configure this application to run on multiple machines by specifying the other machines in the LMID parameter. This step assumes that you specify the MODEL MP parameter in the RESOURCES section.

Encrypting Passwords in OPENINFO

Passwords for server groups can be stored in the UBBCONFIG file in encrypted form using the tmloadcf utility.

To secure a password in the UBBCONFIG file, you initially enter a string of five or more continuous asterisks at the place in the OPENINFO statement where a password is to go. The asterisks are a placeholder for the password. For example:

OPENINFO="Oracle_XA: Oracle_XA+Acc=P/Scott/*****+SesTm=30+LogDit=/tmp"

When tmloadcf encounters this string, it prompts the user to create a password. For example:

>tmloadcf -y e:/wle5/samples/atmi/bankapp/xx
Password for OPENINFO (SRVGRP=BANKB1):

The password is stored in the TUXCONFIG in encrypted form. To place the encrypted password in the UBBCONFIG file, use tmunloadcf to generate a UBBCONFIG file. When tmunloadcf is run, the encrypted password is written into the OPENINFO string in the UBBCONFIG with @@ as delimiters. For example:

OPENINFO="Oracle_XA: Oracle_XA+Acc=P/Scott/@@A0986F7733D4@@+SesTm=30+LogDit=/tmp"

When tmloadcf encounters an encrypted password in a UBBCONFIG file generated by tmunloadcf , it does not prompt the user to create a password.

Use of encrypted passwords is recommended for production environments.

Configuring Servers

This following paragraphs explain the SERVERS section parameters that you need to define to configure server processes.

Note: Administrators and programmers who are working in a Java environment should see especially the section Starting JavaServer.

Identifying Server Information in the SERVERS Section

The SERVERS section of the configuration file contains information specific to a server process. While this section is not required, an application without this section has no application servers and little functionality. Each entry in this section represents a server process to be booted in the application. Server-specific information includes the following:

Command-line options supported by the BEA TUXEDO system are described on the servopts (5) reference page in the BEA TUXEDO Reference Manual.

Table 3-5 provides a sample of parameters and their values in the SERVERS section of the configuration file.

Table 3-5 SERVERS Section Parameters

Parameter Example

Meaning

RESTART=Y

Restart the servers.

MAXGEN=5

The MAXGEN parameter specifies a number greater than 0 and less than 256 that controls the number of times the server can be started within the period specified by the GRACE parameter. The default is 1. If the server is to be restartable, MAXGEN must be greater than or equal to 2. The number of restarts is at most number minus 1 times. RESTART must be Y or MAXGEN is ignored.

GRACE=3600

If RESTART is Y , the GRACE parameter specifies the time period (in seconds) during which this server can be restarted as MAXGEN minus 1 times. The number assigned must be equal to or greater than 0. The maximum is 2,147,483,648 seconds (or a little more than 68 years). If GRACE is not specified, the default is 86,400 seconds (24 hours). As soon as one GRACE period is over, the next grace period begins. Setting the grace period to 0 removes all limitations; the server can be restarted an unlimited number of times.

REPLYQ=N

There is no reply queue.

CLOPT="-A"

Specify -A on the command-line of each server.

ENVFILE="/usr/home/envfile"

Read environment settings from the file ENVFILE .

SYSTEM_ACCESS=
FASTPATH

Specifies the default mode used by system libraries within application processes to gain access to the WLE or BEA TUXEDO system's internal tables. Valid access types are FASTPATH or PROTECTED .

FASTPATH specifies that the internal tables should be accessible by the libraries via shared memory for fast access.

Note: Always use FASTPATH when you start a JavaServer .

PROTECTED specifies that while the internal tables are accessible by system libraries via shared memory, the shared memory for these tables is not accessible outside of the system libraries.

NO_OVERRIDE can be specified (alone, or in conjunction with FASTPATH or PROTECTED ) to indicate that the mode selected cannot be overridden by an application process. If SYSTEM_ACCESS is not specified, the default mode is determined by the setting of the SYSTEM_ACCESS keyword in the RESOURCES section.

Defining Server Name, Group, and ID

You initially define the server name entry in the SERVERS section entry. The server name is the name of an executable file built with:

You must provide each server with a group identifier (SRVGRP ). This is set to the name specified in the beginning of a GROUPS section entry. You must also provide each server process in a given group with a unique numeric identifier (SRVID ). Every server must specify a SRVGRP and SRVID . Because the entries describe machines to be booted and not just applications, it is possible that in some cases the same server name will display in many entries.

The server name, SRVGRP , and SRVID parameters have the following characteristics:

Parameter

Characteristics

Server name

Identifies the executable to be booted.

Is built with buildserver (1) on BEA TUXEDO systems, or with buildobjserver (C++) or buildjavaserver (Java) on WLE systems.

Is required, but may not be unique.

SRVGRP

Identifies the group affiliation.

The group name from a GROUPS section entry.

Is required.

SRVID

Is numeric.

Is required and unique within a server group.

Using Server Command-Line Options

The server may need to obtain information from the command line. The CLOPT parameter lets you specify command-line options that can change some defaults in the server.

Note: On BEA TUXEDO systems only, you alternatively can pass user-defined options to the tpsvrinit() function. The standard main() of a server parses one set of options ending with the argument -- , and passes the remaining options to tpsvrinit() .

On WLE systems, the standard main() of a server parses the set of options ending with the argument -- ; it passes the remaining user-defined options to tpsvrinit() on BEA TUXEDO servers, the Server::initialize operation on WLE C++ servers, or the Server.initialize method on WLE Java servers.

The following table provides a partial list of the available options.

Option

Function

-o filename

Redirects standard output to file filename.

-e filename

Redirects standard error to file filename.

-f filename

Specifies a nondefault location, name, or both of an Interface Repository. This option can only be used for WLE Interface Repository servers.

-s services

Advertises services (BEA TUXEDO servers only).

-s x ,y ,z

An example that advertises services x , y , and z .

-s x,y,z: funcname

An example that advertises services x , y , and z , but processes requests for those services with function funcname . This is called aliasing a function name.

-r

An example that specifies that the server should log the services performed.

-A

The default for CLOPT is -A , which tells the server to advertise all the services built into it with buildserver(1) or buildobjserver or buildjavaserver.

Note: You can find other standard main() options in the servopts (5) reference page in the BEA TUXEDO Reference Manual.

Server Command-Line Options

The following options apply to both WLE and BEA TUXEDO servers:

The following options apply only to BEA TUXEDO servers:

A BANKAPP example is CLOPT="-A -- -T 10" .

Starting JavaServer

In the WLE Java system, a server application is represented by a Java Archive (JAR). The JAR must be loaded in the Java Virtual Machine (JVM) to be executed. This JVM must execute in a WLE server to be integrated in a WLE application. By default, the server that loads the JVM is called JavaServer.

You include the options to start JavaServer in the SERVERS section of the application's UBBCONFIG file.

See the section Required Order in Which to Boot Servers (WLE Servers) for important information about starting the WLE servers in the correct order.

Threading Options

The WLE Java system supports the ability to configure multithreaded WLE applications written in Java. A multithreaded WLE Java server can service multiple object requests simultaneously, while a single-threaded WLE Java server runs only one request at a time.

You can establish the number of threads for a Java server application by using the -M option to the JavaServer parameter in the SERVERS section. The -M options are described in the section WLE System Options.

For related information about the MAXACCESSERS parameter, see the section Defining IPC Limits.

Running the WLE Java server in multithreaded mode or in single-threaded mode is transparent to the application programmer. In the current version of WLE Java, you should not establish multiple threads in your object implementation code.

The potential for a performance gain from a multithreaded JavaServer depends on:

If the application is running on a single-processor machine and the application is merely CPU-intensive but without I/O or other external delays, in most cases the multithreaded JavaServer will not perform better. In fact, due to the overhead of switching between threads, the multithreaded JavaServer in this configuration may perform worse than a single-threaded JavaServer .

A performance gain is more likely with a multithreaded JavaServer when the application has some delays or is running on a multiprocessor machine.

Note: If your application uses JNI code to access ATMI, JavaServer must be configured as single-threaded.

Check that SYSTEM_ACCESS=FASTPATH is set for the JavaServer. Do not use SYSTEM_ACCESS=PROTECTED with JavaServer . (If SYSTEM_ACCESS is not specified in the SERVERS section, the default mode is determined by the setting of the SYSTEM_ACCESS keyword in the RESOURCES section.)

If your application is sending messages to the ULOG , it is not helpful to use the process ID to distinguish among the different threads. Instead, you can include in each message the object ID, the thread name, and (if your object is transactional) the transaction ID.

JavaServer Parameters

When you start JavaServer , the parameters are:

JavaServer
SRVTYPE=JAVA
MODULE=jar_file [arg1] [arg2] . . .
SRVGRP=group
SRVID=number

CLOPT="-A -- [java_options][archive_file] [options]"

The JavaServer parameters are as follows:

The following is a sample MODULE parameter for an EJB application:

MODULE="D:\WLEDIR\samples\j2ee\ejb\basic\ejb_basic_statelessSession.jar"

The JavaServer command-line options are as follows:

Example of JavaServer Entry

JavaServer
SRVGRP=BANK_GROUP1
SRVID=8
CLOPT="-A -- -M 10 Bankapp.jar TellerFactory_1"
SYSTEM_ACCESS=FASTPATH

In this example, the JavaServer for Bankapp's TellerFactory interface is started. The -M 10 option enables multithreading for the JavaServer and specifies 10 as the maximum number of worker threads that a particular instance of JavaServer can support.

A worker thread is a thread that is started and managed by the WLE Java software, as opposed to threads started and managed by an application program. Internally, WLE Java manages a pool of available worker threads. When a client request is received, an available worker thread from the thread pool is scheduled to execute the request. When the request is completed, the worker thread is returned to the pool of available threads.

Standard Java Options

The standard Java options are shown in the following list.

-cp, -classpath path

Specifies the path JavaServer uses to look up classes. Overrides the default or the CLASSPATH environment variable if it is set.

-verbose, -verbose:class

Causes JavaServer to print a message to the user log each time a class file is loaded.

-verbose:gc

Causes the garbage collector to print messages in the user log whenever it frees memory.

-verbose:jni

Prints JNI-related messages in the user log, including information about which native methods have been linked and warnings about excessive creation of local references.

-DpropertyName=newValue

Redefines a property value. propertyName is the name of the property whose value you want to change and newValue is the value to change it to.

WLE System Options

The following options are provided by the WLE system:

-M number

Enables multithreading for the JavaServer and specifies the maximum number of worker threads that a particular instance of JavaServer can support. The largest number that you can specify is 500 .

-M 0 (zero) means that there are no worker threads and that all application code is executed in the single infrastructure thread.

-M 1 is not useful because there is only one worker thread, which does not provide significant processing parallelism.

If number is a negative decimal, the server will revert to single-threaded mode. If number is larger than 500 , the server will use a maximum of 500 worker threads. In all cases, if number is invalid, the WLE software logs a warning message to the application's ULOG file.

-noredirect

Causes the System.out and System.err streams to be redirected to the $APPDIR/stdout and $APPDIR/stderr files, respectively. If -noredirect is not specified, the System.out and System.err streams are redirected to the user log (ULOG ).

Nonstandard Java Options

The Java Virtual Machine (JVM) in JDK 1.2 supports the nonstandard options in the following list. To display the nonstandard Java options, use the java -X command at a system prompt.

-Xdebug

Allows the Java debugger, jdb , to attach itself to this JavaServer session. For example:

CLOPT = "-A -- -Xbootclasspath:d:\jdk1.2\lib\tools.jar;d:\jdk1.2\jre\lib\rt.jar -Djava.compiler=NONE -Xdebug BankApp.jar TellerFactory_1"

Note: When -Xdebug is specified in the command line options, JavaServer prints a password in the user log, which must be used when starting the debugging session.

-Xmxx

Sets the maximum size of the memory allocation pool (the garbage collected heap) to x . The default is 16 megabytes of memory. The value of x must be greater than or equal to 1000 bytes. The maximum memory size must be greater than or equal to the startup memory size (specified with the -Xms option, default 16 megabytes). By default, x is measured in bytes. You can specify x in kilobytes or megabytes by appending the letter "k " for kilobytes or the letter "m " for megabytes.

-Xmsx

Sets the startup size of the memory allocation pool (the garbage collected heap) to x . The default is 1 megabyte of memory. The value of x must be greater than 1000 bytes. The startup memory size must be less than or equal to the maximum memory size (specified with the -Xmx option, default 16 megabytes). By default, x is measured in bytes. You can specify x in kilobytes or megabytes by appending the letter "k " for kilobytes or the letter "m " for megabytes.

-Xnoclassgc

Turns off garbage collection of Java classes. By default, the Java interpreter reclaims space for unused Java classes during garbage collection.

-Xbootclasspath:bootclasspath

Specifies a semicolon-separated list of directories, JAR archives, and ZIP archives to search for boot class files. These are used in place of the boot class files included in the JDK version 1.2 software.

-Xrs

Reduces the use of operating system signals.

-Xcheck:jni

Performs additional check for Java Native Interface (JNI) functions.

-Xrunhprof[:help]|[: suboption= value,...]

Enables CPU, heap, or monitor profiling. This option is typically followed by a list of comma-separated suboption = value pairs. Run the command java -Xrunhprof:help to obtain a list of suboptions and their default values.

JavaServer Options

-stat

If set, enables runtime statistics gathering by various parts of JavaServer . Enabling statistics gathering can have adverse impacts on performance.

-jdbclog

If set, causes JDBClog information to be written into the ULOG.

Setting the Server Boot Order

You can specify the server boot sequence with the SEQUENCE parameter, using a number in the range of 1 to 10,000. A server given a smaller SEQUENCE value is booted before a server with a larger value. If two servers have the same SEQUENCE value, they are booted simultaneously (that is, the second server can be started before the first server is finished booting).

If no servers specify SEQUENCE , servers are booted in the order of their appearance within the SERVERS section. If there is a mixture of sequenced and unsequenced servers, the sequenced servers are booted first. Servers are shut down in reverse order of the boot sequence.

This is an optional parameter. The SEQUENCE parameter may be helpful in a large application where control over the order is important. Also, the parallel booting may speed the boot process.

Warning: On a WLE system, there is a strict order in which the WLE system Event Broker, the WLE FactoryFinder object, and the application factories must be booted. A WLE application program will not boot if the order is changed. See the section Required Order in Which to Boot Servers (WLE Servers) for details.

You can boot multiple servers using the MIN parameter, which is a shorthand method of booting. The servers all share the same server options. On a BEA TUXEDO system, if you specify RQADDR , the servers will form an MSSQ set (not supported on a WLE system). The default for MIN is 1.

You specify the maximum number of servers that can be booted with the MAX parameter. The tmboot (1) command boots up to MIN servers at run time. Additional servers can be booted up to MAX . The default is MIN .

The MIN and MAX parameters are helpful in large applications to keep the size of the configuration file manageable. Allowances for MAX values must be made in the IPC resources.

Characteristics of the SEQUENCE, MIN, and MAX Parameters

The SEQUENCE, MIN, and MAX parameters have the following characteristics:

Parameter

Characteristics

SEQUENCE

Is an optional parameter with a numeric range of 1 to 10,000.

Smaller values are booted before larger values.

The same values can be booted in parallel.

Omitted values are booted in the order that they appear in the SERVERS section.

Sequenced parameters are booted before any unsequenced parameters.

MIN

Represents the minimum number of servers to boot during run time.

If RQADDR is specified and MIN>1 , an MSSQ set is created.

MSSQ sets apply only to the BEA TUXEDO system.

All instances have the same server options.

SRVID s are SRVID + n - 1.

The default is 1.

MAX

Represents the maximum number of servers to boot.

Defaults to MIN .

Required Order in Which to Boot Servers (WLE Servers)

The following is the correct order in which to boot the servers on a WLE system. A WLE application program will not boot if the order is changed.

  1. The system event broker, TMSYSEVT.

  2. The TMFFNAME server with the -N option and the -M option, which starts the NameManager service (as a Master). This service maintains a mapping of application-supplied names to object references.

  3. The TMFFNAME server with the -N option only, to start a Slave NameManager service.

  4. The TMFFNAME server with the -F option, to start the FactoryFinder object.

  5. The application JavaServers and C++ servers that are advertising factories.

Listing 3-3 shows the order in which servers are booted for the WLE University Basic application, which is one of the sample applications included with the WLE software. This SERVERS section is excerpted from an edited version of the ubb_b.nt configuration file.

Listing 3-3 Edited SERVERS Section from a University Sample UBBCONFIG


*SERVERS
# By default, restart a server if it crashes, up to 5 times
# in 24 hours.
#
DEFAULT:
RESTART = Y
MAXGEN = 5

# Start the BEA TUXEDO System Event Broker. This event broker
# must be started before any servers providing the
# NameManager Service
#
TMSYSEVT
SRVGRP = SYS_GRP
SRVID = 1

# TMFFNAME is a BEA WLE provided server that
# runs the NameManager and FactoryFinder services.

# The NameManager service is a BEA WLE-specific
# service that maintains a mapping of application-supplied names
# to object references.

# Start the NameManager Service (-N option). This name
# manager is being started as a Master (-M option).
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 2
CLOPT = "-A -- -N -M"

# Start a slave NameManager Service
#

TMFFNAME
SRVGRP = SYS_GRP
SRVID = 3
CLOPT = "-A -- -N"

# Start the FactoryFinder (-F) service
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 4
CLOPT = "-A -- -F"

# Start the interface repository server
#
TMIFRSVR
SRVGRP = SYS_GRP
SRVID = 5

# Start the university server
#
univb_server
SRVGRP = ORA_GRP
SRVID = 6
RESTART = N

# Start the listener for IIOP clients
#
# Specify the host name of your server machine as
# well as the port. A typical port number is 2500
#
ISL
SRVGRP = SYS_GRP
SRVID = 7
CLOPT = "-A -- -n //TRIXIE:2500"


In the example, after the TMSYSEVT and TMFFNAME servers are started, servers are started for:

Identifying Server Environment File Location

You use the ENVFILE parameter in the MACHINES section to specify environment settings. You can also specify the same parameter for a specific server process. If both the MACHINES section ENVFILE and the SERVERS section ENVFILE are specified, both go into effect. For the same variable is defined in both the MACHINES and SERVERS sections, the setting in the SERVERS section prevails.

The server environment file has the following characteristics:

Identifying Server Queue Information

Server queue information controls the creation of, and access to, server message queues. On a BEA TUXEDO system, you can create multiple server single queue (MSSQ ) sets using the RQADDR parameter. For any given server, you can set this parameter to an alphanumeric value. Those servers that offer the same set of services can consolidate their services under one message queue, providing automatic load balancing. You can do this by specifying the same value for all members of the MSSQ set.

Note: MSSQ sets are not supported on a WLE system.

MSSQ Example (BEA TUXEDO Servers)

An MSSQ set is must include servers that offer the same set of services. The MSSQ set is similar to a situation at a bank. If you have four tellers, one line may be formed and everyone is assured of the most equitable wait in line. Understandably, the loan teller is not included because some people do not want loans on a given day. Similarly, MSSQ sets are not allowed if the participant servers offer different services from one another.

The RQPERM parameter allows you to specify the permissions of server request queues, similar to the UNIX system convention (for example, 0666). This allows services to control access to the request queue.

If the service routines within an MSSQ server perform service requests, they must receive replies to their requests on a reply queue. This is done by specifying REPLYQ=Y . By default, REPLYQ is set to N . If REPLYQ is set to Y , you can also assign permissions to it with the RPPERM parameter.

Characteristics of the RQADDR, RQPERM, REPLYQ, and RPPERM Parameters

The RQADDR, RQPERM, REPLYQ, and RPPERM parameters have the following characteristics:

Parameter

Characteristics

RQADDR

It is an alphanumeric value that allows MSSQ sets to be created.

The value is the same for all members of an MSSQ set.

All members of an MSSQ set must offer the same set of services.

Note: MSSQ sets are specific to the BEA TUXEDO system.

RQPERM

Represents the permissions on a request queue. If no parameter is specified, the permissions of the Bulletin Board, as specified by PERM in the RESOURCES section, is used. If no value is specified there, the default of 0666 is used. This opens your application to possible use by any login on the system.

REPLYQ

Specifies whether a reply queue, separate from the request queue, is to be set up for this server. If only one server is using the request queue, replies can be picked up from the request queue without causing problems. On a BEA TUXEDO system, if the server is a member of an MSSQ set and contains services programmed to receive reply messages, REPLYQ should be set to Y so that an individual reply queue is created for this server. If not, the reply is sent to the request queue shared by all servers of the MSSQ set, and there is no way of assuring that it will be picked up by the server that is waiting for it.

RPPERM

Assigns permissions to the reply queue. This parameter is useful only when REPLYQ=Y . If requests and replies are read from the same queue, only RQPERM is needed; RPPERM is ignored.

Defining Server Restart Information

A properly debugged server should not terminate on its own. By default, servers that do terminate while the application is booted will not be restarted by the BEA TUXEDO system. You can set the RESTART parameter to Y if you want the server to restart. The RCMD , MAXGEN , and GRACE parameters are relevant to a server if RESTART=Y .

The RCMD parameter specifies a command to be performed in parallel with restarting a server. This command must be an executable file. The option lets you take some action when a server is being restarted. For example, mail could be sent to the developer of the server or to someone who is auditing such activity.

The MAXGEN parameter represents the total number of lives to which a server is entitled within the period specified by GRACE . The server can then be restarted MAXGEN-1 times during GRACE seconds. If GRACE is set to zero, there is no limit on server restarts. MAXGEN defaults to 1 and may not exceed 256. GRACE must be greater than or equal to zero and must not exceed 2,147,483,647 (231 - 1).

Note: A fully debugged server should not need to be restarted. The RESTART and associated parameters should have different settings during the testing phase than they do during production.

Characteristics of the RESTART, RCMD, MAXGEN, and GRACE Parameters

The RESTART, RCMD, MAXGEN, and GRACE parameters have the following characteristics:

Parameter

Characteristics

RESTART

A setting of Y enables a server to restart.

The default is N .

RCMD

Specifies a command to be performed in parallel with restarting a server.

Lets you take an action when a server is being restarted.

MAXGEN

Represents the maximum number of server lives in a specific interval.

It defaults to 1; the maximum is 256.

GRACE

Represents the interval used by MAXGEN .

Zero represents unlimited restart.

It must be between 0 and 2147,483,647 (231 - 1).

The default is 24 hours.

Specifying a Conversational Server (BEA TUXEDO Servers)

If a server is a conversational server (that is, it establishes a connection with a client), the CONV parameter is required and must be set to Y . The default is N , indicating that the server will not be part of a conversation.

This feature is specific to BEA TUXEDO servers.

The CONV parameter has the following characteristics:

Setting Security Parameters for ISL Servers

The IIOP Server Listener (ISL) process listens for remoting clients requiesting connection. The ISL process is specified in one entry as a server supplied by the WLE system.

The Secure Socket Layer (SSL) protocol defines how processes can communicate in a secure manner over IIOP. You use the -s option on the ISL command to set the required parameters. You only need to set these parameters if you are using the SSL protocol which is installed in the WLE Security Pack.

The SSL parameters for the ISL process communication are:

Parameter

Characteristics

SEC_PRINCIPAL_NAME

Specifies the identity of the IIOP Listener/Handler

SEC_PRINCIPAL_LOCATION

Specifies the location of the private key for the IIOP Listener/Handler.

SEC_PRINCIPAL_PASSWORD

The phase phrase for the private key of the IIOP Listener/Handler.

For more information about setting these parameters, see Using Security.

Defining Server Access to Shared Memory

The SYSTEM_ACCESS parameter determines if the server process may attach to shared memory and thus have access to internal tables outside of system code. During application development, we recommend that such access be denied (PROTECTED ). When the application is fully tested, you can change it to FASTPATH to yield better performance.

This parameter overrides the value specified in the RESOURCES section unless the NO_OVERRIDE value was specified. In this case, the parameter is ignored.

The SYSTEM_ACCESS parameter has the following characteristics:

Configuring JDBC Connection Pools (WLE System)

The JDBCCONNPOOLS section applies only to the WLE system. This section must be placed after the SERVERS section in the configuration file. This section is used to configure connection pooling for Java Database Connectivity (JDBC). Pooling of JDBC connections is provided by the WLE infrastructure to conserve resources and improve performance. Each entry in the section represents a JDBC connection pool. This section has the following characteristics:

JDBC connection pool entries have the following attributes:


Attribute


Required?

Permissible
Values


Default


Description

SRVID

Yes

A number from 1 to 30,001

N/A

A server ID listed in the SERVERS section. In conjunction with SRVGRP, this attribute identifies the Java server for which the connection pool is being configured.

SRVGRP

Yes

A string of up to 30 characters

N/A

Name of a server group for identifying the Java server for which the connection pool is being configured.

DRIVER

Yes for JDBC versions earlier than 2.0

A string of up to 256 characters

N/A

The Java class name in the case of a driver that is not JDBC 2.0-compliant.

URL

Yes for JDBC driver versions prior to 2.0

A string of 0 to 256 characters

N/A

URL for a JDBC driver that is not JDBC 2.0-compliant.

DBNAME

No

A string of 0 to 30 characters

N/A

Database name

DBUSER

No

A string of 0 to 30 characters

N/A

The user account name

DBPASSWORD

No

A string of 0 to 64 characters

N/A

User password.This can be specified as clear text or it can be encrypted using tmloadcf .

USERROLE

No

A string of 0 to 30 characters

-

The SQL role of the user

DBHOST

No

A string of 0 to 30 characters

-

The host name of the database server

DBNETPROTOCOL

No

A string of 0 to 30 characters

-

The protocol used to communicate with the database

DBPORT

No

A number from 0 to 64K

-

The port used for database connections

PROPS

Yes for JDBC driver versions prior to 2.0

A string of 0 to 256 characters

-

Vendor-specific properties of the JDBC driver. This information can be encrypted. See Encrypting Passwords in OPENINFO.

ENABLEXA

No

Y or N

N

If set to Y , indicates that the connection pool supports XA mode.

CREATEONSTARTUP

No

Y or N

Y

If set to Y, indicates that the connection pool is created when the server is started. Otherwise the pool is created when the first request arrives.

LOGINDELAY

No

Any number 0 or greater

0

The number of seconds to wait between each attempt to open a connection to the database. Some database servers cannot handle multiple requests for connections in rapid succession. This property allows you to build in a small delay to allow the database server to catch up.

INITCAPACITY

No

Any number greater than 0

CAPACITYINCR

The number of connections initially supported in the connection pool. This should not exceed MAXCAPACITY.

MAXCAPACITY

Yes

Any number greater than 0

-

The maximum number of connections supported by the connection pool

CAPACITYINCR

Yes

Any number greater than 0

-

The number of connections added to the pool when the current limit is exceeded but the maximum capacity is not yet reached

ALLOWSHRINKING

No

Y or N

N

If set to Y, enables connection pool shrinking.

SHRINKPERIOD

No

Any number 1 or greater

15

The length of time during which the server shrinks the pool to its initial capacity if additional connections are not used. Specified in minutes. If this attribute is specified, it does not require that ALLOWSHRINKING be enabled.

TESTTABLE

Yes if REFRESH is specified or either of TESTONRELEASE or TESTONRESERVE is set to Y

A string of 0 to 256 characters

-

The name of a table in the database that is used to test the viability of connections in the connection pool. The query select count(*) from TESTTABLE is used to test a connection. The table must exist and be accessible to the database user for the connection.

REFRESH

No

Any number 0 or greater

-

Interval specified in minutes. Together with TESTTABLE enables auto-refresh of connections in pools. At the specified interval, each unused connection in the pool is tested by executing a simple SQL query on the connection. If the test fails, the connection's resources are dropped and a new connection is created to replace it.

TESTONRESERVE

No

Y or N

N

When set to Y , the Java server tests a connection after removing it from the pool and before giving it to the client.

TESTONRELEASE

No

Y or N

N

When set to Y , the Java server tests a connection before returning it to the connection pool. If all connections in a pool are in use and a client is waiting for a connection, the client will wait longer while the connection is tested. This feature requires TESTTABLE.

WAITFORCONN

No

Y or N

Y unless WAITTIMEOUT is specified. N if WAITTIMEOUT is specified.

If set to Y, enables an application to wait indefinitely for a connection if none is currently available. If set to N, request for a connection returns to caller.

WAITTIMEOUT

No

Any number 0 or greater

-

Defines the interval (in seconds) for an application to wait for a connection to become available. WAITFORCONN and WAITTIMEOUT are mutually exclusive.

Encrypting DBPASSWORD and PROPS

Both DBPASSWORD and PROPS specify sensitive data that you may want to encrypt. Values for these attributes can be encrypted in the UBBCONFIG file using the tmloadcf and tmunloadcf utilities.

To store a value for DBPASSWORD or PROPS in encrypted form, you initially use a text editor to enter a string of five or more continuous asterisks in the parameter value in place of the password in the UBBCONFIG file. This string of asterisks is a placeholder for the password. The following is a sample DBPASSWORD statement illustrating this:

DBPASSWORD="*******"

When tmloadcf encounters this string of asterisks, it prompts the user to select a password. For example: >tmloadcf -y e:/wle5/samples/atmi/bankapp/xx
DBPASSWORD ("pool2" SRVGRP=GROUP1 SRVID=5):

After entering the password, tmloadcf stores the password in the TUXCONFIG in encrypted form. If you use tmunloadcf to generate a UBBCONFIG file, the encrypted password entered is written into the DBPASSWORD statement in the UBBCONFIG file with @@ as delimiters. The following is a sample DBPASSWORD statement generated by tmunloadcf :

DBPASSWORD="@@A0986F7733D4@@"

When tmloadcf encounters an encrypted password in a UBBCONFIG generated using tmunloadcf , it does not prompt the user to create a password.

Use of encrypted passwords is only recommended for production environments. Clear-text passwords can be used during application development.

Configuring Services (BEA TUXEDO System)

This section applies only to BEA TUXEO systems. For information relevant to WLE systems, see the section Configuring Interfaces (WLE Servers).

Note: Although each WLE interface is mapped to a BEA TUXEDO service, you do not have to configure these services in the SERVICES section of the application's UBBCONFIG file. As the administrator, you only need to account for the generated services in the MAXSERVICES parameter in the RESOURCES section. For more information, see the section Defining IPC Limits.

Identifying BEA TUXEDO Services in the SERVICES Section

You indicate specific information about BEA TUXEDO services in your application in the SERVICES section of the configuration file. Such information, for nontransactional, nondistributed applications, is relatively simple. The SERVICES section includes the following types of information:

Sample SERVICES Section

The following example provides a sample SERVICES section of a configuration file:

*SERVICES
#
DEFAULT: LOAD=50 PRIO=50
RINGUP BUFTYPE="VIEW:ringup"

In this example, the default load and priority of a service are set to 50 ; the one service declared is a RINGUP service that accepts a ringup VIEW as its required buffer type.

Enabling Load Balancing

If you set the RESOURCES section parameter LDBAL to Y , server load balancing occurs. A LOAD factor is assigned to each service performed, which keeps track of the total load of services that each server has performed. Each service request is routed to the server with the smallest total load. The routing of that request causes the server's total to be increased by the LOAD factor of the service requested.

Load information is stored only on the site originating the service request. It would be inefficient for the BEA TUXEDO system to attempt to constantly propagate load information to all sites in a distributed application. When performing load balancing in such an environment, each site knows only about the load it originated and performs load balancing accordingly. This means that each site has different load statistics for a given server (or queue). The server perceived as being the least busy differs across sites.

When load balancing is not activated, and multiple servers offer the same service, the first available queue receives the request.

The LDBAL parameter has the following characteristics:

Controlling the Flow of Data by Service Priority

You can control the flow of data in an application by assigning service priorities using the PRIO parameter. For instance, Server 1 offers Services A, B, and C. Services A and B have a priority of 50 and Service C has a priority of 70. A service requested for C will always be dequeued before a request for A or B. Requests for A and B are dequeued equally with respect to one another. The system dequeues every tenth request in FIFO order to prevent a message from waiting indefinitely on the queue.

Note: A priority can also be changed dynamically with the tpsprio() call.

The PRIO parameter has the following characteristics:

Specifying Different Service Parameters for Different Server Groups

You can specify different load, priority, or other service-specific parameters for different server groups. To do this, you should repeat the service's entry for each group with different values for the SRVGRP parameter.

Sample SERVICES Section

The following example provides a sample SERVICES section of a configuration file:

*SERVICES
A SRVGRP=GRP1 PRIO=50 LOAD=60
A SRVGRP=GRP2 PRIO=70 LOAD=30

This example assigns different service-specific parameters to two different server groups. Service A assigns a priority of 50, and a load of 60 in server group GRP1 ; and a priority of 70, and a load of 30 in server group GRP2 .

Specifying a List of Allowable Buffer Types for a Service

Using the BUFTYPE parameter, you can tune a service to check buffer types independently of the actual service code. This parameter specifies a list of allowable buffer types for a service. Its syntax is a semicolon-separated list of types in the format type[:subtype[,subtype]] . The subtype may be set to * to allow all subtypes.

If the BUFTYPE parameter for a service is set to ALL , then this service accepts all buffer types. If this parameter is not specified, the default is ALL .

Examples of the BUFTYPE Parameter

The BUFTYPE parameter has the following characteristics:

BUFTYPE Example

Meaning

BUFTYPE="FML;VIEW:aud,aud2"

FML and VIEW with subtypes aud and aud2 buffer types are allowed.

BUFTYPE="FML;VIEW:*"

All FML and VIEW buffer types are allowed.

BUFTYPE=ALL

All buffer types are allowed (the default).

Configuring Interfaces (WLE Servers)

This section is applies only to the WLE system.

The WLE software has an INTERFACES section in the UBBCONFIG file. In this section, you define application-wide default parameters for CORBA or EJB interfaces used by the application. For a CORBA interface participating in factory-based routing, you define the interface names and specify the name of the routing criteria that the WLE system should apply to each interface. Factory-based routing is a feature that lets you distribute processing to specific server groups. Factory-based routing is not currently supported for EJB.

In addition to defining the INTERFACES section, you must specify routing criteria in the ROUTING section and the names of groups in the GROUPS section when you implement factory-based routing. For details about the parameters and more information about factory-based routing, see the section Configuring Routing in this chapter.

Specifying CORBA Interfaces in the INTERFACES Section

You indicate specific information about CORBA interfaces used by your application in the INTERFACES section of the configuration file. There are no required parameters. CORBA interfaces need not be listed if no optional parameters are desired. The INTERFACES section includes the following types of information:

The AUTOTRAN, FACTORYROUTING, LOAD, PRIO, SRVGRP, TRANTIME, and TIMEOUT parameters have the following characteristics:

Parameter

Characteristic

AUTOTRAN = {Y|N}

For each CORBA interface, set AUTOTRAN to Y if you want a transaction to start automatically when an operation invocation is received. AUTOTRAN=Y has no effect if the interface is already in transaction mode. The default is N .

The effect of specifying a value for AUTOTRAN is dependent on the transactional policy specified by the system designer in the implementation configuration file (ICF) or Server Description File (XML) for the interface. This transactional policy will become the transactional policy attribute of the associated T_IFQUEUE MIB object at run time. The only time this value actually affects the behavior of the application is if the system designer specified a transaction policy of optional.

Note: To work properly, this feature may be dependent on personal communication between the system designer and the system administrator. If the system administrator sets this value to Y without prior knowledge of the ICF or XML parameters set by the programmer, the actual run-time effort of the parameter might be unknown.

Note: AUTOTRAN=Y is not supported for EJB.

FACTORYROUTING = criterion-name

Note: Specify the name of the routing criteria to be used for factory-based routing for this CORBA interface. You must specify a FACTORYROUTING parameter for interfaces requesting factory-based routing. This feature is not supported for EJB.

LOAD = number

This is an arbitrary number between 1 and 100 that represents the relative load that the CORBA interface is expected to impose on the system. The numbering scheme is relative to the LOAD numbers assigned to other CORBA interfaces used by this application. The default is 50. The number is used by the WLE system to select the best server to route the request.

PRIO = number

Specify the dequeuing priority number for all methods of the CORBA interface. The value must be greater than 0 and less than or equal to 100. 100 is the highest priority. The default is 50.

SRVGRP = server-group-name

Use SRVGRP to indicate that any parameter defined in this portion of the INTERFACES section applies to the interface within the specified server group. For a given CORBA interface, this feature lets you define different parameter values in different server groups.

TRANTIME = number

If AUTOTRAN is set to Y , you must set the TRANTIME parameter, which is the transaction timeout in seconds, for the transactions to be computed. The value must be greater than or equal to zero and must not exceed 2,147,483,647 (231 - 1), or about 70 years. A value of 0 (zero) implies there is no timeout for the transaction. (The default is 300 seconds.) This features is not supported for EJB.

TIMEOUT=number

The amount of time, in seconds, to allow for processing of a method for this CORBA interface. The values must be greater than or equal to 0. A value of 0 indicates that the interface cannot timeout. A timed-out method causes the server processing the method for the interface to terminate with a SIGKILL event. You should consider specifying a timeout value for the longest-running method for the interface.

Specifying FACTORYROUTING Criteria (CORBA only)

For each CORBA interface, the INTERFACES section specifies what kinds of criteria the interface routes on. The INTERFACES section specifies the routing criteria via an identifier, FACTORYROUTING.

University Sample

The University Production sample application demonstrates how to code factory-based routing (see Listing 3-4). You can find the UBBCONFIG files (ubb_p.nt or ubb_p.mk ) for this sample in the directory where the WLE software is installed. Look in the \samples\corba\university\production subdirectory.

Listing 3-4 Production Sample INTERFACES Section


*INTERFACES

"IDL:beasys.com/UniversityP/Registrar:1.0"
FACTORYROUTING = STU_ID

"IDL:beasys.com/BillingP/Teller:1.0"
FACTORYROUTING = ACT_NUM


The preceding example shows the fully qualified interface names for the two interfaces in the University Production sample. The FACTORYROUTING identifier specifies the names of the routing values, which are STU_ID and ACT_NUM , respectively.

To understand the connection between the INTERFACES FACTORYROUTING parameter and the ROUTING section, see the section Example: Factory-based Routing (WLE Servers).

Bankapp Sample

Listing 3-5 shows how factory-based routing is specified in the Bankapp sample application.

Listing 3-5 Bankapp Sample Factory-based Routing


*INTERFACES
"IDL:BankApp/Teller:1.0"
FACTORYROUTING=atmID

*ROUTING
atmID
TYPE = FACTORY
FIELD = "atmID"
FIELDTYPE = LONG
RANGES = "1-5:BANK_GROUP1,
6-10: BANK_GROUP2,
*:BANK_GROUP1


In this example, the IDL:Bankapp/Teller interface uses a factory-based routing scheme called atmID , as defined in the ROUTING section. In the ROUTING section, the sample indicates that the processing will be distributed across two groups. BANK_GROUP1 processes interfaces used by the application when the atmID field is between 1 and 5, or greater than 10. BANK_GROUP2 processes interfaces used by the application when the atmID field is between 6 and 10, inclusive.

Enabling Load Balancing

In WLE systems, load balancing is always enabled.

A LOAD factor is assigned to each CORBA interface invoked, which keeps track of the total load of CORBA interfaces that each server process has performed. Each interface request is routed to the server with the smallest total load. The routing of that request causes the server's total to be increased by the LOAD factor of the CORBA interface requested.

When load balancing is not activated, and multiple servers offer the same CORBA interface, the first available queue receives the request.

Controlling the Flow of Data by Interface Priority

You can control the flow of data in a WLE client or server application by assigning interface priorities using the PRIO parameter. For instance, Server 1 offers Interfaces A, B, and C. Interfaces A and B have a priority of 50 and Interface C has a priority of 70. An interface requested for C will always be dequeued before a request for A or B. Requests for A and B are dequeued equally with respect to one another. The system dequeues every tenth request in FIFO order to prevent a message from waiting indefinitely on the queue.

The PRIO parameter has the following characteristics:

Specifying Different Interface Parameters for Different Server Groups

You can specify different load, priority, or other interface-specific parameters for different server groups. To do this, you should repeat the interface's entry for each group with different values for the SRVGRP parameter.

Configuring Routing

The ROUTING section of UBBCONFIG allows the full definition of the routing criteria named in the INTERFACES section (for WLE factory-based routing) or in the SERVICES section (for BEA TUXEDO data-dependent routing).

For more information about using these parameters to implement factory-based routing or data-dependent routing, see Chapter 5, "Distributing Applications."

Defining Routing Criteria in the ROUTING Section

The following table identifies the information required for an entry in the ROUTING section.

Parameter

Characteristics

criterion_name

This is a string value with a maximum length of 15 characters.

For BEA TUXEDO data-dependent routing, the routing criterion name that you specified as the ROUTING parameter in the SERVICES section.

For WLE factory-based routing, the routing criteria name that you specified as the FACTORYROUTING parameter in the INTERFACES section.

TYPE

Specifies the routing type. The default is TYPE=SERVICE to ensure that existing UBBCONFIG files used in BEA TUXEDO environments continue to work properly. Use TYPE=FACTORY if you are implementing factory-based routing for a WLE interface.

FIELD

The name of the buffer field on which the routing is to be done.

In BEA TUXEDO data-dependent routing, the name of an FML field (for FML buffers) or VIEW structure element name (for VIEW buffers). This is the actual field that is used to route the message. It may be of any data type.

In WLE factory-based routing, this value specifies the name of the routing field. The maximum length is 30 characters. It must correspond to a field name specified for factory-based routing in a factory's call to TP::create_object_reference (C++) or com.beasys.Tobj.TP::create_object_reference (Java) for the interface.

FIELDTYPE

Specifies the type of the routing field. Field types supported are:

SHORT -215 ... 215 - 1 (16 bit)
LONG -231 ... 231 - 1 (32 bit)
FLOAT IEEE single-precision floating point numbers
DOUBLE IEEE double-precision numbers
CHAR A single character; an 8-bit quantity
STRING A null-terminated character array

RANGES

The limits assigned to each criteria. The syntax is RANGES="[val1[-val2]:group1] [,val3[-val4]:group2]...[,*:groupn]"

val1 is a value; val1-val2 is a range; group<n> is either a group name or the wildcard character (*) denoting all group names. val can be a numeric literal, a string enclosed in single quotes (` '), MIN or MAX ; a wildcard in place of a range is Catch-All; or No Limit to the number of ranges.

BUFTYPE

For BEA TUXEDO data-dependent routing, the buffer type allowed. This parameter is similar to its SERVICES section counterpart in that it restricts the routing criteria to a specific set of buffer types and subtypes. Only FML and VIEW types can be used for routing. The syntax is the same as the SERVICES section, a semicolon-separated list of type:subtype[,subtype] . You can specify only one type for a routing criteria. This restriction limits the number of buffer types allowed in routing services.

Specifying Range Criteria in the ROUTING Section

The RANGES parameter provides the actual mapping between field value and group name. Its syntax is as follows:

RANGES="[ val1 [- val2 ]: group1 ] [, val3 [- val4 ]: group2 ]...[,*: groupn ]"

where val1 , and so on, are values of that field and group<n> may be either a group name or the wildcard character (*) denoting that any group may be selected. The * character occupying the place of val at the end is a catch-all choice, that is, what to do if the data does not fall into any range yet specified. val1 would be a numeric literal for numeric fields, and would be enclosed in single quotes (` ') for STRING or CARRAY fields. The field values MIN and MAX (not enclosed in quotes) are provided to allow machine minimum and maximum data values to be expressed. There is no limit to the number of ranges that may be specified, but all routing information is stored in shared memory and incurs a cost there.

Note: Overlapping ranges are allowed, but will map to the first group. For example: RANGES="0-5:Group1,3-5:Group2" , a range value of 4 would route to Group1 .

Example: Factory-based Routing (WLE Servers)

The University Production sample application demonstrates how to implement factory-based routing. You can find the ubb_p.nt or ubb_p.mk UBBCONFIG files for this sample in the directory where the WLE software is installed. Look in the \samples\corba\university\production subdirectory.

The following INTERFACES, ROUTING, and GROUPS sections from the ubb_b.nt configuration file show how you can implement factory-based routing in a WLE application.

The INTERFACES section lists the names of the interfaces for which you want to enable factory-based routing. For each interface, this section specifies what kinds of criteria the interface routes on. This section specifies the routing criteria via an identifier, FACTORYROUTING , as in the following example:

*INTERFACES

"IDL:beasys.com/UniversityP/Registrar:1.0"
FACTORYROUTING = STU_ID

"IDL:beasys.com/BillingP/Teller:1.0"
FACTORYROUTING = ACT_NUM

The preceding example shows the fully qualified interface names for the two interfaces in the Production sample in which factory-based routing is used. The FACTORYROUTING identifier specifies the names of the routing values, which are STU_ID and ACT_NUM , respectively.

The ROUTING section specifies the following data for each routing value:

The following example shows the ROUTING section of the UBBCONFIG file used in the Production sample application:

*ROUTING

STU_ID
FIELD = "student_id"
TYPE = FACTORY
FIELDTYPE = LONG
RANGES = "100001-100005:ORA_GRP1,100006-100010:ORA_GRP2"

ACT_NUM
FIELD = "account_number"
TYPE = FACTORY
FIELDTYPE = LONG
RANGES = "200010-200014:APP_GRP1,200015-200019:APP_GRP2"

The preceding example shows that Registrar objects for students with IDs in one range are instantiated to one server group, and Registrar objects for students with IDs in another range are instantiated in another group. Likewise, Teller objects for accounts in one range are instantiated to one server group, and Teller objects for accounts in another range are instantiated in another group.

The groups specified by the RANGES identifier in the ROUTING section of the UBBCONFIG file need to be identified and configured. For example, the Production sample specifies four groups: ORA_GRP1, ORA_GRP2, APP_GRP1, and APP_GRP2 . These groups need to be configured, and the machines on which they run need to be identified.

The following example shows the GROUPS section of the Production sample UBBCONFIG file. Notice how the names in the GROUPS section match the group names specified in the ROUTING section; this is critical for factory-based routing to work correctly. Furthermore, any change in the way groups are configured in an application must be reflected in the ROUTING section. (Note that the Production sample packaged with the WLE software is configured to run entirely on one machine. However, you can easily configure this application to run on multiple machines.)

*GROUPS

APP_GRP1
LMID = SITE1
GRPNO = 2
TMSNAME = TMS

APP_GRP2
LMID = SITE1
GRPNO = 3
TMSNAME = TMS

ORA_GRP1
LMID = SITE1
GRPNO = 4

OPENINFO = "ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir=.+MaxCur=5"

CLOSEINFO = ""
TMSNAME = "TMS_ORA"

ORA_GRP2
LMID = SITE1
GRPNO = 5

OPENINFO = "ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir=.+MaxCur=5"

CLOSEINFO = ""
TMSNAME = "TMS_ORA"

Example: Factory-based Routing in the Bankapp Sample Application (WLE Servers)

The following example extends the Bankapp sample application to use factory-based routing. The sample included with the WLE software does not contain these parameter settings.

*INTERFACES
"IDL:BankApp/Teller:1.0"
FACTORYROUTING=atmID

*ROUTING
atmID
TYPE = FACTORY
FIELD = "atmID"
FIELDTYPE = LONG
RANGES = "1-5:BANK_GROUP1,
6-10: BANK_GROUP2,
*:BANK_GROUP1

*GROUPS
SYS_GRP
LMID = SITE1
GRPNO = 1
BANK_GROUP1
LMID = SITE1
GRPNO = 2
BANK_GROUP2
LMID = SITE1
GRPNO = 3

In this example, the IDL:Bankapp/Teller interface employs a factory-based routing scheme called atmID , as defined in the ROUTING section. In the ROUTING section, the example indicates that the processing will be distributed across the following two server groups:

Configuring Network Information

You can configure network groups in the NETGROUPS and NETWORK sections of an application's UBBCONFIG file.

Note: For specific information about the tasks involved, see Chapter 6, "Building Networked Applications."

Specifying Information in the NETGROUPS Section

The NETGROUPS section of the UBBCONFIG file describes the network groups available to an application in a LAN environment. There is no limit to the number of network groups to which a pair of machines may be assigned. The method of communication to be used by members of different networks in a network group is determined by the priority mechanism (NETPRIO ).

Every LMID must be a member of the default network group (DEFAULTNET ). The network group number for this group (that is, the value of NETGRPNO ) must be zero. However, you can modify the default priority of DEFAULTNET . Networks defined in releases of the BEA TUXEDO system prior to Release 6.4 are assigned to the DEFAULTNET network group.

The NETGRPNO , NETPRIO , NETGROUP , MAXNETGROUPS , and MAXPENDINGBYTES parameters have the following characteristics:

Parameter

Required/Optional

Description

NETGRPNO = numeric_value

Required

A unique network group number that you must assign to use in failover and failback situations. If this entry describes DEFAULTNET , the numeric value must be zero. Communication with pre-version 6.4 releases of the BEA TUXEDO system use only DEFAULTNET .

NETPRIO = numeric_value

Optional

The priority of this network group. A pair of machines in multiple network groups of the same priority communicates simultaneously over the circuits with the highest priority. If all network circuits of a certain priority are torn down by the administrator or by network conditions, the next lowest priority circuit is used. Retries of the higher priority circuits are attempted. This value must be greater than zero and less than 8,192. If not specified, the default is 100.

Note: In v6.4 of the BEA TUXEDO system, parallel data circuits are prioritized by the network group number (NETGRPNO ) parameter within the priority group number. In future releases, a different algorithm/mechanism may be used to prioritize parallel data circuits.

NETGROUP = string_value

Required

The network group associated with this network entry. All network entries with a NETGROUP parameter of DEFAULTNET are represented in the T_MACHINE class, while NETWORK entries associated with any other NETGROUP are represented in the T_NETMAP class to interoperate with previous releases.

MAXNETGROUPS

Optional

Allows more netgroups to be defined than the default (8).

MAXPENDINGBYTES

Optional

MAXPENDINGBYTES enables you to configure the maximum size of data waiting for the network to become available. There are two situations when MAXPENDINGBYTES is significant:

Sample NETGROUPS Configuration

You can associate network addresses with a network group. The following example illustrates how this capability may be useful.

First State Bank has a network of five machines (A-E). Each machine belongs to two or three of four NETGROUPS that you have defined in the following way:

Every machine belongs to DEFAULTNET (the corporate WAN). In addition, each machine is associated with either the MAGENTA_GROUP or the BLUE_GROUP . Finally, some machines in the MAGENTA_GROUP LAN also belong to the private GREEN_GROUP . Figure 3-1 shows machines A through E in the networks for which they have network addresses.

Figure 3-1 Example of a Network Grouping

The following table shows you which machines have addresses for which groups.

Machines

Has Addresses for These Groups

A and B

DEFAULTNET (the corporate WAN)

MAGENTA_GROUP (LAN)

GREEN_GROUP (LAN)

C

DEFAULTNET (the corporate WAN)

MAGENTA_GROUP (LAN)

D and E

DEFAULTNET (the corporate WAN)

BLUE_GROUP (LAN)

Note: Because the local area networks are not routed among the locations, machine D (in the BLUE_GROUP LAN) may contact machine A (in the GREEN_GROUP LAN) only by using the single address they have in common: the corporate WAN network address.

Configuring the UBBCONFIG File with Netgroups

To set up the configuration just described, the First State Bank system administrator defines each group in the NETGROUPS section of the UBBCONFIG file, as shown in Listing 3-6.

Listing 3-6 Sample NETGROUPS and NETWORK Sections


*NETGROUPS

DEFAULTNET NETGRPNO = 0 NETPRIO = 100 #default
BLUE_GROUP NETGRPNO = 9 NETPRIO = 100
MAGENTA_GROUP NETGRPNO = 125 NETPRIO = 200
GREEN_GROUP NETGRPNO = 13 NETPRIO = 200

*NETWORK

A NETGROUP=DEFAULTNET NADDR="//A_CORPORATE:5723"
A NETGROUP=MAGENTA_GROUP NADDR="//A_MAGENTA:5724"
A NETGROUP=GREEN_GROUP NADDR="//A_GREEN:5725"

B NETGROUP=DEFAULTNET NADDR="//B_CORPORATE:5723"
B NETGROUP=MAGENTA_GROUP NADDR="//B_MAGENTA:5724"
B NETGROUP=GREEN_GROUP NADDR="//B_GREEN:5725"

C NETGROUP=DEFAULTNET NADDR="//C_CORPORATE:5723"
C NETGROUP=MAGENTA_GROUP NADDR="//C_MAGENTA:5724"

D NETGROUP=DEFAULTNET NADDR="//D_CORPORATE:5723"
D NETGROUP=BLUE_GROUP NADDR="//D_BLUE:5726"