![]() |
![]() |
|
|
| |
Using FML with WebLogic Tuxedo Connector
The following sections discuss the Field Manipulation Language (FML) and describe how the WebLogic Tuxedo Connector uses FML.
Overview of FML
Note: For more information about using FML, see Programming a BEA Tuxedo Application Using FML.
FML is a set of java language functions for defining and manipulating storage structures called fielded buffers. Each fielded buffer contains attribute-value pairs in fields. For each field:
There are two types of FML:
The WebLogic Tuxedo Connector FML API
Note: The WebLogic Tuxedo Connector implements a subset of FML functionality. For example, views are not supported.
The FML application program interface (API) is documented in the weblogic.wtc.jatmi package included in the Javadocs for WebLogic Server Classes.
FML Field Table Administration
Field tables are generated in a manner similar to Tuxedo field tables. The field tables are text files that provide the field name definitions, field types, and identification numbers that are common between the two systems. To interoperate with a Tuxedo system using FML, the following steps are required:
For example: Your Tuxedo distribution contains a bank application example called bankapp. It contains a file called bankflds that has the following structure:
#Copyright (c) 1990 Unix System Laboratories, Inc. #All rights reserved #ident "@(#) apps/bankapp/bankflds $Revision: 1.3 $" # Fields for database bankdb
# name number type flags comments ACCOUNT_ID 110 long - - ACCT_TYPE 112 char - - ADDRESS 109 string - - .
.
.
Use the correct instance of the command to convert the bankflds field table into FML32 java source. The following example uses mkfldclass.
java weblogic.wtc.jatmi.mkfldclass bankflds
The resulting file is called bankflds.java and has the following structure:
import java.io.*; import java.lang.*; import java.util.*; import weblogic.wtc.jatmi.*; public final class bankflds implements weblogic.wtc.jatmi.FldTbl { /** number: 110 type: long */ public final static int ACCOUNT_ID = 33554542; /** number: 112 type: char */ public final static int ACCT_TYPE = 67108976; /** number: 109 type: string */ public final static int ADDRESS = 167772269; /** number: 117 type: float */
.
.
.
javac bankflds.java
The result is a bankflds.class file. When loaded, the WebLogic Tuxedo Connector uses the class file to add, retrieve and delete field entries from an FML32 field.
For example:
<T_DM_RESOURCES> <FieldTables> <FldTblClass Type="fml32">com.bea.mystuff.bankflds</FldTblClass> </FieldTables> </T_DM_RESOURCES>
Using the DynRdHdr Property for mkfldclass32 Class
WebLogic Tuxedo Connector provides a property that provides an alternate method to compile FML tables. You may need to use the DynRdHdr utility if:
Use the following steps to use the DynRdHdr property when compiling your FML tables:
java -DDynRdHdr=Path_to_Your_FML_Table weblogic.wtc.jatmi.mkfld class32 userTable
The arguments for this command are defined as follows:
javac userTable.java
Once you have created the userTable.class file, you can modify the FML table and deploy the changes without having to manually create an updated userTable.class. When the server is started, it will load the updated FML table using the location specified in the T_DM_RESOURCES of your WebLogic Tuxedo Connector XML configuration file. If the Path_to_Your_FML_Table attribute changes, you will need to use the preceding procedure to update your userTable.java and userTable.class files.
tBridge XML/FML32 Translation
Note: The data type specified must be FLAT or NO. If any other data type is specified, the redirection fails.
The <translateFML> element is used to indicate if FML32 translation is performed on the message payload. There are two types of FML32 translation: FLAT and NO.
Using FLAT Translation
The message payload is translated using the WebLogic Tuxedo Connector internal FML32/XML translator. Fields are converted field-by-field values without knowledge of the message structure (hierarchy) and repeated grouping.
In order to convert an FML32 buffer to XML, the tBridge pulls each instance of each field in the FML32 buffer, converts it to a string, and places it within a tag consisting of the field name. All of these fields are placed within a tag consisting of the service name. For example, an FML32 buffer consisting of the following fields:
NAME JOE ADDRESS CENTRAL CITY PRODUCTNAME BOLT PRICE 1.95 PRODUCTNAME SCREW PRICE 2.50
The resulting XML buffer would be:
<FML32> <NAME>JOE</NAME> <ADDRESS>CENTRAL CITY</ADDRESS> <PRODUCTNAME>BOLT</PRODUCTNAME> <PRODUCTNAME>SCREW</PRODUCTNAME> <PRICE>1.95</PRICE> <PRICE>2.50</PRICE> </FML32>
Using NO Translation
No translation is used. The tBridge maps a JMS TextMessage into a Tuxedo TypedBuffer (TypedString) and vice versa depending on the direction of the redirection. JMS BytesMessage are mapped into Tuxedo TypedBuffer (TypedCarray) and vice versa.
FML32 Considerations
Remember to consider the following information when working with FML32:
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|