13 Using Oracle Tuxedo Distributed Caching (TDC) with Oracle Coherence
This topic contains the following sections:
For a quick start, see the following samples.
- Sample: Using Data Caching for Clients and Servers
- Sample: Using Result Caching for Oracle Tuxedo Services
For more information about the Oracle Tuxedo ATMI APIs that relates to this feature, see Oracle Tuxedo Distributed Caching (TDC) Related ATMI APIs.
- Overview
- Configuring Oracle Coherence
- Configuring Oracle Tuxedo Java Server
- Using Data Caching for Clients and Servers
- Using Result Caching for Oracle Tuxedo Services
- Propagating Execution Context ID (ECID) to Oracle Coherence
- Oracle Tuxedo Distributed Caching (TDC) Related ATMI APIs
- Oracle Tuxedo Distributed Caching (TDC) Property File Properties
- Oracle Tuxedo Distributed Caching (TDC) Related UBBCONFIG Parameters
- UBBCONFIG SERVICES Section
- Oracle Tuxedo Distributed Caching (TDC) Related MIB Attributes
13.1 Overview
This feature leverages Oracle Coherence, and Oracle Tuxedo java server, which is working as a client of Oracle Coherence, assuring you taking all advantages that Oracle Coherence has for caching.
This feature supports the following caching strategies.
As Oracle Coherence and TMJAVASVR are used, it
         requires you to configure them both before actually using TDC.
                  
After these configurations, you can use Oracle Tuxedo Distributed Caching.
13.1.1 Data Caching for Clients and Servers
When you enable data caching, you can store data in cache, and clients on other servers can retrieve the data from the cache. This offers you a new way of sharing data between clients and servers, especially sharing data for or from other servers.
This feature provides you
- High performance
- Unlike storing and retrieving data through queues, files or databases which usually means occupying a large amount of sources and wasting time, storing and retrieving through cache is faster and lighter.
- Various buffer types support
- This feature supports many Oracle Tuxedo buffer types so that
            you do not need to manage to match your data with the data types
            that Oracle Tuxedo supports. The supported Tuxedo buffer types are
            CARRAY,FML,FML32,MBSTRING,STRING,VIEW,VIEW32,XML,RECORD,X_C_TYPE, andX_COMMON.
- Easy approach
- This feature can be transparent for you so you can use it without making any code changes, providing you an easy approach. Oracle Tuxedo encapsulates Oracle Coherence functions in java server container so that you can just use java server to implement all functions that pertain to this feature.
Parent topic: Overview
13.1.2 Result Caching for Oracle Tuxedo Services
When you enable result caching, Oracle Tuxedo first reaches the result from the cache entry instead of reaching the backend service; if it fails to reach it or if the cache or cache entry is expired, Oracle Tuxedo reaches the backend service and the result is stored in the cache for Oracle Tuxedo to reach it next time.
This feature provides you
- High performance
- Synchronous services that return results that do not change often are good candidates to have their results cached by Oracle Tuxedo. This can improve performance by reducing network overhead to access the backend service.
- High availability and scalability
- By integrating with Oracle Coherence, Oracle Tuxedo takes advantage of its specialized scalable protocol and its creation of a cluster. A cluster can be seamlessly expanded to add more memory, processing power or both, and can avoid single point of failure as it transparently fails over if a cluster member fails. As a result this feature provides you a highly availability and scalability.
- Various buffer types support
- This feature supports many Oracle Tuxedo buffer types so that
            you do not need to manage to match your data with the data types
            that Oracle Tuxedo supports. The supported Tuxedo buffer types are
            CARRAY,FML,FML32,MBSTRING,STRING,VIEW,VIEW32,XML,RECORD,X_C_TYPE, andX_COMMON.
- Easy approach
- This feature can be transparent for you so you can use it without making any code changes, providing you an easy approach. Oracle Tuxedo encapsulates Oracle Coherence functions in java server container so that you can just use java server to implement all functions that pertain to this feature.
The following figure illustrates a typical deployment in an Oracle Tuxedo MP domain to use TDC based on Oracle Coherence.
Figure 13-1 Result Caching for Oracle Tuxedo Services

As you can see from this figure, Oracle Tuxedo java server is taken as Oracle Coherence's client (member). You can directly use Oracle Tuxedo java server to cache results from multiple machines without worrying about how cluster members located in different machines communicate with each other.
Parent topic: Overview
13.2 Configuring Oracle Coherence
Configure the following files just like you configure on Oracle Coherence. See Oracle Fusion Middleware Developing Applications with Oracle Coherence for detailed instruction.
- tangosol-coherence-override.xml
- coherence-cache-config.xml
You can deploy the above configuration files into any path as
         long as this path is in the java class path and prior to where
         coherence.jar is. For example, you can put the
         configuration files into ${APPDIR}/config and then
         start Oracle Coherence server like this:
                  
Listing Oracle Coherence Cluster Deployment
java -server -showversion $JAVA_OPTS -Dtangosol.coherence.mode=prod -cp 
$APPDIR/config: ${COHERENCE_HOME}/lib/coherence.jar
com.tangosol.net.DefaultCacheServer13.2.1 tangosol-coherence-override.xml
The following listing is an example; note the properties in
         bold. In this example, coherence_tux is the name of
         the Oracle Coherence cluster whose multicast port number is
         51697 and unicast port number is
         51687.
                     
Listing tangosol-coherence-override.xml
<xml version='1.0'?>
<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-co 
nfig coherence-operational-config.xsd"> 
    <cluster-config>
        <member-identity> 
            <cluster-name 
system-property="tangosol.coherence.cluster">coherence_tux</cluster-name>
     </member-identity>
 
     <unicast-listener>
        <address 
system-property="tangosol.coherence.localhost">localhost</address> 
      <port system-property="tangosol.coherence.localport">51687</port>
  </unicast-listener> 
  <multicast-listener> 
        <port system-property="tangosol.coherence.clusterport">51697</port>    
     </multicast-listener> 
  </cluster-config>
</coherence>Parent topic: Configuring Oracle Coherence
13.2.2 coherence-cache-config.xml
The following listing is an example; note the properties in
         bold. In this example, we create an Oracle Coherence cache named
         tux_distributed.
                     
Listing coherence-cache-config.xml
<?xml version="1.0"?> 
<cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config 
coherence-cache-config.xsd">
    <caching-scheme-mapping>
      <cache-mapping>
        <cache-name>tux_distributed</cache-name>
        <scheme-name>distributed</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<caching-schemes>
  <distributed-scheme>
    <scheme-name>distributed</scheme-name>  
    <service-name>DistributedCache</service-name>
      <lease-granularity>member</lease-granularity>
    <backing-map-scheme>
        <local-scheme/>
        </backing-map-scheme>
        <autostart>true</autostart>
      </distributed-scheme>
    </caching-schemes>
  </cache-config>Parent topic: Configuring Oracle Coherence
