要让JAVA程序能访问SAP系统,一般通过SAP JCO接口进行通讯,在获取到SAP的连接时需求提供一些连接参数,这些参数在最新的 JCO 3.0 中需要被保存到一个带有扩展名.jcoDestination的文件中,这个文件同时被保存在应用程序的安装目录中。因为这只中一个纯文本文件,所有的连接参数并没有被加密,这样对于公用程序可能有安全问题。要使用登陆连接更加安全可以实现自定义的 DestinationDataProvider 实现:
此接口只有简单的三个方法:

interface DestinationDataProvider {Properties     getDestinationProperties(java.lang.String destinationName);void     setDestinationDataEventListener(DestinationDataEventListener eventListener);boolean     supportsEvents();
}

getDestinationProperties 当Java程序获取到SAP的连接时,jco会从这里读取连接属性,你可以编程动态的设定这些属性
setDestinationDataEventListener 设置一个连接事件监听器,实现一个监听器,当JCO连接SAP以获得通知
supportsEvents 返回是否被实现的DestinationDataProvider有事件监听器

实现一个自定义Provider:

    static class MyDestinationDataProvider implements DestinationDataProvider{private DestinationDataEventListener eL;private Properties ABAP_AS_properties; public Properties getDestinationProperties(String destinationName){if(destinationName.equals("ABAP_AS") && ABAP_AS_properties!=null)return ABAP_AS_properties;return null;//alternatively throw runtime exception//throw new RuntimeException("Destination " + destinationName + " is not available");
        }public void setDestinationDataEventListener(DestinationDataEventListener eventListener){this.eL = eventListener;}public boolean supportsEvents(){return true;}void changePropertiesForABAP_AS(Properties properties){if(properties==null){eL.deleted("ABAP_AS");ABAP_AS_properties = null;}else {if(ABAP_AS_properties!=null  && !ABAP_AS_properties.equals(properties))eL.updated("ABAP_AS");ABAP_AS_properties = properties;}}}

测试连接:

    public static void main(String[] args) throws Exception{Properties connectProperties = new Properties();connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "binmain");connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "53");connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "000");connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "JCOTEST");connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "JCOTEST");connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "en");MyDestinationDataProvider myProvider = new MyDestinationDataProvider();com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(myProvider);myProvider.changePropertiesForABAP_AS(connectProperties);JCoDestination ABAP_AS = JCoDestinationManager.getDestination("ABAP_AS");ABAP_AS.ping();System.out.println("ABAP_AS destination is ok");}

转载于:https://www.cnblogs.com/rinack/p/8041582.html

JCO 自定义DestinationDataProvider相关推荐

  1. SAP JCO connector 例子

    SAP JCO connector3与SAP 通过RFC的方式建立连接以及数据交互的例子. 步骤: 初始化连接用户名,密码,连接池等信息 sap-conig.properties文件: #notes: ...

  2. JCO连接SAP例子

    JCO连接SAP例子 SAP JCo(SAP Java Connector,SAP Java连接器)是SAP组件和Java应用程序之间的中间件和接口实现机制. JCo基于JNI(Java Native ...

  3. JAVA使用JCo连接SAP介绍

    SAP Java Connector (SAP JCo) 是JAVA与SAP相互通信的中间件组建.该组建支持双向通讯模式(inbound calls 和 outbound calls ). JCo支持 ...

  4. java使用jco连接sap调用rfc函数,环境配置+代码

    Windows环境配置 1.将sapjco3.jar引入 2.配置sapjco3.dll文件 32位系统:将sapjco3.dll放到C:\Windows\System32下  或者放到jdk/bin ...

  5. JCo3 建立连接到SAP(2)- 连接池

    2019独角兽企业重金招聘Python工程师标准>>> import java.io.File;    import java.io.FileOutputStream;    imp ...

  6. 使用Java connector消费ABAP系统的函数

    Java Connector(JCO)环境的搭建:Step by step to download and configure JCO in your laptop 我的ABAP系统有个函数名叫ZDI ...

  7. JAVA调用BAPI创建销售订单

    创建JAVA程序 import java.io.File;      import java.io.FileOutputStream;      import java.util.Properties ...

  8. sapjco3使用详解

    上篇文章看完之后,感觉很清晰了,于是我下载了sapjco3,准备自己亲自写一遍,可是,等我下载下来准备开写的时候, 发现了我在JCO中并没有发现createClient()等方法,查阅了很多文章后发现 ...

  9. SpringBoot调用SAP接口(搭建部署)

    一.项目搭建 创建项目,添加依赖 引入maven依赖 编写工具类 测试是否成功 注意事项 二.打包部署 一.项目搭建 1.创建Maven项目,在src/main/resource目录下创建lib文件夹 ...

最新文章

  1. sql自动生成工具_可自动生成代码,5款基于AI的开发工具
  2. 数据结构之---二叉树C实现
  3. 登录mysql报错2059_navicat连接mysql8.0+版本报错2059
  4. JVM解惑:消失的异常堆栈,log中打印异常堆栈为空
  5. Android开发周报:Google 推出AR SDK、Android 8.0 Oreo 最终版发布
  6. Android 性能优化探究
  7. java 并发变量_二、Java多线程编程 (对象及变量的并发访问)
  8. Dell服务器串口开机协议,dell和ibm服务器串口重定向功能的配置.docx
  9. 求两个集合是否有交集 c语言_高中数学:集合与函数概念知识点汇总
  10. Jeecg弱口令后台上传getShell渗透测试
  11. 复工后的前端学习建议,非常实用!
  12. 什么是蜂窝网络和蜂窝设备测试
  13. 《人月神话》(The Mythical Man-Month)2人和月可以互换吗?人月神话存在吗?
  14. 零基础学Arcgis系列教程
  15. [QT_016]Qt学习之QPlainTextEdit 、QTextEdit 、QTextBrowser
  16. 如何访问kubernetes API?
  17. DI接口测试工装研究
  18. 计算机网络实验报告一心得,《计算机网络实验报告》5_12330122_黄嘉敏_实验心得.pdf...
  19. 21届毕业生毕业一年内的状态
  20. AB32VG1项目之智能晾衣架

热门文章

  1. java转net容易吗_每日一醒(1):学习Java容易忽视的小错误,你注意到了吗?
  2. 计算机网络部分简答题
  3. 图论--2-SAT--poj 3678-Katu Puzzle(模板题)
  4. 图论--SCC强连通缩点--Tarjan
  5. Could not establish connection to hadoop0:10000/default: Connection refused: connect
  6. [图神经网络] 图节点Node表示---GCN
  7. 设置vim语法高亮显示和自动缩进
  8. Shady 深度学习课程
  9. openai-gpt_GPT-3报告存在的问题
  10. 重拾强化学习的核心概念_强化学习的核心概念