`
123123ghiwjn
  • 浏览: 24882 次
  • 性别: Icon_minigender_2
  • 来自: 陕西
社区版块
存档分类
最新评论

wtc编程

阅读更多

Java读写报文函数的结构  
  1   定义存放报文的数据输出流和字节数组。为每一个入参定义一个字节数组;  
   
  2   调用拼接报文头的函数;  
   
  3   根据入参的类型分别调用不同的函数把入参放入相应的字节数组中;  
   
  4   按着报文头、参数长度、参数的顺序把字节数组放入数据输出流,再把输出流转换成报文字节数组;  
   
  5   连接Tuxedo,定义TypedCArray类型的Buffer,并分配空间;  
   
  6   把入参报文字节数组附给Buffer的carray属性,再把字节数组的实际长度附给Buffer的sendSize属性;  
   
  7   调用Tuxedo服务,接收返回的报文,中断与Tuxedo的连接;  
   
  8   从返回报文中读取出参个数;  
   
  9   判断交易是否执行成功,如果没有成功,读取错误信息,抛出异常;  
   
  10   计算数据区的起始位置,根据出参的类型调用相应的函数从报文中读取数据;  
   
  11   具体实例,请见附录I  
   
   
  附录I  
   
  C交易原型:  
   
  int   trReadTrade(  
   
  char   *strsql,   //INPUT  
   
  struct   Tickets   *stTickets,  
   
  short   *iCount,   struct   TotalStru   *stTotalStru   //OUTPUT  
   
  )   ;  
   
  java函数:  
   
  public   ArrayList   readTrade(String   strsql,   Tickets   tickets)   throws   testException   {  
   
  ArrayList   totalList   =   new   ArrayList();  
   
  CommonPack   pack   =   new   CommonPack();  
   
  int   iOutCnt   =   0;  
   
   
  String   tcode   =   "T03";   //交易码  
   
   
  Context   ctx;  
   
  TuxedoConnectionFactory   tcf;  
   
  TuxedoConnection   myTux   =   null;   //   For   now   we   get   it   via   NEW   until   the   Factory   works  
   
  TypedCArray   myData;  
   
  Reply   myRtn;  
   
   
  //   此处开始组织报文  
   
  ByteArrayOutputStream   bout   =   new   ByteArrayOutputStream();  
   
  DataOutputStream   dout   =   new   DataOutputStream(bout);  
   
  byte[]   inbt   ;   //入参报文  
   
  byte[]   headbt;   //报文头  
   
  byte[]   databt;   //存放strsql  
   
  byte[]   databt1;   //存放Tickets结构  
   
  short   PNum   =   2;   //按C语言的格式确定出参数  
   
   
  try   {  
   
  //   产生交易报文头  
   
  headbt   =   tapiPub.MakeHead(tcode,   SYS_MyOffice,   SYS_Myself,   SYS_CurrTime,  
   
  SYS_WorkDate,   SYS_OptType,   PNum);  
   
   
  //   把入参strsql放入byte数组  
   
  databt   =   strsql.getBytes();  
   
  //   把入参tickets放入byte数组  
   
  databt1   =   pack.StructureWrite(tickets);  
   
   
  //组织报文(DataOutputStream类型),顺序:报文头+各参数长度+第一个入参+第二个参数+......+第n个参数  
   
  dout.write(headbt);   //放入报文头  
   
  tapiPub.WriteParaLength(dout,   databt.length);   //放入strsql的长度  
   
  tapiPub.WriteParaLength(dout,   databt1.length);   //放入tickets的长度  
   
  dout.write(databt);   //放入strsql  
   
  dout.write(databt1);   //放入tickets  
   
  }  
   
  catch   (Exception   e)   {  
   
  throw   new   testException(e.getMessage());  
   
  }  
   
  //   把DataOutputStream型报文转换成Tuxedo需要的Byte类型  
   
  inbt   =   bout.toByteArray();  
   
   
  log("toupper   called,   converting   "   );  
   
   
  try   {  
   
  ctx   =   new   InitialContext();  
   
  tcf   =  
   
  (TuxedoConnectionFactory)   ctx.lookup("tuxedo.services.TuxedoConnection");  
   
  }   catch   (NamingException   ne)   {  
   
  //   Could   not   get   the   tuxedo   object,   throw   TPENOENT  
   
  String   ErrMsg   =   TPException.TPENOENT   +   "Could   not   get   TuxedoConnectionFactory   :   "   +   ne;  
   
  throw   new   testException(ErrMsg);  
   
  }  
   
   
  try{  
   
  myTux   =   tcf.getTuxedoConnection();  
   
  }  
   
  catch(Exception   e){  
   
  throw   new   testException(e.getMessage());  
   
  }  
   
   
  //   定义TypedCArray类型的Buffer,并分配空间,用于数据传递  
   
  myData   =   new   TypedCArray(myMessage.MAX_DATA_SIZE.intValue());  
   
   
  //   把Byte类型的报文,附给Buffer的carray属性  
   
  myData.carray   =   inbt;  
   
  //   给Buffer的sendSize属性附上报文的实际长度  
   
  myData.sendSize   =   inbt.length;  
   
   
  log("About   to   call   tpcall");  
   
   
  try   {  
   
  //   调用Tuxedo服务,用Reply对象接收服务返回结果  
   
  myRtn=  
   
  myTux.tpcall("READTRADE",myData,   ApplicationToMonitorInterface.TPNOTRAN);  
   
  }   catch   (TPReplyException   tre)   {  
   
  throw   new   testException(tre.getMessage());  
   
  }   catch   (TPException   te)   {  
   
  throw   new   testException(te.getMessage());  
   
  }   catch   (Exception   ee)   {  
   
  throw   new   testException(ee.getMessage());  
   
  }  
   
   
  log("tpcall   successfull!");  
   
   
  //   接收服务返回的出参  
   
  myData   =   (TypedCArray)   myRtn.getReplyBuffer();  
   
  myTux.tpterm();   //   Closing   the   association   with   Tuxedo  
   
   
  byte   outbt[];   //   Byte类型的出参报文  
   
  outbt=myData.carray;  
   
   
  //   取出出参个数  
   
  iOutCnt   =   tapiPub.ReadOutPNum(outbt);  
   
  //判断交易是否成功,如果成功,从报文中取出参;如果失败,取出错误代码和错误信息,直接返回  
   
  if   (tapiPub.IsSucess(outbt,   iOutCnt)   !=   0)   {  
   
  throw   new   testException(tapiPub.GetErrMsg(outbt,   iOutCnt));  
   
  }  
   
   
  //此处解包  
   
  int   iNum   =   0;   //出参序号  
   
  //报文数据区开始位置  
   
  int   iPos   =   myMessage.TDATA_HEADER_SIZE.intValue()   +  
   
  myMessage.USIGNED_SHORT_SIZE.intValue()*(iOutCnt+1);  
   
   
  //用   getIntFromMsg方法取出出参iCount  
   
  short   iCount   =   transPub.getShortFromMsg(iNum,   iPos,   outbt,   iOutCnt);  
   
  iPos   +=   tapiPub.getOutParamLength(iNum,   outbt,   iOutCnt);  
   
  iNum++;  
   
   
  //   给出参ArrayList分配空间  
   
  for(int   i   =   0;   i   <(int)iCount;   i++){  
   
  TotalStru   totalvo   =   new   TotalStru();  
   
  totalList.add(totalvo);  
   
  }  
   
   
  //   从报文中取出出参ArrayList  
   
  iPos   =   pack.StructureListRead   (outbt,   totalList,   iPos);  
   
  iNum++;  
   
   
  return   totalList;  
   
  }  

分享到:
评论
1 楼 handong106324 2012-08-24  
可不可以给个全点的,谢谢了

相关推荐

    C语言学习版编程软件wtc2015.zip

    标题 "C语言学习版编程软件wtc2015.zip" 指的是一款专为C语言初学者设计的编程软件,可能包含了2015年版本的特性。这款软件可能是一个轻量级的集成开发环境(IDE),旨在提供一个友好的学习环境,帮助用户理解和实践...

    wtc配置与实例参考

    - 跨语言支持:可以在不同的编程语言之间实现通信。 - 平台无关性:可以在不同的操作系统和硬件平台上运行。 #### 3.2 使用场景 - **异构系统集成**:适用于需要在多种不同技术栈构建的系统之间进行交互的场景,...

    WTC暴露ejb服务说明

    本文将深入探讨如何通过Tuxedo调用Weblogic的EJB(Enterprise JavaBeans)服务,这一过程称为“WTC暴露ejb服务”。WebLogic Transaction Coordinator (WTC) 是Oracle WebLogic Server中的一个关键组件,它允许应用...

    WTC c语言学习专用

    C语言是一种广泛应用于系统编程、嵌入式开发、软件开发等多个领域的高级编程语言。它的语法简洁明了,可移植性极强,是许多程序员入门编程的首选。"WTC"可能指的是一个特定的学习资源集合,或者是某个教学机构或课程...

    Weblogic wtc调用tuxedo服务

    WebLogic Server 的 WTC...总之,WebLogic WTC调用Tuxedo服务涉及到WebLogic和Tuxedo两套系统的集成,通过细致的配置和适当的编程接口,可以实现跨平台的分布式事务处理,这对于构建复杂的企业级应用至关重要。

    WTC开发指南(CHM版)

    2. **事务管理**:理解WTC提供的事务模型,如本地事务和全局事务,以及如何通过编程或配置来控制事务行为。 3. **资源管理**:配置和使用不同的资源管理器,如数据库连接池,以及如何进行事务恢复。 4. **编程接口**...

    WTC6312-16BSI触摸芯片资料

    这个接口程序范例可能是用C语言或汇编语言编写,旨在帮助开发者了解如何通过编程来控制WTC6312-16BSI,实现触摸事件的读取和处理。版本号V1.2-CN表明这是该程序的一个中文版更新,可能包含了对原有版本的改进和优化...

    jolt WTC 调用TUXEDO jar包

    它支持C、C++和Java等多种编程语言,并且具有高可用性、可伸缩性和性能优化的特点。在Java环境中,通过使用Tuxedo的Java API,开发者可以将Java应用与Tuxedo服务进行集成。 “jolt WTC 调用TUXEDO jar包”这个标题...

    c语言软件wtc

    【C语言软件WTc】是专为教学设计的一款C语言编程工具,对于初学者和自学者来说,它提供了一个友好的环境,便于理解和实践C语言编程。C语言是一种基础且强大的编程语言,广泛应用于系统开发、嵌入式系统、游戏引擎、...

    DMG10600C070-03WTC出厂工程_diwenSTM32_

    总之,"DMG10600C070-03WTC出厂工程_diwenSTM32_"涉及了STM32微控制器对DGUS系统及特定硬件的初始化和编程。通过理解并实践这些步骤,开发者能够创建一个功能完备、用户友好的图形界面,用于与DMG10600C070-03WTC...

    TUXEDO----WTC-----

    3. **编程接口**:在应用程序中,使用JTA API(如UserTransaction)来开始、提交和回滚事务。 4. **测试和调试**:通过日志和监控工具,检查事务的执行情况,确保事务处理的正确性。 **四、文档资源** "weblogic ...

    8051与WTC6506D32接口的典型操作程序

    综上所述,8051与WTC6506D32接口操作程序涵盖了硬件连接、串行通信协议设置、中断处理以及特定应用的软件编程。理解这些知识点并结合提供的资源,可以有效地开发出稳定、高效的嵌入式系统。在实际项目中,开发者需要...

    WTC

    5. **软件开发**:"WTC-main"可能是一个软件项目的核心部分,涵盖编程语言(如Java、Python、C++等)、版本控制系统(如Git)、构建工具(如Maven或Gradle)以及测试框架。 6. **物联网(IoT)**:WTC也可能涉及...

    mobail-wtc:Wtc 移动任务

    【标题】:“Wtc 移动任务”是一个与Java相关的项目,主要针对移动平台,旨在构建一个用于管理任务的应用程序。这个项目可能涉及到Android或跨平台的移动开发,利用Java的强大功能来实现任务的创建、跟踪和管理。 ...

    WIN-TC C语言编程软件

    "WIN-TC C语言编程软件" 是一款专为C语言编程设计的集成开发环境(IDE),适用于Windows操作系统。它基于经典的Turbo C++编译器,为用户提供了编写、编译和调试C语言程序的便捷平台。 **描述分析:** 描述中的 "WIN...

    tugasmobilewtc:WTC Android 移动编程任务 Eko Setyo Kriswanto 和 Muhamad Arief

    【标题】"tugasmobilewtc:WTC Android 移动编程任务 Eko Setyo Kriswanto 和 Muhamad Arief" 涉及的是一个Android应用开发项目,由Eko Setyo Kriswanto和Muhamad Arief共同完成。这个任务可能是一次教育或专业实践中...

    WTC7514DSI(W).zip_单片机开发_C++_Builder_

    这个压缩包可能包含了针对WTC7514DSI(W)这款串口扩展芯片的详细资料和编程示例。 WTC7514DSI(W)是一款串行接口芯片,常用于扩展单片机的串行通信能力。在嵌入式系统中,单片机的I/O口数量有时不能满足设计需求,...

    万代触摸按键STM32驱动

    【标题】"万代触摸按键STM32驱动"涉及到的核心技术是STM32微控制器以及非标准SPI接口的万代触摸按键的驱动编程。STM32是意法半导体(STMicroelectronics)生产的一种基于ARM Cortex-M内核的微控制器系列,广泛应用于...

    WTC:remote远程工作人员的工作时间计算器应用程序

    2. **JavaScript**: 应用的主要编程语言是JavaScript,它用于实现业务逻辑和交互功能。JavaScript的强大在于其广泛的应用场景和丰富的生态系统,可以轻松地处理前端和后端任务。 3. **ReactJS**: React是一个由...

Global site tag (gtag.js) - Google Analytics