13.3 Configuring Oracle Tuxedo Java Server
13.3.1 Configuring Oracle Tuxedo Java Server Configuration file
Oracle Tuxedo Distributed Caching (TDC) introduces a new system-supplied Oracle Tuxedo java server, which converts the caching request to Oracle Coherence and sends back the reply. It works as a client of Oracle Coherence.
The java package used by this java server is
         com.oracle.tuxedo.tdcj.jar located in
         ${TUXDIR}/udataobj/tuxj/tdc.
                     
The following listing is an example of Oracle Tuxedo Java Server Configuration File that enables TDC. For more information, see Java Server Configuration Schema File for version 2.0.
- In general, you should not change the code lines in bold. The
            class com.oracle.tuxedo.tdc.TCache4Coherenceis the main class used by TDC which is located in${TUXDIR}/udataobj/tuxj/tdc/com.oracle.tuxedo.tdcj.jar.
- It is necessary to change the code lines in Italic due to
            different environment. Note that <APPDIR>must be replaced with the real path to make the file work.
Listing Configuring Oracle Tuxedo Java Server Configuration File
<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig version="2.0">
    <java-config>
      <jvm-options>-XX:MaxPermSize=192m</jvm-options>
      <jvm-options>-server</jvm-options>
<jvm-options>-Dtangosol.coherence.distributed.localstorage=false</jvm-options>
      <jvm-options>-Dtangosol.coherence.mode=prod</jvm-options>
    </java-config>
<tux-config>
        <server-clopt>-f <APPDIR>/config/tdcsvr_coh.conf</server-clopt>
</tux-config>
<classpath-config>
</classpath-config>
<tux-resources>
</tux-resources>
<jdbc-resources>
</jdbc-resources>
<tux-server-config>
<classpath>${TUXDIR}/udataobj/tuxj/tdc/com.oracle.tuxedo.tdcj.jar</classpath>
        <classpath>${TUXDIR}/udataobj/tuxj/tdc/dms.jar</classpath>
        <classpath>${TUXDIR}/udataobj/tuxj/tdc/ojdl.jar</classpath>    
        <classpath>${APPDIR}/config</classpath>
        <classpath>${COHERENCE_HOME}/lib/coherence.jar</classpath>
        <server-class name="com.oracle.tuxedo.tdc.TCache4Coherence">
        </server-class>
     </tux-server-config>
</TJSconfig>Parent topic: Configuring Oracle Tuxedo Java Server
13.3.2 Configure Oracle Tuxedo Distributed Caching (TDC) Property File
It is required to add a new property file which specifies all properties about the caches for TDC. Oracle Tuxedo java server advertises services using the name of these caches. You can define many Oracle Tuxedo caches in a single property file.
The following listing shows a template of the property file. You
         can find this template in
         $TUXDIR/udataobj/tuxj/tdc/tdcsvr_coh.conf.template. In
         this template, two Oracle Tuxedo cache names are configured:
         tc1 and tc2. tc1 uses Oracle
         Coherence cache tux_distributed and tc2
         uses Oracle Coherence cache tux2_distributed.
                     
See Oracle Tuxedo Distributed Caching (TDC) Property File Properties for more information about its properties.
Listing TDC Property File Template
#* global option encoding setting
#options.encoding=no
 
#* configurations for Tuxedo cache "tc"
 
#* option encoding setting
#cache.options.encoding.tc=no
#* physical cache used in Oracle Coherence
coh.cache.name.tc=tux_distributed
 
#* configurations for Tuxedo cache "tc2"
#
#* option encoding setting
#cache.options.encoding.tc2=no
#* physical cache used in Oracle Coherence
#coh.cache.name.tc2=tux2_distributedParent topic: Configuring Oracle Tuxedo Java Server
13.4 Using Data Caching for Clients and Servers
13.4.1 Steps for Using Data Caching for Clients and Servers
- Configure Oracle Coherence
- Start Oracle Coherence Cluster
- Configure Oracle Tuxedo Java Server
- Configure UBBCONFIG
- Put an Oracle Tuxedo buffer associated with a key into an Oracle Tuxedo cache
- Get an Oracle Tuxedo buffer from an Oracle Tuxedo cache according to the key
Parent topic: Using Data Caching for Clients and Servers
13.4.1.1 Configure Oracle Coherence
For how to configure Oracle Coherence, see Configuring Oracle Coherence.
Parent topic: Steps for Using Data Caching for Clients and Servers
13.4.1.2 Start Oracle Coherence Cluster
If there is no Oracle Coherence Cluster is running, start your
         own cluster, making sure you configure the path of the
         configuration files into the Java Class Path and ahead of where
         coherence.jar is. See the following listing for an
         example.
                        
Parent topic: Steps for Using Data Caching for Clients and Servers
13.4.1.3 Configure Oracle Tuxedo Java Server
See Configuring Oracle Tuxedo Java Server for instruction.
Parent topic: Steps for Using Data Caching for Clients and Servers
13.4.1.4 Configure UBBCONFIG
Configure TMJAVASVR on UBBCONFIG.
         TMJAVASVR uses multi-threaded configuration to improve
         performance. Multi-instances configuration is also used to gain
         higher availability.
                        
Listing UBBCONFIG for TMJAVASVR
*RESOURCE
...
MODEL       SHM
...
*MACHINES
"m1"        LMID=L1
...
*GROUPS
JGRP1   LMID=L1 GRPNO=10
 
...
TMJAVASVR   SRVGRP=JGRP1   SRVID=10
            MINDISPATCHTHREADS=4 MAXDISPATCHTHREADS=4 MIN=2 MAX=2
            CLOPT="-- -c /home/scott/tuxedo/dom1/config/tdcsvr_coh.xml"    
...Parent topic: Steps for Using Data Caching for Clients and Servers
13.4.1.5 Put an Oracle Tuxedo buffer associated with a key into an Oracle Tuxedo cache
On Oracle Tuxedo native client or workstation client, use TDC
         API tpgetcache and tpcacheput to put an
         Oracle Tuxedo buffer associated with a key into an Oracle Tuxedo
         cache. For more information about tpgetcache and
         tpcacheput, see Oracle
            Tuxedo Distributed Caching (TDC) Related ATMI APIs.
                        
Listing Put an Oracle Tuxedo buffer associated with a key into an Oracle Tuxedo cache
...
    TCACHE* mycache = NULL;
    char mykey[128];
    char* databuf = NULL;
 
    tpinit(NULL);
    databuf = tpalloc("STRING", NULL, 256);
 
    mycache = tpgetcache("tc");
    strcpy(mykey, "myname");
    strcpy(databuf, "scott");
    tpcacheput(mycache, mykey, databuf, 0, 0L);
 
    tpfree(databuf);
