java jco sap 重连_SAP R3和JAVA交换数据之JCO
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相关推荐
- java jco连接sap帐号权限设定,Java连接SAP的JCO调用RFC配置
第一步:下载librfc32.dll和sapjcorfc.dll文件,版本分别为6405.5.132.5092 - 6400.132.12.49905 第二步:将下载的两个DLL文件放在的window ...
- JAVA与SAP数据交互的方式总结
JAVA与SAP数据交互的方式总结 RFC方式:Java程序直接通过RFC访问SAP的对象(或称函数,可能叫法不对) SAP提供了BAPI(Business Application Progr ...
- Java连接sap无明显报错信息,Kettle连接SAP报错问题
请问下你是怎么连接到sap的,我现在连接报错 Unable to connect to the SAP ERP server: Cannot get SAP function Connect to S ...
- bapi sap 创建物料_SAP调用BAPI创建物料主数据
展开全部 import com.sap.mw.jco.*; import com.sap.mw.jco.JCO; import com.sap.mw.jco.IFunctionTemplate; im ...
- java socket 自动重连_socket 如何判断远端服务器的连接状态?连接断开,需重连...
fluent-logger-java is a Java library, to record events via Fluentd, from Java application. https://g ...
- Java EE重命名为Jakarta EE:Java EE Guardians与Oracle的分歧
\ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ 由于对Oracle不热心回应Java社区反馈感到失望,Java EE Guardians于今 ...
- 【JavaWeb 爬虫】Java文本查重网页版 爬取百度搜索结果页全部链接内容
! ! 更新:增加了网页过滤判断,只允许域名包含blog,jianshu的网站通过 小技巧 Java中InputStream和String之间的转换方法 String result = new Buf ...
- java 偏向锁 重偏向_锁原理:偏向锁、轻量锁、重量锁
java中每个对象都可作为锁,锁有四种级别,按照量级从轻到重分为:无锁.偏向锁.轻量级锁.重量级锁.每个对象一开始都是无锁的,随着线程间争夺锁,越激烈,锁的级别越高,并且锁只能升级不能降级. 一.ja ...
- JAVA调用SAP接口地址_Java以webservice方式调用SAP接口传输数据
Java以webservice方式调用SAP接口传输数据,在SAP中生成 会计凭证/冲销会计凭证 1.生成会计凭证(已完成) 2.冲销会计凭证(以下教程截图以该接口为例) Java调用sap的webs ...
- ajax java用户名查重_Django之AJAX
AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JS ...
最新文章
- linux启停was命令,linux下的启停脚本
- MaximumGap的思想
- 谷歌推荐Data Binding实现MVVM模式(完整文档)
- C++实践参考——OOP版电子词典
- 博客属性10个非常不错的CSS技巧
- ASP.NET Core ActionFilter引发的一个EF异常
- java soot_正确执行3个地址代码的SOOT API
- [html] 如何使用纯html制作一个进度条?
- 英特尔中国祝贺高亭宇夺冠:至强CPU提供更精准训练支持
- Mybatis 查询返回List<String>集合
- 【读书笔记】iOS-访问网络
- 根据出库、入库表,实现对库存的信息查询
- 每天10道Crypto Day3
- SLA/LCD/DLP光固化3D打印原理分析!
- OFDM学习笔记(十)(MIMO-OFDM技术)
- 基于博客系统的访客日志记录----代码合集
- NKOJ 4043 (CQOI 2017) 老C的键盘 (树形DP)
- 七.Docker网络管理以及固定ip
- 5.8GHz雷达感应模块应用,智能家居照明技术,微波雷达传感器
- 数据库常用命令及关键字