JCO 自定义DestinationDataProvider
要让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"); }
JCO 自定义DestinationDataProvider的更多相关文章
- SAP接口编程 之 JCo3.0系列(05) : Exception Handling
JCO3.0的Exception,常用的Exception如下: JCoException 继承自java.lang.Exception,是JCo3中Exception的基类. JCoRuntimeE ...
- Java(JCo3)与SAP系统相互调用
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- java call sap
1.下载需要的jar,windows用dll,linux用so win下载地址 linux下载地址 win下载地址new 2.环境: windows -> sapjco3.dll放到wi ...
- [SAP ABAP开发技术总结]BAPI调用
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- SAP接口编程 之 JCo3.0系列(01):JCoDestination
SAP接口编程 之 JCo3.0系列(01):JCoDestination 字数2101 阅读103 评论0 喜欢0 JCo3.0是Java语言与ABAP语言双向通讯的中间件.与之前1.0/2.0相比 ...
- JAVA连接SAP
1.首先需要在SAP事务码SE37中新建一个可以被远程调用的RFC 事务码:SE37 新建一个函数组:输入事务码SE37回车后,来到函数构建器屏幕,到上面一排菜单栏:转到 -> 函数组 -> ...
- SAP传输请求自动发布
最近公司服务器做迁移,原R3 PRE需要迁到另外的地方,迁移后一段时间内,需要两套PRE环境同时运行,过一段时间后才将传输路线切换到新的PRE.在切换前,要求新PRE环境也要正常同步发布请求, ...
- JAVA Hibersap 框架调用 SAP
In this example we will create a simple Maven project which uses Hibersap to call a function in SAP ...
- 使用Java connector消费ABAP系统的函数
Java Connector(JCO)环境的搭建:Step by step to download and configure JCO in your laptop 我的ABAP系统有个函数名叫ZDI ...
随机推荐
- Eclipse中安装Maven插件 M2eclipse
下面是官网的说明,基本上的意思下面有图片说明. To install m2eclipse, use the following Eclipse update site to install the c ...
- 关于vs2013调试的偶然错误发现与总结(vs2013的承载进程)---ShinePans
当项目的属性选择为 启用 vs2013承载进程 或出现一下错误: 尝试运行项目时出错:未能加载文件或程序集"GroupBoxTest" 或它的某一个依赖项.给定程序集名称" ...
- 数据库插入数据返回当前自增主键ID值的方法
当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2. ...
- MapReduce开发技巧
数据类型的选择 自定义数据类型 参考:Hadoop提交作业自定义排序和分组 MapWritable/SortedMapWritable Hadoop中可传输的Map集合,和Java中的Map用法差不多 ...
- Deep Learning论文笔记之(一)K-means特征学习
Deep Learning论文笔记之(一)K-means特征学习 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感 ...
- 已阻止安装程序vs2015
Burn v3.7.4906.0, Windows v10.0 (Build 15063: Service Pack 0), path: H:\vs_enterprise.exe, cmdline: ...
- (剑指Offer)面试题48:不能被继承的类
题目: 写一个不能被继承的类 思路: 1.把构造函数设为私有函数 在C++中子类的构造函数会自动调用父类的构造函数,子类的析构函数也会自动调用父类的构造函数,要想一个类不能被继承,只要把它的构造函数和 ...
- SELECT语句逻辑运行顺序,你知道吗?
引言 这不是一个什么多深的技术问题.多么牛叉的编程能力.这跟一个人的开发能力也没有很必定的直接关系,可是知道这些会对你的SQL编写,排忧及优化上会有很大的帮助.它不是一个复杂的知识点.可是一个很基础的 ...
- Toast.makeText 方法出错 java.lang.RuntimeException
接手以前同事留下的代码,今天突然出现了一个bug: java.lang.RuntimeException: Can't create handler inside thread that has no ...
- 为pc编译配置安装当前最新的内核
搜索公众号:itxxgh (IT学习干货),全公益.免费.定期,提供,<IT学习教程>.不会骚扰大家,仅仅需轻点关注,也会传播<中华传统文化>传播正能量. 或扫描二维码 1 ...