...Parent topic: Steps for Using Data Caching for Clients and Servers
13.4.1.6 Get an Oracle Tuxedo buffer from an Oracle Tuxedo cache according to the key
On Oracle Tuxedo native client or workstation client, use TDC
         API tpgetcache and tpcacheget to get an
         Oracle Tuxedo buffer associated with a key into an Oracle Tuxedo
         cache. For more information about tpgetcache and
         tpcacheget, see Oracle
            Tuxedo Distributed Caching (TDC) Related ATMI APIs.
                        
Listing Get an Oracle Tuxedo buffer from an Oracle Tuxedo cache according to the key
...
    TCACHE* mycache = NULL;
    char mykey[128];
    char* databuf = NULL;
 
    tpinit(NULL);
    databuf = tpalloc("STRING", NULL, 256);
 
    mycache = tpgetcache("tc");
    strcpy(mykey, "myname");
    tpcacheget(mycache, mykey, &databuf, NULL, 0L); 
    tpfree(databuf);
...Parent topic: Steps for Using Data Caching for Clients and Servers
13.4.2 Sample: Using Data Caching for Clients and Servers
Suppose ${APPDIR} is
         /home/scott/tuxedo/dom1.
                     
- Sample: Configure Oracle Coherence
- Sample: Start Oracle Coherence cluster
- Sample: Configure Oracle Tuxedo Java Server
- Sample: Configure TMJAVASVR in UBBCONFIG
- Sample: Put an Oracle Tuxedo buffer associated with a key into an Oracle Tuxedo cache
- Sample: Get an Oracle Tuxedo buffer from an Oracle Tuxedo cache according to the key
Parent topic: Using Data Caching for Clients and Servers
13.4.2.1 Sample: Configure Oracle Coherence
- Prepare tangosol-coherence-override.xmlin${APPDIR}/config. See the following listing.Configure Oracle Coherence cluster coherence_tuxwhose multicast port number is51697and unicast port number is51687.
- Prepare coherence-cache-config.xmlin${APPDIR}/config. See the following listing.Configure Oracle Coherence cache tux_distributed.
Listing Prepare tangosol-coherence-override.xml
<?xml version='1.0'?>
<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-co
nfig coherence-operational-config.xsd">
   <cluster-config>
      <member-identity>
          <cluster-name 
system-property="tangosol.coherence.cluster">coherence_tux</cluster-name>
    </member-identity>
    <unicast-listener>
      <address 
system-property="tangosol.coherence.localhost">localhost</address>
       <port system-property="tangosol.coherence.localport">51687</port>
    </unicast-listener> 
    <multicast-listener>
          <port system-property="tangosol.coherence.clusterport">51697</port>
       </multicast-listener>
   </cluster-config>
</coherence>Listing Prepare coherence-cache-config.xml
<?xml version="1.0"?>
<cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config 
coherence-cache-config.xsd">
<caching-scheme-mapping>
  <cache-mapping>
     <cache-name>tux_distributed</cache-name>
     <scheme-name>distributed</scheme-name>
   </cache-mapping>
</caching-scheme-mapping>
 
<caching-schemes>
  <distributed-scheme>
    <scheme-name>distributed</scheme-name>  
    <service-name>DistributedCache</service-name>
      <lease-granularity>member</lease-granularity>
    <backing-map-scheme>
       <local-scheme/>
     </backing-map-scheme>
      <autostart>true</autostart>
    </distributed-scheme>
  </caching-schemes>
</cache-config>Parent topic: Sample: Using Data Caching for Clients and Servers
13.4.2.2 Sample: Start Oracle Coherence cluster
If no Oracle Coherence cluster is running, you can start your own cluster.
java -server -showversion $JAVA_OPTS -Dtangosol.coherence.mode=prod -cp 
${APPDIR}/config: ${COHERENCE_HOME}/lib/coherence.jar 
com.tangosol.net.DefaultCacheServerParent topic: Sample: Using Data Caching for Clients and Servers
13.4.2.3 Sample: Configure Oracle Tuxedo Java Server
- Preparing tdcsvr_coh.xml for Oracle Tuxedo java server
- Prepare tdcsvr_coh.conf for TDC property file
Parent topic: Sample: Using Data Caching for Clients and Servers
13.4.2.3.1 Preparing tdcsvr_coh.xml for Oracle Tuxedo java server
Preparing tdcsvr_coh.xml for Oracle Tuxedo java
         server in ${APPDIR}/config.
                           
See the following Listing, where the<server-clopt>-f /home/scott/tuxedo/dom1/config/tdcsvr_coh.conf</server-clopt> property specifies the TDC property file.
                           
Listing Configure Oracle Tuxedo Java Server Configuration File
<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig version="2.0">
    <java-config>
        <jvm-options>-XX:MaxPermSize=192m</jvm-options>
        <jvm-options>-server</jvm-options>
<jvm-options>-Dtangosol.coherence.distributed.localstorage=false</jvm-options>
        <jvm-options>-Dtangosol.coherence.mode=prod</jvm-options>
   </java-config>
<tux-config>
      <server-clopt>-f 
/home/scott/tuxedo/dom1/config/tdcsvr_coh.conf</server-clopt>
</tux-config>
<classpath-config>
</classpath-config>
<tux-resources>
</tux-resources>
<jdbc-resources>
</jdbc-resources>
<tux-server-config>
<classpath>${TUXDIR}/udataobj/tuxj/tdc/com.oracle.tuxedo.tdcj.jar</classpath>
      <classpath>${TUXDIR}/udataobj/tuxj/tdc/dms.jar</classpath>
      <classpath>${TUXDIR}/udataobj/tuxj/tdc/ojdl.jar</classpath>
      <classpath>${COHERENCE_HOME}/lib/coherence.jar</classpath>
      <classpath>${APPDIR}/config</classpath>
      <server-class name="com.oracle.tuxedo.tdc.TCache4Coherence">
      </server-class>
    </tux-server-config>
</TJSconfig>Parent topic: Sample: Configure Oracle Tuxedo Java Server
13.4.2.3.2 Prepare tdcsvr_coh.conf for TDC property file
Prepare tdcsvr_coh.conf for TDC property file in
         
                                 .
                           ${APPDIR}/config
                                 
See the following Listing, where it configures Oracle Tuxedo
         cache tc, which actually uses Oracle Coherence cache
         tux_distributed.
                           
Listing Configure Oracle Tuxedo Distributed Caching (TDC) Property File
#* global option encoding setting
#options.encoding=no
 
#* configurations for Tuxedo cache "tc"
 
#* option encoding setting
#cache.options.encoding.tc=no
#* physical cache used in Oracle Coherence
coh.cache.name.tc=tux_distributedParent topic: Sample: Configure Oracle Tuxedo Java Server
13.4.2.4 Sample: Configure TMJAVASVR in UBBCONFIG
Configure TMJAVASVR in UBBCONFIG.
                        
See the following Listing, where multi-threaded configuration is
         enabled and TMJAVASVR configuration file
         tdcsvr_coh.xml is set.
                        
