`

将FML(FML32)应用于WTC

阅读更多

将FML(FML32)应用于WTC即指以FML(FML32)格式作为WEBLOGIC与TUXEDO相互通信的数据载体!

请您首先保证WTC的联通性,关于如何配置使得WTC工作,可参考博文WEBLOGIC通过WTC调TUXEDO服务

关于FML(FML32)的信息,可参考将 FML 用于 WebLogic Tuxedo Connector中的以下信息:

  • FML 概述
  • WebLogic Tuxedo Connector FML API
  • FML 字段表管理
  • 其内容为:

    写道
    FML 概述
    注意: 有关使用 FML 的详细信息,请参阅 Programming a BEA Tuxedo Application Using FML。

    FML 是一组 Java 语言函数,用来定义和操作称为字段缓冲区的存储结构。每个字段缓冲区都在字段中包含特性-值对。对于每个字段:

    特性是字段的标识符。
    关联的值表示字段的数据内容。
    出现次数。
    有两种类型的 FML:

    基于字段长度和标识符为 16 位值的 FML16。它所受的限制为:8191 个唯一字段、单个字段长度 64K 字节、总字段缓冲区大小 64K 字节。
    基于字段长度和标识符为 32 位值的 FML32。它允许大约 3 千万个字段,大约 20 亿字节的字段和缓冲区长度。



    --------------------------------------------------------------------------------

    WebLogic Tuxedo Connector FML API
    注意: WebLogic Tuxedo Connector 实现部分 FML 功能。有关 FML32 的详细信息,请参阅 FML32 注意事项。

    FML 应用程序编程接口(Application Program Interface,简称 API)记录在 Javadocs for WebLogic Server Classes 中的 weblogic.wtc.jatmi 包中。




    --------------------------------------------------------------------------------

    FML 字段表管理
    字段表的生成方式类似于 Tuxedo 字段表。字段表是提供字段名定义、字段类型以及共用于两个系统中的标识号的文本文件。要使用 FML 与 Tuxedo 系统进行互操作,需要执行下列步骤:

    1、将字段表从 Tuxedo 系统复制到 WebLogic Tuxedo Connector 环境。
    例如:您的 Tuxedo 分发包含一个名为 bankapp 的银行应用程序示例。它包含一个名为 bankflds 的文件,该文件具有以下结构:

    #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 commentsACCOUNT_ID 110 long - - ACCT_TYPE 112 char - - ADDRESS 109 string - - ...将字段表定义转换为 Java 源文件。使用 weblogic.wtc.jatmi包中提供的 mkfldclass 实用工具。此类是读取 FML32 字段表的实用工具函数,可以生成实现 FldTbl 接口的 Java 文件。此实用工具有两个实例:
    mkfldclass
    mkfldclass32
    2、使用正确的命令实例将 bankflds 字段表转换为 FML32 Java 源代码。以下示例使用 mkfldclass。

    java weblogic.wtc.jatmi.mkfldclass bankflds生成的文件的名称为 bankflds.java,该文件具有以下结构:

    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 */...使用以下命令编译生成的 bankflds.java 文件:
    javac bankflds.java结果将生成 bankflds.class 文件。进行加载后,WebLogic Tuxedo Connector 便可以使用该类文件在 FML32 字段中添加、检索和删除字段条目。

    3、将字段表类文件添加到应用程序 CLASSPATH。
    4、更新 WTCServer MBean。
    5、更新 WTCResources MBean 以反映字段表类文件的完全限定位置。
    6、使用所需的关键字描述 FML 缓冲区类型:fml16 或 fml32。
    可以在以逗号分隔的列表中输入多个字段表类。
    例如:

    <wtc-resources> <name>BankappResources</name> <fld-tbl16-class>my.bankflds</fld-tbl16-class> <fld-tbl16-class>your.bankflds</fld-tbl16-class> <fld-tbl16-class>more.bankflds</fld-tbl16-class></wtc-resources>重新启动 WebLogic Server 以加载字段表类定义。

        以上的核心点在于配置WEBLOGIC WTC的Resource,需要注意的两点是:①由公家生成的bankflds.java类的码值一定要修改保证与TUXEDO端的一致;②将①产生的class文件放在WEBLOGIC可识别的CLASSPATH下,重启WEBLOGIC,配置WTC Server的Resource!

     

      以下是我使用的简单的测试代码:

    <%@ page language="java" pageEncoding="utf-8"%>
    <%@ page import="weblogic.wtc.jatmi.*,weblogic.wtc.gwt.*, javax.naming.*,java.io.*,org.twolf.wt.wtc.entity.BaseFld32" %> 
    <%
    try
    {    
        //调用接口服务
        Context ctx = new InitialContext();
        TuxedoConnectionFactory tuxedoFactory = (TuxedoConnectionFactory) ctx.lookup("tuxedo.services.TuxedoConnection");
        TuxedoConnection tuxedo = tuxedoFactory.getTuxedoConnection();
        TypedFML32 buffer = new TypedFML32(); 
        buffer.Fchg(BaseFld32.COL1,0,"servicename"); 
        Reply rtn = tuxedo.tpcall("QRYBALANCE", buffer, 0);
        TypedFML32 buffer2 = (TypedFML32)rtn.getReplyBuffer();
        
        out.println("Result:"+buffer2.Fget(BaseFld32.MESSAGE,0));
    }
    catch(Exception e)
    {
        outStr = e.getMessage();
    		StringWriter sw = new StringWriter();
    		PrintWriter pw = new PrintWriter(sw);
    		e.printStackTrace(pw);
    		out.print(sw);
    		sw.close();
    		pw.close();
    		}
    %>
    

     

    分享到:
    评论
    1 楼 jackeysion 2013-10-15  
    请教一下,Weblogic11g(版本号10.3.3.0)支持FML吗?怎么从安装之后的weblogic.jar文件中找不到关于TypedFML32相关的class,从其他jar包也找不到

    相关推荐

    Global site tag (gtag.js) - Google Analytics