• SAP R3和JAVA交换数据之JCO


    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

  • 相关阅读:
    php 通过二维码图片读取二维码内容
    Centos 文件系统 xfs、ext4、ext3 的区别
    js 实现省市县三级联动
    Scrapy 爬虫实战
    Mongodb 和 MySql native json 对比
    Vite —— 一种新的、更快地 web 开发工具
    解决mysql for docker容器报错:Authentication plugin 'caching_sha2_password' cannot be loaded
    Spring boot 自定义注解,Java通过反射获取注解,及注解的说明,附源码下载!
    Spring boot 自定义注解+@Aspect实现切面输出日志,附源码下载!
    HTML5 Canvas基础教程
  • 原文地址:https://www.cnblogs.com/rinack/p/8119459.html
Copyright © 2020-2023  润新知