Listing Configure TMJAVASVR in UBBCONFIG
*RESOURCES
...
MODEL SHM
...
*MACHINES
"m1"      LMID=L1
...
*GROUPS
JGRP1     LMID=L1 GRPNO=10
 
...
TMJAVASVR SRVGRP=JGRP1 SRVID=10
           MINDISPATCHTHREADS=4 MAXDISPATCHTHREADS=4 MIN=2 MAX=2
           CLOPT="-- -c /home/scott/tuxedo/dom1/config/tdcsvr_coh.xml"
...Parent topic: Sample: Using Data Caching for Clients and Servers
13.4.2.5 Sample: Put an Oracle Tuxedo buffer associated with a key into an Oracle Tuxedo cache
Put an Oracle Tuxedo STRING buffer associated with
         a key mykey into an Oracle Tuxedo cache
         tc.
                        
Listing Put an Oracle Tuxedo buffer
...
      TCACHE* mycache = NULL;
      char mykey[128];
      char* databuf = NULL;
 
      tpinit(NULL);
      databuf = tpalloc("STRING", NULL, 256);
 
      mycache = tpgetcache("tc");
      strcpy(mykey, "myname");
      strcpy(databuf, "scott");
      tpcacheput(mycache, mykey, databuf, 0, 0L);  
 
      tpfree(databuf);
...
 Parent topic: Sample: Using Data Caching for Clients and Servers
13.4.2.6 Sample: Get an Oracle Tuxedo buffer from an Oracle Tuxedo cache according to the key
Get an Oracle Tuxedo typed buffer from an Oracle Tuxedo cache
         tc according to a key mykey.
                        
Listing Get an Oracle Tuxedo buffer
...
    TCACHE* mycache = NULL;
    char mykey[128];
    char* databuf = NULL;
 
    tpinit(NULL);
    databuf = tpalloc("STRING", NULL, 256);
 
    mycache = tpgetcache("tc");
    strcpy(mykey, "myname");
    tpcacheget(mycache, mykey, &databuf, NULL, 0L);  
    tpfree(databuf);
...Parent topic: Sample: Using Data Caching for Clients and Servers
13.5 Using Result Caching for Oracle Tuxedo Services
13.5.1 Steps for Using Result Caching for Oracle Tuxedo Services
- Configure Oracle Coherence
- Start Oracle Coherence Cluster
- Configure Oracle Tuxedo Java Server
- Configure UBBCONFIG
You can also use MIB to dynamically make changes for TDC.
- Configure Oracle Coherence
- Start Oracle Coherence Cluster
- Configure Oracle Tuxedo Java Server
- Configure UBBCONFIG
- Use MIB to Dynamically Make Changes for TDC
Parent topic: Using Result Caching for Oracle Tuxedo Services
13.5.1.2 Start Oracle Coherence Cluster
If there is no Oracle Coherence Cluster is running, start your
         own cluster, making sure you configure the path of the
         configuration files into the Java Class Path and ahead of where
         coherence.jar is. See the following Listing for an
         example.
                        
13.5.1.3 Configure Oracle Tuxedo Java Server
See Configuring Oracle Tuxedo Java Server for instruction.
13.5.1.4 Configure UBBCONFIG
Configure TDC on UBBCONFIG.
                        
13.5.1.4.1 SERVICES Section
Specify CACHING=string_value as the name of the caching criteria used for caching for this service. For more information, see Oracle Tuxedo Distributed Caching (TDC) Related UBBCONFIG Parameters.
                           
Parent topic: Configure UBBCONFIG
13.5.1.4.2 CACHING Section
Specify this CACHING section on UBBCONFIG. For more information, see Oracle Tuxedo Distributed Caching (TDC) Related UBBCONFIG Parameters.
                           
The following Listing shows an example, where
- 
                                 Svccache1uses Oracle Tuxedo cachetc1. Other configurations are default. (It meansKEY=$service+$requestandKEY_BUFTYPE=STRING).
- 
                                 Svccache2uses Oracle Tuxedo cachetc1. The request is used to figure out the key when caching the response data. Other configurations are default. (It meansKEY_BUFTYPE=STRING).
- 
                                 Svccache3uses Oracle Tuxedo cachetc1. The fixed stringkey1is used as the key. Other configurations are default.
- 
                                 Svccache4uses Oracle Tuxedo cachetc1. The buffer type of the request message to the service isVIEW32whose subtype ismystruct1. The value of the fieldnamein the subtypemystruct1is used as the key.
- 
                                 Svccache5uses Oracle Tuxedo cachetc1. The buffer types of theFML32andVIEW32: mystruct1have the samefield1andfield2(name and data type should be the same; value can be different); the request message will use the values offield1andfield2as the key.
Listing UBBCONFIG CACHING Section Configuration
...
*CACHING
Svccache1
      CACHENAME="tc1"
 
Svccache2
      CACHENAME="tc1"
      KEY="$request"
 
Svccache3
      CACHENAME="tc1"
      KEY="key1"
 
Svccache4
      CACHENAME="tc1"
      KEY="$request"
      KEY_BUFTYPE="IEW32:mystruct1"
      KEY_FIELD="name"
 
Svccache5  
      CACHENAME="tc1"
      KEY="mykey_$request"
      KEY_BUFTYPE="FML32;VIEW32:mystruct1"
         KEY_FIELD="field1+field2"
 
...Parent topic: Configure UBBCONFIG
13.5.1.5 Use MIB to Dynamically Make Changes for TDC
You can use MIB to dynamically make changes for TDC.
For more information, see Oracle Tuxedo Distributed Caching (TDC) Related MIB Attributes.
13.5.2 Sample: Using Result Caching for Oracle Tuxedo Services
- Sample: Configure VIEWTABLE
- Sample: Configure UBBCONFIG
- Sample: Set on Server Side
- Sample: Set on Client Side
Parent topic: Using Result Caching for Oracle Tuxedo Services
13.5.2.1 Sample: Configure VIEWTABLE
Configure your VIEWTABLE. See the following
         Listing, where the buffer type is VIEW and the subtype
         is mystruct1.
                        
Listing Configure VIEWTABLE
...
VIEW mystruct1
# type     cname     fbname     count     flag     size     null
string     name         -         1         -       31       -
string     address      -         1         -       255      -
char       age          -         1         -        -       -
END
...Parent topic: Sample: Using Result Caching for Oracle Tuxedo Services
13.5.2.2 Sample: Configure UBBCONFIG
Configure your UBBCONFIG.
         See the following Listing, where
                        
- 
                                 
                              TMJAVASVRis configured
- Multi-threaded configuration is enabled and the configuration
            file tdcsvr_coh.xmlis set.
- Caching is enabled
- Oracle Tuxedo service mysvc1uses caching entrysvccache1to improve performance. svccache1 uses Oracle Tuxedo cachetc1to cache the service result. The corresponding key of the response is the value of the request data.
Listing Configure UBBCONFIG
...
*GROUPS
JGRP1 LMID=L1 GRPNO=10
 
