SAP接口编程 之 JCo3.0 系列 (01):JCoDestination

JCo3.0 是 Java 语言与 ABAP 语言双向通信的中间件。与之前版本 1.0/2.0 相比,是重新设计的产品。API 和架构设计与 NCo3.0 比较类似。前面也说过,NCo3.0 的设计参考了 JCo3.0。从本篇开始,系统性介绍 JCo3.0 程序编写的技术要点。

JCo3.0 安装

 

https://service.sap.com/connectors 下载 JCo3.0,注意下载的时候根据操作系统JVM 版本(32 位还是 64位)选择不同的版本。安装就是解压,将文件解压到目标文件夹。以 Windows 系统为例,主要的文件包括:

  • sapjco3.dll
  • sapjco3.jar

SAP 强烈推荐将这两个文件放在同一文件夹下。测试安装是否成功,可以在命令窗口下,进入安装文件夹,运行下面的命令:

java -jar sapjco3.jar

安装成功java会提示一个SAP的页面出来

JCoDestination 对象介绍

JCoDestination 代表后端 SAP 系统,开发人员不必关心与 SAP 的连接,JCo3.0 运行时环境负责连接的管理,包括连接和释放连接。我们先看一个简单的例子,了解 JCo3.0 JCoDestination 类的一些要点。

我使用的编程环境是 Eclipse,环境准备如下:


  • 新建一个 Java 项目,项目名为 JCo3Demo
  • sapjco3.jar 加入到项目的 Build Path 中。sapjco3.jar 和 sapjco3.dll 要放在同一个文件夹下。
  • 在 Eclipse 项目文件夹下,新建一个文本文件,文件名命名为ECC.jocdestination,在这个文件中设置 SAP 系统连接的的相关参数。

文件的内容如下:

#notes:更多配置项@see com.sap.conn.jco.ext.DestinationDataProvider
#客户端编号
jco.client.client=300
#用户名
jco.client.user=MM001
#密码
jco.client.passwd=12342234
#语言
jco.client.lang=ZH
#IP
jco.client.ashost=127.0.0.1
#系统编号
jco.client.sysnr=10
#最大空闲连接数
jco.destination.pool_capacity=1000
#超时
jco.destination.max_get_client_time=100
#最大活动连接数
jco.destination.peak_limit=1000

环境准备好了,先来一段最简单的代码,测试是否可以连接到 SAP 系统:

public class JCoDestinationDemo
{
    public JCoDestination getDestination() throws JCoException
    {
        /**
         * Get instance of JCoDestination from file named ECC.jcodestination
         * which should be located in the installation folder of java project
         */
         
        JCoDestination dest = JCoDestinationManager.getDestination("ECC");
        return dest;
    }
    
    @Test
    public void pingDestination() throws JCoException
    {    
        JCoDestination dest = this.getDestination();
        dest.ping();
    }   
}

代码说明:


getDestination() 方法


getDestination()方法中,JCoDestinationManager.getDestination("ECC") 从 ECC.jcodestination
文件获取连接参数,创建 JCoDestination 对象的实例。

这里有一个重要的约定,JCoDestinationManager.getDestination("ECC")方法,从 Eclipse 项目的根目录,查找 ECC.jcodestination 文件,文件的扩展名必须固定为 jcodestination,文件名就是 getDestination 方法的参数。如果找到文件,从文件中获取连接参数。这是 DestinationDataProvider 接口的一个默认实现,在开发和测试的时候还是很方便的,但如果在真实项目中使用,安全性和灵活性就不够。后续介绍解决方法。

当然如果愿意的话也可以写properties之类的文件,读取自己系统的路径,解析通过上面的文件连接,测试也可以。

 


pingDestination() 方法


pingDestination() 方法调用 JcoDestination 对象的 ping() 方法测试与 SAP 系统的连接。

JcoException  https://www.jianshu.com/p/a188424c16c0

Jco会话与线程问题  https://www.jianshu.com/p/2ce28196483c

作者:https://www.jianshu.com/u/fd37d4449963

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值