![]() |
![]() |
![]() |
![]() |
![]() |
A server hosted on a machine in an <Default ? Font>Oracle Tuxedo domain. An Oracle Tuxedo CORBA server is built with the Oracle Tuxedo CORBA buildobjserver command. CORBA Servers implement <Default ? Font>Oracle Tuxedo functionality, such as security, transactions, and object state management. Servers can make invocations on any server, inside or outside an <Default ? Font>Oracle Tuxedo domain.A client located within an <Default ? Font>Oracle Tuxedo domain, using the CORBA ORB to make invocations on objects either inside or outside the <Default ? Font>Oracle Tuxedo domain. A native client’s host contains the <Default ? Font>Oracle Tuxedo administrative and infrastructure components, such as tmadmin, FactoryFinder, and ISL/ISH. Native clients use the environmental objects to access CORBA objects. You build native C++ clients with the buildobjclient command or native Java clients using the tools provided by the third-party ORB.A client not located within an <Default ? Font>Oracle Tuxedo domain. A remote client can use the CORBA ORB to make invocations on objects either inside or outside the <Default ? Font>Oracle Tuxedo domain. A remote client’s host does not contain <Default ? Font>Oracle Tuxedo administrative and infrastructure components, such as tmadmin, FactoryFinder, and ISL/ISH; it does contain supporting software (the CORBA ORB) that allows remote clients to invoke objects. Remote clients use the environmental objects to access CORBA objects. You build remote C++ clients with the buildobjclient command or remote Java clients using the tools provided by the third-party ORB.A process that has two purposes: (1) execute code acting as the starter for some business actions and (2) execute method code for invocations on objects. A joint client/server located within an <Default ? Font>Oracle Tuxedo domain. You build native joint C++ client/servers with the buildobjclient command. Java native joint client/servers are not supported.A process that has two purposes: (1) execute code acting as the starter for some business actions and (2) execute method code for invocations on objects. A joint client/server located outside an <Default ? Font>Oracle Tuxedo domain. The joint client/server does not use the <Default ? Font>Oracle Tuxedo TP Framework and requires more direct interaction between the Client and the ORB. You build remote joint C++ client/servers with the buildobjclient command or remote Java client/servers using the tools provided by the third-party ORB.Figure 16‑1 shows an example of an application with remote clients connected. Any request by a remote client to access the CORBA server application is sent over the network to the ISH. This process sends the request to the appropriate server and sends the reply back to the remote client.Figure 16‑1 Bank Application with Remote Clients
• TUXDIR—the location of the Oracle Tuxedo CORBA client software on this remote client. It must be set for the client to connect.
• TOBJADDR—the network address of the ISL that the client wants to contact. This must match the address of an ISL process as specified in the application configuration file.
Note: The network address that is specified by programmers in the Bootstrap constructor or in TOBJADDR must exactly match the network address in the server application’s UBBCONFIG file. The format of the address as well as the capitalization must match. If the addresses do not match, the call to the Bootstrap constructor will fail with a seemingly unrelated error message:
ERROR: Unofficial connection from client at
<tcp/ip address>/<port-number>:
For example, if the network address is specified as //TRIXIE:3500;TLSv1.2 in the ISL command line option string (in the server application’s UBBCONFIG file), specifying either //192.12.4.6:3500;TLSv1.2 or //trixie:3500;TLSv1.2 in the Bootstrap constructor or in TOBJADDR will cause the connection attempt to fail.
On UNIX systems, use the uname -n command on the host system to determine the capitalization used. On Windows systems, see the host system's Network control panel to determine the capitalization used. Or use the environment variable COMPUTERNAME. For example:
echo %COMPUTERNAME%To join remote clients to an application, you must specify the MAXWSCLIENTS parameter in the MACHINES section of the UBBCONFIG file.MAXWSCLIENTS tells the <Default ? Font>Oracle Tuxedo system at boot time how many accesser slots to reserve exclusively for remote clients. For native clients, each accesser slot requires one semaphore. However, the ISH process (executing on the native platform on behalf of remote clients) multiplexes remote client accessers through a single accesser slot and, therefore, requires only one semaphore. This points out an additional benefit of the remote extension. By putting more clients out on remote systems and taking them off the native platform, an application reduces its IPC resource requirements.MAXWSCLIENTS takes its specified number of accesser slots from the total set in MAXACCESSERS. This is important to remember when specifying MAXWSCLIENTS; enough slots must remain to accommodate native clients as well as servers. Do not specify a value for MAXWSCLIENTS greater than MAXACCESSERS. The following table describes the MAXWSCLIENTS parameter.
To join remote clients to an application, you must list the ISL processes in the SERVERS section of the UBBCONFIG file. The processes follow the same syntax for listing any server.You use the following ISL command-line options (CLOPT) to pass information to the ISL process for remote clients. The format of the CLOPT parameter is as follows:For a detailed description of the CLOPT command line options, see the ISL command in the Oracle Tuxedo Command Reference.Listing 16‑1 shows a sample UBBCONFIG file to support remote clients, as follows:
• The MACHINES section shows the default MAXWSCLIENTS as being overridden for two sites. For SITE1, the default is raised to 150, while it is lowered to 0 for SITE2, which does not have remote clients connected to it.
• The SERVERS section shows an ISL process listed for group BANKB1. Its server ID is 500 and it is marked as restartable.
• The IIOP Listener/Handler will listen at host TRIXIE on port 2500.Listing 16‑1 Sample UBBCONFIG File ConfigurationOutbound IIOP support is required to support client callbacks. In <Default ? Font>Oracle WebLogic Enterprise versions 4.0 and 4.1, the ISL/ISH was an inbound half-gateway. Outbound IIOP support adds the outbound half-gateway to the ISL/ISH. (See Figure 16‑2.)Bi-directional and dual-paired connection outbound IIOP provides outbound IIOP to object references located in joint client/servers connected to an ISH. Asymmetric outbound IIOP provides outbound IIOP to object references not located in a joint client/server connected to an ISH, and also allows Oracle Tuxedo CORBA clients to invoke on any object reference, not only object references located in clients currently connected to an ISH.Figure 16‑2 Joint Client/Server IIOP Connections SupportedFigure 16‑3 Bidirectional Connection
1. A server gets an object reference from some source. It could be a naming service, a string_to_object, or it could be passed in through a client, but not located in that client. Since the object reference is not located in a client connected to an ISH, the outgoing call cannot be made using the bidirectional method. The Oracle Tuxedo CORBA server invokes on the object reference.Figure 16‑4 Asymmetric Outbound IIOP
1. A client creates an object reference and calls the Bootstrap function (register_callback_port) and passes the object reference.
3. The client invokes on an Oracle Tuxedo CORBA server and passes the object reference. From the register_callback_port call, the ISH creates a service context containing the host/port. The service context travels with the message to the Oracle Tuxedo CORBA server.
7. Figure 16‑5 Dual-paired Connections Outbound IIOPFor a detailed description of the CLOPT command-line options, see the ISL command in the Oracle Tuxedo Command Reference.To enable the application service version, add the APPVER option to the OPTIONS parameter in *RESOURCES section. For example:To disable the application service version, remove the APPVER option from the OPTIONS parameter in *RESOURCES section. For example:
Note: To enable the application service version through MIB, add the APPVER option to TA_OPTIONS in T_DOMAIN class. For example:To disable the application service version through MIB, remove the APPVER option from TA_OPTIONS in T_DOMAIN class. For example:Three attributes (REQUEST_VERSION, VERSION_POLICY and VERSION_RANGE), are used in configuration files to specify what version and what allowable version range in a configured Tuxedo management entity. These three attributes can be configured in the *GROUP and *RESOUCEsection of the UBB Config File as shown in Listing 16‑2For more information, see UBBCONFIG(5), Section 5 - File Formats, Data Descriptions, MIBs, and System Processes Reference in the Oracle Tuxedo Reference Guide.server1 advertises SVC2, SVC3. Because server1 belongs to GRP1, the REQUEST_VERSION of the server1, SVC2, SVC3 is inherited from GRP1. The configured REQUEST_VERSION of the GRP1 is 2, so REQUEST_VERSION of the server1, SVC2, SVC3 is 2.The VERSION_RANGE, VERSION_POLICY of SVC2, SVC3 are inherited from GRP1. There is no configured VERSION_RANGE for GRP1, so it inherit from the *RESOURCE section, which is "1-2"The VERSION_POLICY of SVC2, SVC3 are inherited from GRP1. The configured VERSION_POLICY of GRP1 is PROPAGATE, so the VERSION_POLICY of SVC2, SVC3 is PROPAGATE.server2 advertises SVC1, SVC2, SVC3. According to the same rule described for server1, the REQUEST_VERSION of server2, SVC1, SVC2, SVC3 is 1, the VERSION_RANGE of SVC1, SVC2, SVC3 are "3-4", the VERSION_POLICY of the SVC1, SVC2, SVC3 is non-PROPAGATE.server3 advertises SVC1, SVC2. According to the same rule described for server1, the REQUEST_VERSION of the server3, SVC1, SVC2 is 3, the VERSION_RANGE of SVC1, SVC2 are "1-3", the VERSION_POLICY of the SVC1, SVC2 is non-PROPAGATE.If a native client joins the application without specifying the group name, its REQUEST_VERSION is 1.If a native client joins the application with a specific group name, such as GRP3, its REQUEST_VERSION is 3.If a /WS client joins the application, its REQUEST_VERSION is determined by the WSL, whose REQUEST_VERSION is 4 according to the UBB config file. So the REQUEST_VERSION of the /WS client is 4.If a JOLT client joins the application, its REQUEST_VERSION is determined by the JSL, whose REQUEST_VERSION is 3 according to the UBB config file. So the REQUEST_VERSION of the /WS client is 4.Listing 16‑3 shows a domain configuration file application service configuration example.No REQUEST_VERSION is configured for REMOTEDOM1, so the domain gateway will propagate the request version of all the requests come from REMOTEDOM1, I.e the domain gateway will not change the incoming request version.The REQUEST_VERSION of the REMOTEDOM2 is configured as 4, so the domain gateway will change the request version of all the requests come from REMOTEDOM2 to 4.The LOCALDOM import R_SVC1 service from REMOTEDOM1 and specify the VERSION_RANGE as "1-3". So the VERSION_RANGE of the R_SVC1 service in the LOCALDOM is "1-3".The LOCALDOM import R_SVC2 service from REMOTEDOM2 and specify the VERSION_RANGE as "4-6". So the VERSION_RANGE of the R_SVC2 service in the LOCALDOM is "4-6".The LOCALDOM import R_SVC3 service without specified VERSION_RANGE. Because the VERSION_RANGE of the imported service is still determined by VERSION_RANGE configuration of the *GROUP and *RESOURCE, the VERSION_RANGE of the *RESOUCE is "1-2", so the VERSION_RANGE of R_SVC3 is "1-2".
1. If server3 needs to call SVC2 during its initialization period, The REQUEST_VERSION of server3 is 3, the candidate services are:
2. If the native client need to call SVC3, the REQUEST_VERSION of the native client is 1, the candidate services are:So the native client will call Server1:SVC1
3. If Server1:SVC1 needs to call SVC3, the SVC1 will propagate the incoming REQUEST_VERSION, in this case the incoming REQUEST_VERSION is 1, so the current REQUEST_VERSION of Server1:SVC1 is 1, the candidate services are:
4. If a request come from REMOTEDOM2, suppose the original REQUEST_VERSION is 6, then the REQUEST_VERSION of the incoming request is changed to 4.
5. If a request comes from REMOTEDOM1, suppose the original REQUEST_VERSION is 2, then the REQUEST_VERSION of the incoming request will still be 2.You can configure the REQUEST_VERSION, VERSION_RANGE or VERSION_POLICY in the *GROUP or *RESOURCE section in the UBB Config file. The low-level configuration overrides the high level-configuration.If there is no user configured service version configuration at any level, the system uses the default value. So the result will be very different for the user configured configuration and default value. If the user modifies the REQUEST_VERSION, VERSION_RANGE or VERSION_POLICY through MIB, it is the user configured service version configuration. It is necessary to provide a method to reset this modification to the default value through MIB, otherwise you cannot restore the UBB config file to its original state.To reset the REQUEST_VERSION, VERSION_RANGE or VERSION_POLICY to default value, you just must set value as DEFAULT.