...
TMJAVASVR       SRVGRP=JGRP1 SRVID=10
                MINDISPATCHTHREADS=4 MAXDISPATCHTHREADS=4 MIN=2 MAX=2
                CLOPT="-- -c /home/scott/tuxedo/dom1/config/tdcsvr_coh.xml"
...
*SERVICES
mysvc1
        ...
        CACHING="svccache1"
...
*CACHING
svccache1
       CACHENAME="tc1"
       KEY=$request
...Parent topic: Sample: Using Result Caching for Oracle Tuxedo Services
13.5.2.3 Sample: Set on Server Side
Configure on server side. See the following Listing, where the
         request of mysvc1 is set as STRING and
         the response of mysvc1 is a VIEW32
                           mystruct1.
                        
Listing Configure on Server Side
...
struct mystruct1* rsp;
int tpsvrinit(int argc, char *argv[])
{
       rsp = tpalloc("VIEW32", "mystruct1", sizeof(struct mystruct1));
}
...
void mysvc1(TPSVCINFO *rqst)
{
      int ret = 0;
      /*rqst->data is the name, getrsp will get data from the database and 
store into rsp*/
      ret = getrsp(rqst->data, rsp);
      if(ret < 0){
              tpreturn(TPFAIL, 0, NULL, 0L, 0);
      }
      tpreturn(TPSUCCESS, 0, rsp, 0L, 0);
}
...Parent topic: Sample: Using Result Caching for Oracle Tuxedo Services
13.5.2.4 Sample: Set on Client Side
Assume a data file is like this:
Listing Data File Example
...
Scott
Mike
Andy
Scott
Ben
Brian
Scott
Clark
...Set on your client set like the following Listing.
At the first time where Scott is taken as the request,
        mysvc1 is invoked and the response is sent back and the response is cached
      into Oracle Tuxedo cache tc1 with a key Scott. As long as
      the data in the cache tc1 is not expired, all following requests for
        Scott to service mysvc1 will get response from the cache
        tc1 instead of invoking the service itself.
                        
Listing Set on Client Set
...
struct mystruct1* rsp;
char* req;
int main(int argc, char *argv[])
{
      int ret;
      long olen = 0;
      rsp = tpalloc("VIEW32", "mystruct1", sizeof(struct mystruct1));
      req = tpalloc("STRING", NULL, 32);
      /*get name from the data file*/
      while(getname(req) == 0){
            tpcall("mysvc1",req, 0, &rsp, &olen,0);
}
}
...Parent topic: Sample: Using Result Caching for Oracle Tuxedo Services
13.6 Propagating Execution Context ID (ECID) to Oracle Coherence
Oracle Coherence can use the Execution Context ID (ECID) in its logs. This globally unique ID can be attached to requests between Oracle components. ECID allows you to track log messages pertaining to the same request when multiple requests are processed in parallel. Oracle Coherence logs will include ECID only if you already have an activated ECID prior to calling Oracle Coherence operations. ECID may be passed from another component or obtained in the client code.
Working as a client of Oracle Coherence, Oracle Tuxedo TDC enables you to propagate ECID to Oracle Coherence.
13.6.1 Enabling ECID
- Enable ECID in Oracle Tuxedo 
                           Oracle Tuxedo has two flags which you can add to OPTIONSinUBBCONFIGto control ECID.-  ECID_CREATEIndicates that the ECID (Execution Context Identifier) creation function is enabled. In this case, boundary nodes (including Native/WS/Jolt clients and domain gateways) can generate the ECID. 
-  ECID_USERLOGIf the identifier ECID_USERLOGis set and the ECID is not a null string, ECID will be appended to the userlog.
 
-  
- Enable ECID in Oracle Coherence 
                           See Oracle Coherence documentation for instructions. 
13.6.2 Enabling ECID for TDC
Prepare tangosol-coherence-override.xml in
         ${APPDIR}/config. More specifically,
                     
- 
                           <destination>element is used to configure path and file name for emitting log messages to a file. The specified path must already exist.
- Add ecidinto< message-format >element to enable ECID.
- 
                           <severity-level>element can be used to change log level.
Listing
<?xml version='1.0'?>
<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-co
nfig coherence-operational-config.xsd">
<cluster-config>
      <member-identity>
      <cluster-name 
system-property="tangosol.coherence.cluster">coherence_tux</cluster-name>
      </member-identity>
      <unicast-listener>
      <address 
system-property="tangosol.coherence.localhost">localhost</address>
      <port system-property="tangosol.coherence.localport">51687</port>
      </unicast-listener>
      <multicast-listener>
      <port system-property="tangosol.coherence.clusterport">51697</port>
      </multicast-listener>
</cluster-config>
 
<logging-config>
        <destination 
system-property="tangosol.coherence.log">/tmp/coherence.log</destination>
       <severity-level 
system-property="tangosol.coherence.log.level">9</severity-level>
      <message-format>{date}/{uptime} {product} ecid={ecid} {version}
<{level}>(thread={thread},member={member}):{text}</message-format>  
</logging-config>
</coherence>13.7 Oracle Tuxedo Distributed Caching (TDC) Related ATMI APIs
Table 13-1 Oracle Tuxedo Distributed Caching (TDC) Related ATMI APIs
| Name | Description | 
|---|---|
| tpgetcache(3c) | Get an Oracle Tuxedo Cache handle according to the configuration | 
| tpcacheput(3c) | Put an Oracle Tuxedo typed buffer into a cache, associating that buffer with a key | 
| tpcacheget(3c) | Get the Oracle Tuxedo typed buffer associated with the key from a cache | 
| tpcacheremove(3c) | Remove the cache entry associated with the parameter key from a cache | 
| tpcachemremove(3c) | Remove cache entries associated with the parameter keyarray from a cache | 
| tpcacheremoveall(3c) | Remove all cache entries from a cache | 
13.7.1 tpgetcache(3c)
13.7.1.1 Name
                           tpgetcache - Get an Oracle Tuxedo Cache handle
         according to the configuration
                        
Parent topic: tpgetcache(3c)
13.7.1.2 Synopsis
#include "atmi.h"
TCACHE* tpgetcache(const char* name);Parent topic: tpgetcache(3c)
13.7.1.3 Description
                           tpgetcache(3c) gets an Oracle Tuxedo cache handle
         according to Oracle Tuxedo cache name, which indicates the name of
         Oracle Tuxedo cache to be retrieved. The name must be 78 characters
         or less in length. tpgetcache(3c) is a thread-level
         API. The return handle TCACHE can only be used in the
         same thread.
                        
Parent topic: tpgetcache(3c)
13.7.1.4 Return Values
Upon success, tpgetcache(3c) returns a handle typed
         TCACHE while is an internal structure.
                        
