码迷,mamicode.com
首页 > 编程语言 > 详细

SAP R3和JAVA交换数据之JCO

时间:2017-12-26 19:09:41      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:active   func   同步问题   数据类型转换   java   text   java类   connect   技术分享   

SAP Java Connector (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

SAP R3和JAVA交换数据之JCO

标签:active   func   同步问题   数据类型转换   java   text   java类   connect   技术分享   

原文地址:https://www.cnblogs.com/rinack/p/8119459.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!