SAP的JAVA中间件,使用它可以使SAP的客户和合作伙伴使用JAVA语言轻松地建立可以和SAP系统通信的兼容的组件和应用程序下面是JCo一些显著的特征:

1.      支持双向调用(ABAP调用JAVA和JAVA调用ABAP)

2.      支持Unicode和非Unicode编码的系统

3.      为程序员封装了一些难以理解和处理的部分,比如代码页,数据类型转换和连接池等等

4.      屏蔽了RFC和DDIC的一些细节,这样可以让程序员专注于业务逻辑的处理,而不必去理会过于底层的东西

5.      容易学习和使用的API和JAVA类的设计

6.      动态查找和缓存元数据

Java应用程序使用JCo的API进行连接,RFC中间件使用RFC库通过JNI来连接SAP的R/3系统,如下图所示:

连接过程:

1.      创建一个连接池 addClientPool()

2.      创建一个BOR,它包含运行时环境所有function模块的元数据 createRepository()

3.      创建function template getFunctionTemplate()

4.      创建function getFunction()

5.      从连接池中取出一个连接的实例 getClient()

6.      设置传递给function模块的输入参数 getImportParameterList()

7.      执行这个function excute()

8.      得到function执行后得到的输出参数 getExportParameterList()

9.      销毁连接池 removeClientPool()

性能优化注意事项

1.      因为连接池中的连接是可重用和可保持的,所以可以降低系统开销,最大并发连接数量的限制避免过多地占用SAP系统的资源,尽管如此,也不要使用过小的最大并发连接数从而造成应用系统的性能瓶颈,为了容纳由应用系统造成的额外负载,SAP系统要经过一些配置。

2.      使用一个新的function对象时,为了提高性能而重用已有的function对象,不仅是多于的,而且还很危险,因为JCo的Repository为每个function模块缓存了元数据,如果重用一个含有表参数的function,而这个function中的表中的行数据没有被清除,那么更多的行数据会添加到这个表上,从而会造成错误的结果,这是使用一个新的function对象时要注意的。

3.      只需使用一个Repository对象,因为Repository对象可以动态重新得到SAP function模块中的元数据并重新缓存,所以使用一个就够了,如果使用过多的Repository对象,会降低应用系统和SAP系统的性能

4.      应用系统只使用了function中的一小部分参数,为了提高性能,可以使用setActive()方法将那些应用程序不使用的参数设置为非活动状态,包括Table Parameter、ParameterList以及JCO.Request对象

5.      添加多行数据到JCO的Table对象中时,使用appendRows(int num_rows)方法代替appendRow()方法,这样可以提高性能

同步问题

为了提高性能,JCO只在访问连接池和Repository对象时采取同步,其他的操作都是异步的,在多线程的环境下,不同线程之间共享对象(比如Table对象)是值得警惕的,并且一个连接对象是不能共享访问的,这样导致发生异常Exception

转载至 http://blog.csdn.net/w5q7c3/article/details/8988982

java jco sap 重连_SAP R3和JAVA交换数据之JCO相关推荐

  1. java jco连接sap帐号权限设定,Java连接SAP的JCO调用RFC配置

    第一步:下载librfc32.dll和sapjcorfc.dll文件,版本分别为6405.5.132.5092 - 6400.132.12.49905 第二步:将下载的两个DLL文件放在的window ...

  2. JAVA与SAP数据交互的方式总结

    JAVA与SAP数据交互的方式总结 RFC方式:Java程序直接通过RFC访问SAP的对象(或称函数,可能叫法不对)     SAP提供了BAPI(Business Application Progr ...

  3. Java连接sap无明显报错信息,Kettle连接SAP报错问题

    请问下你是怎么连接到sap的,我现在连接报错 Unable to connect to the SAP ERP server: Cannot get SAP function Connect to S ...

  4. bapi sap 创建物料_SAP调用BAPI创建物料主数据

    展开全部 import com.sap.mw.jco.*; import com.sap.mw.jco.JCO; import com.sap.mw.jco.IFunctionTemplate; im ...

  5. java socket 自动重连_socket 如何判断远端服务器的连接状态?连接断开,需重连...

    fluent-logger-java is a Java library, to record events via Fluentd, from Java application. https://g ...

  6. Java EE重命名为Jakarta EE:Java EE Guardians与Oracle的分歧

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ 由于对Oracle不热心回应Java社区反馈感到失望,Java EE Guardians于今 ...

  7. 【JavaWeb 爬虫】Java文本查重网页版 爬取百度搜索结果页全部链接内容

    ! ! 更新:增加了网页过滤判断,只允许域名包含blog,jianshu的网站通过 小技巧 Java中InputStream和String之间的转换方法 String result = new Buf ...

  8. java 偏向锁 重偏向_锁原理:偏向锁、轻量锁、重量锁

    java中每个对象都可作为锁,锁有四种级别,按照量级从轻到重分为:无锁.偏向锁.轻量级锁.重量级锁.每个对象一开始都是无锁的,随着线程间争夺锁,越激烈,锁的级别越高,并且锁只能升级不能降级. 一.ja ...

  9. JAVA调用SAP接口地址_Java以webservice方式调用SAP接口传输数据

    Java以webservice方式调用SAP接口传输数据,在SAP中生成 会计凭证/冲销会计凭证 1.生成会计凭证(已完成) 2.冲销会计凭证(以下教程截图以该接口为例) Java调用sap的webs ...

  10. ajax java用户名查重_Django之AJAX

    AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JS ...

最新文章

  1. linux启停was命令,linux下的启停脚本
  2. MaximumGap的思想
  3. 谷歌推荐Data Binding实现MVVM模式(完整文档)
  4. C++实践参考——OOP版电子词典
  5. 博客属性10个非常不错的CSS技巧
  6. ASP.NET Core ActionFilter引发的一个EF异常
  7. java soot_正确执行3个地址代码的SOOT API
  8. [html] 如何使用纯html制作一个进度条?
  9. 英特尔中国祝贺高亭宇夺冠:至强CPU提供更精准训练支持
  10. Mybatis 查询返回List<String>集合
  11. 【读书笔记】iOS-访问网络
  12. 根据出库、入库表,实现对库存的信息查询
  13. 每天10道Crypto Day3
  14. SLA/LCD/DLP光固化3D打印原理分析!
  15. OFDM学习笔记(十)(MIMO-OFDM技术)
  16. 基于博客系统的访客日志记录----代码合集
  17. NKOJ 4043 (CQOI 2017) 老C的键盘 (树形DP)
  18. 七.Docker网络管理以及固定ip
  19. 5.8GHz雷达感应模块应用,智能家居照明技术,微波雷达传感器
  20. 数据库常用命令及关键字

热门文章

  1. 服务器子接口配置的几种方式:子接口模式、vlan模式
  2. Vue删除表格中的某一行数据
  3. 螺杆式、离心式、活塞式冷水机组及品牌
  4. linux .bin文件反编译,ARM的BIN文件反汇编方法
  5. LoRa无线通信设计(一)原理
  6. 京东物流系统架构演进中的最佳实践
  7. SQL 查询速度慢原因及优化方法(转载)
  8. 网络:bit、Byte、bps、Bps、pps、Gbps的单位详细说明及换算。
  9. oracle delete误删除表数据进行恢复
  10. win7美化_笔记本怎么外接显示器?附Windows效率加倍/桌面美化实用技巧