Upon failure, tpgetcache(3c) returns
         NULL and sets tperrno to indicate the
         error condition. If a call fails with a particular
         tperrno value, a subsequent call to
         tperrordetail(3c), with no intermediate ATMI calls,
         may provide more detailed information about the generated error.
         Refer to the tperrordetail(3c) reference page for more
         information.
                        
Parent topic: tpgetcache(3c)
13.7.1.5 Errors
- 
                                 
                              [TPEINVAL]
- Invalid arguments were given (for example, conf is NULL).
- 
                                 
                              [TPENOENT]
- The requested cache does not exist.
- 
                                 
                              [TPETIME]
- This error code indicates that a timeout has occurred
- 
                                 
                              [TPESYSTEM]
- An Oracle Tuxedo system error has occurred. The exact nature of the error is added to the ULOG.
- 
                                 
                              [TPEOS]
- An operating system error has occurred.
- 
                                 
                              [TPESVCFAIL]
- The Oracle Tuxedo cache server meets an error.
            tpurcodecontains the exact error value. The possible values oftpurcodeare list below:
Parent topic: tpgetcache(3c)
13.7.2 tpcacheput(3c)
13.7.2.1 Name
                           tpcacheput - put an Oracle Tuxedo typed buffer into
         a cache, associating that buffer with a key
                        
Parent topic: tpcacheput(3c)
13.7.2.2 Synopsis
#include "atmi.h"
int tpcacheput(TCACHE* tc, char* key, char* data, long len, long flags);Parent topic: tpcacheput(3c)
13.7.2.3 Description
                           tpcacheput(3c) puts an Oracle Tuxedo typed buffer
         into a cache, associating that buffer with a key. tc
         is returned by tpgetcache(3c). data
         points to the tuxedo typed buffer allocated by
         tpalloc(3c). len is the length of the
         data. If the type of the data does not require a length to be
         specified (for example, an FML fielded buffer), len is
         ignored (and may be 0). flags is reserved and must be
         0L.
                        
Parent topic: tpcacheput(3c)
13.7.2.4 Return Values
Upon success, tpcacheput(3c) returns 0.
                        
Upon failure, tpcacheput(3c) returns -1 and sets
         tperrno to indicate the error condition. If a call
         fails with a particular tperrno value, a subsequent
         call to tperrordetail(3c), with no intermediate ATMI
         calls, may provide more detailed information about the generated
         error. Refer to the tperrordetail(3c) reference page
         for more information.
                        
Parent topic: tpcacheput(3c)
13.7.2.5 Errors
- 
                                 
                              [TPEINVAL]
- Invalid arguments were given.
- 
                                 
                              [TPENOENT]
- The requested cache does not exist.
- 
                                 
                              [TPETIME]
- This error code indicates that a timeout has occurred
- 
                                 
                              [TPESYSTEM]
- An Oracle Tuxedo system error has occurred. The exact nature of the error is added to the ULOG.
- 
                                 
                              [TPEOS]
- An operating system error has occurred.
- 
                                 
                              [TPESVCFAIL]
- The Oracle Tuxedo cache server meets an error.
            tpurcodecontains the exact error value. The possible values oftpurcodeare list below:
Parent topic: tpcacheput(3c)
13.7.3 tpcacheget(3c)
13.7.3.1 Name
                           tpcacheget - get the Oracle Tuxedo typed buffer
         associated with the key from a cache
                        
Parent topic: tpcacheget(3c)
13.7.3.2 Synopsis
#include "atmi.h"
int tpcacheget(TCACHE* tc, char* key, char** odata, long* olen, long flags);Parent topic: tpcacheget(3c)
13.7.3.3 Description
                           tpcacheget(3c) gets the Oracle Tuxedo typed buffer
         associated with the key from a cache. tc is returned
         by tpgetcache(3c). odata is the address
         of a pointer to the buffer where the data of the key is read into.
         It must point to a buffer originally allocated by
         tpalloc(3c). olen points to the length of
         the data. flags is reserved and must be
         
                              .
                        0L
                              
Parent topic: tpcacheget(3c)
13.7.3.4 Return Values
Upon success, tpcacheget(3c) returns 0.
                        
Upon failure, tpcacheget(3c) returns -1 and sets
         tperrno to indicate the error condition. If a call
         fails with a particular tperrno value, a subsequent
         call to tperrordetail(3c), with no intermediate ATMI
         calls, may provide more detailed information about the generated
         error. Refer to the tperrordetail(3c) reference page
         for more information.
                        
Parent topic: tpcacheget(3c)
13.7.3.5 Errors
- 
                                 
                              [TPEINVAL]
- Invalid arguments were given.
- 
                                 
                              [TPENOENT]
- The requested cache does not exist.
- 
                                 
                              [TPETIME]
- This error code indicates that a timeout has occurred.
- 
                                 
                              [TPESYSTEM]
- An Oracle Tuxedo system error has occurred. The exact nature of the error is added to the ULOG.
- 
                                 
                              [TPEOS]
- An operating system error has occurred.
- 
                                 
                              [TPESVCFAIL]
- The Oracle Tuxedo cache server meets an error.
            tpurcodecontains the exact error value. The possible values oftpurcodeare list below:
- 
                                 
                              TDC_ERR_CACHE_NOTEXIST
- The error code indicates the requested Oracle Tuxedo cache does not exist.
- 
                                 
                              TDC_ERR_CACHE_UNAVAIL
- The error code indicates the requested Oracle Tuxedo cache is unavailable.
- 
                                 
                              TDC_ERR_CACHENAME_INVALID
- The error code indicates the requested Oracle Tuxedo cache is invalid.
- 
                                 
                              TDC_ERR_KEY_NOTEXIST
- The error code indicates the requested entry does not exist according to the specified key.
Parent topic: tpcacheget(3c)
13.7.4 tpcacheremove(3c)
13.7.4.1 Name
                           tpcacheremove - remove the cache entry associated
         with the parameter key from a cache
                        
Parent topic: tpcacheremove(3c)
13.7.4.2 Synopsis
#include "atmi.h"
int tpcacheremove(TCACHE* tc, char* key, long flags);Parent topic: tpcacheremove(3c)
13.7.4.3 Description
                           tpcacheremove(3c) removes the cache entry
         associated with the parameter key from a cache. tc is
         returned by tpgetcache(3c). flags is reserved and must be
         0L.
                        
Parent topic: tpcacheremove(3c)
13.7.4.4 Return Values
Upon success, tpcacheremove(3c) returns 0.
                        
Upon failure, tpcacheremove(3c) returns -1 and sets
         tperrno to indicate the error condition. If a call
         fails with a particular tperrno value, a subsequent
         call to tperrordetail(3c), with no intermediate ATMI
         calls, may provide more detailed information about the generated
         error. Refer to the tperrordetail(3c) reference page
         for more information.
                        
Parent topic: tpcacheremove(3c)
13.7.4.5 Errors
- 
                                 
                              [TPEINVAL]
