The following sections provide information about how to use WebLogic Tuxedo Connector VIEW buffers:
Note: | For more information on Tuxedo VIEW buffers, see Using a VIEW Typed Buffer. |
WebLogic Tuxedo Connector allows you to create a Java VIEW buffer type analogous to a Tuxedo VIEW buffer type derived from an independent C structure. This allows WebLogic Server applications and Tuxedo applications to pass information using a common structure. WebLogic Tuxedo Connector VIEW buffers do not support FML VIEWs or FML VIEWs/Java conversions.
Note: | fbname and null fields are not relevant for independent Java and C structures and are ignored by the Java and C VIEW compiler. You must include a value (for example, a dash) as a placeholder in these fields. |
Your WebLogic Server application and your Tuxedo application must share the same information structure as defined by the VIEW description. The following format is used for each structure in the VIEW description file:
$ /* VIEW structure */
VIEW viewname
type cname fbname count flag size null
viewj
compiler and the Tuxedo viewc
compiler.
The following provides an example VIEW description which uses VIEW buffers to send information to and receive information from a Tuxedo application. The file name for this VIEW is infoenc
.
VIEW infoenc
#type cname fbname count flag size null
float amount AMOUNT 2 - - 0.0
short status STATUS 2 - - 0
int term TERM 2 - - 0
char mychar MYCHAR 2 - - -
string name NAME 1 - 16 -
carray carray1 CARRAY1 1 - 10 -
dec_t decimal DECIMAL 1 - 9 - #size ignored by viewj/viewj32
END
To compile a VIEW typed buffer, run the viewj
command, specifying the package name and the name of the VIEW description file as arguments. The output file is written to the current directory.
To use the viewj
compiler, enter the following command:
java weblogic.wtc.jatmi.viewj[options]
[package] viewfile
To use the viewj32
compiler, enter the following command:
java weblogic.wtc.jatmi.viewj32[options]
[package] viewfile
The arguments for this command are defined as follows:
The output of the viewj
and viewj32
command is a .java
source file that contains set
and get
accessor methods for each field in the VIEW description file. Use these set
and get
accessor methods in your Java applications to pass information to and from a VIEW buffer.
The AssociatedFieldHandling
flag is used to specify if the set
and get
methods use the values of the associated length and count fields if they are specified in the VIEW description file.
Use one of the following to set or get the state of the AssociatedFieldHandling
flag:
associated_fields
option for the viewj
and viewj32
compiler to set the AssociatedFieldHandling
flag to true.void setAssociatedFieldHandling(boolean state)
method in your Java application to set the state of the AssociatedFieldHandling
flag. boolean getAssociatedFieldHandling()
method in your Java application to return the current state of AssociatedFieldHandling
.
Use the following steps when incorporating VIEW buffers in your JATMI applications:
See the examples/wtc/atmi/simpview/ViewClient.java
file in your WebLogic Server distribution for an example of how a client uses accessors to pass information to and from a VIEW buffer.
Note: | For this release, WTC samples are available on the BEA dev2dev website in the Code Library. |
CLASSPATH
.
A helper class is available to add and get VIEW32 data in and out of an FML32 buffer. The class name is wtc.jatmi.FViewFld
. This class assists programmers in developing JATMI-based applications that use VIEW32 field type for FML32 buffers.
No change to configuration is required. You still configure the VIEW32 class path using the ViewTbl32Classes
attribute in the WTCResources
section of the WLS configuration file.
The following access methods are available in this helper class.
FViewFld(String vname, TypedView32 vdata)
;FviewFld(FviewFld to_b_clone)
;void setViewName(String vname)
String getViewName()
;void setViewData(TypedView32 vdata)
void TypedView32 getViewData()
;String toConvert = new String("hello world");
TypedFML32 MyData = new TypedFML32(new MyFieldTable());
Long d1 = new Long(1234);
Float d2 = new Float(12.32);
MyView data = new myView();
FviewFld vfld;
data.setamount((float)100.96);
data.setstatus((short)3);
vfld = new FviewFld("myView", data);
try {
myData.Fchg(MyFieldTable.FLD0, 0, toConvert);
myData.Fchg(MyFieldTable.FLD1, 0, 1234);
myData.Fchg(MyFieldTable.FLD2, 0, d2);
myData.Fchg(MyFieldTable.myview, 0, vfld);
} catch (Ferror fe) {
log("An error occurred putting data into the FML32 buffer. The error is " + fe);
}
try {
myRtn = myTux.tpcall("FMLVIEW", myData, 0);
} catch(TPReplyException tre) {
....
}
TypedFML32 myDataBack = (TypedFML32)myRtn.getReplyBuffer();
Integer myNewLong;
Float myNewFloat;
myView View;
String myNewString;
try {
myNewString = (String)myDataBack.Fget(MyFieldTable.FLD0, 0);
myNewLong = (Integer)myDataBack.Fget(MyFieldTable.FLD1, 0);
myNewFloat = (Float)myDataBack.Fget(MyFieldTable.FLD2, 0);
vfld = (FviewFld)myDataBack.Fget(MyFieldTable.myview, 0);
view = (myView)vfld.getViewData();
} catch (Ferror fe) {
....
}
The following code listing is an example FML Description(MyFieldTable) related to the example in Listing 8-2.
*base 20000
#name number type flags comments
FLD0 10 string - -
FLD1 20 long - -
FLD2 30 float - -
myview 50 view32 - defined in View description file