- Invalid arguments were given.
- 
                                 
                              [TPENOENT]
- The requested cache does not exist.
- 
                                 
                              [TPETIME]
- This error code indicates that a timeout has occurred.
- 
                                 
                              [TPESYSTEM]
- An Oracle Tuxedo system error has occurred. The exact nature of the error is added to the ULOG.
- 
                                 
                              [TPEOS]
- An operating system error has occurred.
- 
                                 
                              [TPESVCFAIL]
- The Oracle Tuxedo cache server meets an error.
            tpurcodecontains the exact error value. The possible values oftpurcodeare list below:
Parent topic: tpcacheremove(3c)
13.7.5 tpcachemremove(3c)
13.7.5.1 Name
                           tpcachemremove - remove cache entries associated
         with the parameter keyarray from a cache
                        
Parent topic: tpcachemremove(3c)
13.7.5.2 Synopsis
#include "atmi.h"
int tpcachemremove(TCACHE* tc, char* keyarray[], int size, long flags);Parent topic: tpcachemremove(3c)
13.7.5.3 Description
                           
                              tpcachemremove(3c)
                               removes cache entries
         associated with the parameter keyarray from a cache.
         tc is returned by tpgetcache(3c).
         keyarray is an array of keys to be removed.
         size is the size of the keyarray. flags
         is reserved and must be 0L.
                        
Parent topic: tpcachemremove(3c)
13.7.5.4 Return Values
Upon success, tpcachemremove(3c) returns 0.
                        
Upon failure, tpcachemremove(3c) returns -1 and
         sets tperrno to indicate the error condition. If a
         call fails with a particular tperrno value, a
         subsequent call to tperrordetail(3c), with no
         intermediate ATMI calls, may provide more detailed information
         about the generated error. Refer to the
         tperrordetail(3c) reference page for more
         information.
                        
Parent topic: tpcachemremove(3c)
13.7.5.5 Errors
- 
                                 
                              [TPEINVAL]
- Invalid arguments were given.
- 
                                 
                              [TPENOENT]
- The requested cache does not exist.
- 
                                 
                              [TPETIME]
- This error code indicates that a timeout has occurred
- 
                                 
                              [TPESYSTEM]
- An Oracle Tuxedo system error has occurred. The exact nature of the error is added to the ULOG.
- 
                                 
                              [TPEOS]
- An operating system error has occurred.
- 
                                 
                              [TPESVCFAIL]
- The Oracle Tuxedo cache server meets an error.
            tpurcodecontains the exact error value. The possible values oftpurcodeare list below:
Parent topic: tpcachemremove(3c)
13.7.6 tpcacheremoveall(3c)
13.7.6.1 Name
                           tpcacheremoveall - remove all cache entries from a
         cache
                        
Parent topic: tpcacheremoveall(3c)
13.7.6.2 Synopsis
#include "atmi.h"
int tpcacheremoveall(TCACHE* tc, long flags);Parent topic: tpcacheremoveall(3c)
13.7.6.3 Description
                           tpcacheremoveall(3c) removes all entries from a
         cache. tc is returned by tpgetcache(3c).
         flags is reserved and must be 0L.
                        
Parent topic: tpcacheremoveall(3c)
13.7.6.4 Return Values
Upon success, tpcacheremoveall(3c) returns 0.
                        
Upon failure, tpcacheremoveall(3c) returns -1 and
         sets tperrno to indicate the error condition. If a
         call fails with a particular tperrno value, a
         subsequent call to tperrordetail(3c), with no
         intermediate ATMI calls, may provide more detailed information
         about the generated error. Refer to the
         tperrordetail(3c) reference page for more
         information.
                        
Parent topic: tpcacheremoveall(3c)
13.7.6.5 Errors
- 
                                 
                              [TPEINVAL]
- Invalid arguments were given.
- 
                                 
                              [TPENOENT]
- The requested cache does not exist.
- 
                                 
                              [TPETIME]
- This error code indicates that a timeout has occurred.
- 
                                 
                              [TPESYSTEM]
- An Oracle Tuxedo system error has occurred. The exact nature of the error is added to the ULOG.
- 
                                 
                              [TPEOS]
- An operating system error has occurred.
- 
                                 
                              [TPESVCFAIL]
- The Oracle Tuxedo cache server meets an error.
            tpurcodecontains the exact error value. The possible values oftpurcodeare list below:
Parent topic: tpcacheremoveall(3c)
13.8 Oracle Tuxedo Distributed Caching (TDC) Property File Properties
Oracle Tuxedo TDC property file is a file in a simple line-oriented format.
Properties are processed in terms of lines. There are two kinds of line, natural lines and logical lines.
A natural line is defined as a line of characters that is
         terminated either by a set of line terminator characters
         (\\n or \\r or \\r\\n) or by
         the end of the stream. A natural line may be either a blank line, a
         comment line, or hold all or some of a key-element pair.
                  
A logical line holds all the data of a key-element pair, which
         may be spread out across several adjacent natural lines by escaping
         the line terminator sequence with a backslash character
         \\.
                  
A natural line that contains only white space characters is
         considered blank and is ignored. A comment line has an ASCII
         '#' or '!' as its first non-white space
         character; the key contains all of the characters in the line
         starting with the first non-white space character and up to, but
         not including, the first unescaped '=', ':'. Any white
         space after the key is skipped; if the first non-white space
         character after the key is '=' or ':',
         then it is ignored and any white space characters after it are also
         skipped. All remaining characters on the line become part of the
         associated element string; if there are no remaining characters,
         the element is the empty string "".
                  
If there are several properties with the same key, the last property of them will be used.
The following table lists the supported TDC property file properties.
Table 13-2 Oracle Tuxedo Distributed Caching (TDC) Property File Properties
| Property | Description | 
|---|---|
| options.encoding | Values can be: 
 . | 
| cache.options.encoding.[cachename] | yesindicates all caching data in Oracle Tuxedo cache[cachename] must be encoded. It should be enabled when caching users are located in machines that have different data representation.If this property is not set,  | 
| coh.cache.name.[cachename] | Indicates the used cache name in the Coherence cluster for the Oracle Tuxedo cache [cachename].This is necessary for TDC property file if Oracle Coherence is used for TDC. | 
Note:
[cachename] must be 78 characters or less in length.
                  13.10 UBBCONFIG SERVICES Section
Table 13-3 Oracle Tuxedo Distributed Caching (TDC) Related UBBCONFIG SERVICES Section Parameters
| Parameter | Description | 
|---|---|
| CACHING=string_value(Mandatory) | Specifies the name of the caching criteria used for this service when caching the response. The string_valuemust be theCACHING_CRITERIA_NAMEdefined in theCACHINGsection. You must specify this parameter; otherwise, service caching is not be enabled. Thestring_valuemust be 127 characters or less in length. | 
13.10.1 UBBCONFIG CACHING Section
Table 13-4 Oracle Tuxedo Distributed Caching (TDC) Related UBBCONFIG Parameters
| Parameter | Description | 
|---|---|
| CACHING_CRITERIA_NAME required_parameters(Mandatory) | CACHING_CRITERIA_NAME(string_value) is the name assigned to the CACHING parameter for a particular service entry in theSERVICESsection.CACHING_CRITERIA_NAMEmust be 127 characters or less in length. | 
| CACHENAME=string_value(Mandatory) | Specifies the name of Oracle Tuxedo cache to be used. string_valuemust be 78 characters or less in length. | 
| KEY=string_value(Optional) | Specifies how to compose the key associating the cached data. string_valuemust be 127 characters or less in length.This parameter is optional. If not specified, the key is generated as a combination of the service name and the serialized user data in the request.  For example,  
 | 
| KEY_BUFTYPE="type1[:subtype1[,subtype2 . . . ]][;type2[:subtype3[, . . . ]]] . . ."(Optional) | A list of types and subtypes of data buffers for which this caching entry is valid to use to generate the key. This parameter can be up to 255 characters in length and a maximum of 32 type/subtype combinations. The type must be one of the following:  
 This parameter is ignored if  | 
| (Optional) | Specifies the name of the fields in the buffer used to generate the key. It must be 255 characters or less and a maximum of 8 fields are allowed. Each field can be an XML element, element attribute, or field name in an FML field table (using  For XML element content or element attribute in the XML buffer, define the name of the field with the following syntax:  The element name and attribute name combined may contain no more than 35 characters. Oracle Tuxedo recognizes only the first occurrence of a given element type when processing an XML buffer for service caching. XML strictly defines the set of characters that may be used in an attribute name. An attribute name must be a string consisting of a single letter, underscore, or colon followed by one or more name characters. Both element names and attribute names are case-sensitive. See XML documentation for more information.If  KEY_BUFTYPEis set toSTRINGorCARRAY, define the field with the following syntax:Index1 indicates the beginning index of the field in the buffer and index2 indicates the ending index of the field. The whole buffer is taken as the key if this parameter is not defined. The index must be set from 1.This parameter is ignored if  | 
Parent topic: UBBCONFIG SERVICES Section
13.11 Oracle Tuxedo Distributed Caching (TDC) Related MIB Attributes
13.11.1 T_SERVICE Class Definition
Table 13-5 Oracle Tuxedo Distributed Caching (TDC) Related MIB Attributes
| Attribute | Type | Permission | Values | Default | 
|---|---|---|---|---|
| TA_CACHING | string | rwxr--r-- | string [0..127] | "" | 
13.11.2 T_CACHING Class Definition
This T_CACHING class represents configuration
         attributes of caching specifications for an application. These
         attribute values identify and characterize application caching
         criteria (such as buffer types, field names and caching
         definitions).
                     
Table 13-6 Oracle Tuxedo Distributed Caching (TDC) Related MIB Attributes
| Attribute | Type | Permission | Values | Default | 
|---|---|---|---|---|
| TA_CACHING_NAME(r)(*) | string | ru--r-- | string[0..127] | N/A | 
| TA_CACHING_CACHENAME(r) | string | rw-r--r-- | string[1..78] | N/A | 
| TA_CACHING_KEY | string | rw-r--r-- | string[0..127] | "" | 
| TA_CACHING_KEY_BUFTYPE(*) | string | ru--r-- | string[0..255] | "STRING" | 
| TA_CACHING_KEY_FIELD | string | rw-r--r-- | string[0..255] | "" | 
| TA_STATE(k) | string | rw-r--r-- | GET: "VAL"  | N/A | 
| SET: "{NEW | INV}" | N/A | 
Note:
- (k) GETkey field
- (r) required field for object creation (SET TA_STATE NEW)
- (*) GET/SETkey, one or more required forSEToperations
- The specified u(uniqueness) permission means aht the combination ofTA_CACHING_NAMEandTA_CACHING_KEY_BUFTYPEmust be unique.- 
                                        TA_CACHING_NAME: string[1..127]
- Specifies the caching criteria name.
- 
                                        TA_CACHING_CACHENAME: string[1..78]
- Specifies the name of the Oracle Tuxedo cache to be used.
- 
                                        TA_CACHING_KEY: string[0..127]
- Specifies how to compose the key associating the cached data.
- 
                                        TA_CACHING_KEY_BUFTYPE: string[0..255]
- Specifies a list of types and subtypes of data buffers for which this caching entry is valid to use to generate the key. This parameter can be up to 255 characters in length and a maximum of 32 type/subtype combinations. The type must be one of the following: STRING,CARRAY,FML,FML32,XML,VIEW,VIEW32,RECORD,MBSTRING,X_C_TYPE, orX_COMMON. No subtypes can be specified for typesSTRING,CARRAY,FML,FML32,MBSTRING, orXML. Subtypes are required for typeVIEW,VIEW32,RECORD,X_C_TYPE, andX_COMMON(* is not allowed). Subtype name should not contain semicolon, colon, comma, or asterisk characters. Duplicate type/subtype pairs cannot be specified for the same routing caching criteria name; more than one routing caching entry can have the same criteria name as long as the type/subtype pairs are unique. If multiple buffer types are specified for a single caching entry, the data types of the caching field for each buffer type must be the same.
- 
                                        TA_CACHING_KEY_FIELD: string[0..255]
- Specifies the name of the fields in the buffer used to generate the key. It must be 255 characters or less and a maximum of 8 fields are allowed. Each field can be an XML element, element attribute, or field name in an FML field table (using FLDTBLDIRandFIELDTBLSenvironment variables, orFLDTBLDIR32andFIELDTBLS32environment variables), or an FML view table (usingVIEWDIRandVIEWFILESenvironment variables, orVIEWDIR32andVIEWFILES32environment variables). This information is used to get the associated field value for service caching when sending a message. For XML element content or element attribute in the XML buffer, define the name of the field with the following syntax:root_element[/child_element][/child_element][/. . .][/@attribute_name]
- 
                                        TA_STATE
- 
                                    - 
                                              GET: "{VALid}"
- A GEToperation will retrieve configuration information for the selectedT_CACHINGobject(s). The following state indicates the meaning of aTA_STATEreturned in response to aGETrequest. States not listed will not be returned.VALid:T_CACHINGobject is defined. Note that this is the only valid state for this class.
- 
                                              SET: "{NEW | INValid}"
- A SEToperation will update configuration information for the selectedT_CACHINGobject. The following states indicate the meaning of aTA_STATEset in aSETrequest. States not listed may not be set.NEW: CreateT_CACHINGobject for application. State change allowed only when in theINValidstate. Successful return leaves the object in theVALidstate.INValid: DeleteT_CACHINGobject for application. State change allowed only when in theVALidstate. Successful return leaves the object in theINValidstate.
 
- 
                                              
 
-