(一)通过JAVA连接SAP (sapjco3.jar在Windows和MacOS上的配置)
(一)通过JAVA连接SAP调用接口 (sapjco3.jar在Windows和MacOS上的配置)
一、sapjoc3.jar获取
由于sap官网提供的链接需要合作公司提供账号密码,如果商用请索要正确的用户名密码下载,如果只是想做测试使用,可以使用我这里提供的链接,资源失效请及时提醒我,谢谢
点击这里下载windows版 密码:1u0t
点击这里下载linux版 密码:7zuv
点击这里下载macOS版 密码:lafl
二、测试项目环境准备
新建项目
这个就不多谈了,直接上图,我这里新建了一个空的测试项目,新建lib文件夹,准备把需要用到的jar包丢进来windows和macOS环境配置
- windows
直接把 sapjco3.jar sapjco3.dll sapjco3.pdb 拷贝至lib下,然后add library把他们都添加进去 - macOS
把 sapjco3.jar 和 libsapjco3.jnilib 拷贝至lib下,同样add libray添加进去,这里只需要add sapjco3.jar 即可。
- windows
WARNING: 这里很多博客讲到需要添加classpath在变量里面,这是参照了官方提供的安装方式,这里的话我们只需要将上述文件拷贝至lib文件夹下即可。
三、源码编写及测试
首先编写用来放置sap连接信息的SapConn实体类
SapConn
- /**
- * Created by gang.xu01@hand-china.com on 2018/12/6
- */
- public class SapConn {
- // SAP服务器
- private String JCO_ASHOST;
- // SAP系统编号
- private String JCO_SYSNR;
- // SAP集团
- private String JCO_CLIENT;
- // SAP用户名
- private String JCO_USER;
- // SAP密码
- private String JCO_PASSWD;
- // SAP登录语言
- private String JCO_LANG;
- // 最大连接数
- private String JCO_POOL_CAPACITY;
- // 最大连接线程
- private String JCO_PEAK_LIMIT;
- // SAP ROUTER
- private String JCO_SAPROUTER;
- public SapConn(String JCO_ASHOST, String JCO_SYSNR, String JCO_CLIENT, String JCO_USER,
- String JCO_PASSWD, String JCO_LANG, String JCO_POOL_CAPACITY, String JCO_PEAK_LIMIT,
- String JCO_SAPROUTER) {
- this.JCO_ASHOST = JCO_ASHOST;
- this.JCO_SYSNR = JCO_SYSNR;
- this.JCO_CLIENT = JCO_CLIENT;
- this.JCO_USER = JCO_USER;
- this.JCO_PASSWD = JCO_PASSWD;
- this.JCO_LANG = JCO_LANG;
- this.JCO_POOL_CAPACITY = JCO_POOL_CAPACITY;
- this.JCO_PEAK_LIMIT = JCO_PEAK_LIMIT;
- this.JCO_SAPROUTER = JCO_SAPROUTER;
- }
- public SapConn() {}
- public String getJCO_ASHOST() {
- return JCO_ASHOST;
- }
- public void setJCO_ASHOST(String JCO_ASHOST) {
- this.JCO_ASHOST = JCO_ASHOST;
- }
- public String getJCO_SYSNR() {
- return JCO_SYSNR;
- }
- public void setJCO_SYSNR(String JCO_SYSNR) {
- this.JCO_SYSNR = JCO_SYSNR;
- }
- public String getJCO_CLIENT() {
- return JCO_CLIENT;
- }
- public void setJCO_CLIENT(String JCO_CLIENT) {
- this.JCO_CLIENT = JCO_CLIENT;
- }
- public String getJCO_USER() {
- return JCO_USER;
- }
- public void setJCO_USER(String JCO_USER) {
- this.JCO_USER = JCO_USER;
- }
- public String getJCO_PASSWD() {
- return JCO_PASSWD;
- }
- public void setJCO_PASSWD(String JCO_PASSWD) {
- this.JCO_PASSWD = JCO_PASSWD;
- }
- public String getJCO_LANG() {
- return JCO_LANG;
- }
- public void setJCO_LANG(String JCO_LANG) {
- this.JCO_LANG = JCO_LANG;
- }
- public String getJCO_POOL_CAPACITY() {
- return JCO_POOL_CAPACITY;
- }
- public void setJCO_POOL_CAPACITY(String JCO_POOL_CAPACITY) {
- this.JCO_POOL_CAPACITY = JCO_POOL_CAPACITY;
- }
- public String getJCO_PEAK_LIMIT() {
- return JCO_PEAK_LIMIT;
- }
- public void setJCO_PEAK_LIMIT(String JCO_PEAK_LIMIT) {
- this.JCO_PEAK_LIMIT = JCO_PEAK_LIMIT;
- }
- public String getJCO_SAPROUTER() {
- return JCO_SAPROUTER;
- }
- public void setJCO_SAPROUTER(String JCO_SAPROUTER) {
- this.JCO_SAPROUTER = JCO_SAPROUTER;
- }
- @Override
- public String toString() {
- return "SapConn{" +
- "JCO_ASHOST='" + JCO_ASHOST + '\'' +
- ", JCO_SYSNR='" + JCO_SYSNR + '\'' +
- ", JCO_CLIENT='" + JCO_CLIENT + '\'' +
- ", JCO_USER='" + JCO_USER + '\'' +
- ", JCO_PASSWD='" + JCO_PASSWD + '\'' +
- ", JCO_LANG='" + JCO_LANG + '\'' +
- ", JCO_POOL_CAPACITY='" + JCO_POOL_CAPACITY + '\'' +
- ", JCO_PEAK_LIMIT='" + JCO_PEAK_LIMIT + '\'' +
- ", JCO_SAPROUTER='" + JCO_SAPROUTER + '\'' +
- '}';
- }
- }
然后编写用来建立sap连接的SapConn作为连接类
编写连接类SAPConnUtils 下面是源码
- /**
- * Created by gang.xu01@hand-china.com on 2018/12/4
- */
- public class SAPConnUtils {
- private static final String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL";
- /**
- * 创建SAP接口属性文件。
- * @param name ABAP管道名称
- * @param suffix 属性文件后缀
- * @param properties 属性文件内容
- */
- private static void createDataFile(String name, String suffix, Properties properties){
- File cfg = new File(name+"."+suffix);
- if(cfg.exists()){
- cfg.deleteOnExit();
- }
- try{
- FileOutputStream fos = new FileOutputStream(cfg, false);
- properties.store(fos, "for tests only !");
- fos.close();
- }catch (Exception e){
- System.out.println("Create Data file fault, error msg: " + e.toString());
- throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
- }
- }
- /**
- * 初始化SAP连接
- */
- private static void initProperties(SapConn sapConn) {
- Properties connectProperties = new Properties();
- // SAP服务器
- connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, sapConn.getJCO_ASHOST());
- // SAP系统编号
- connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, sapConn.getJCO_SYSNR());
- // SAP集团
- connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, sapConn.getJCO_CLIENT());
- // SAP用户名
- connectProperties.setProperty(DestinationDataProvider.JCO_USER, sapConn.getJCO_USER());
- // SAP密码
- connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, sapConn.getJCO_PASSWD());
- // SAP登录语言
- connectProperties.setProperty(DestinationDataProvider.JCO_LANG, sapConn.getJCO_LANG());
- // 最大连接数
- connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, sapConn.getJCO_POOL_CAPACITY());
- // 最大连接线程
- connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, sapConn.getJCO_PEAK_LIMIT());
- // SAP ROUTER
- connectProperties.setProperty(DestinationDataProvider.JCO_SAPROUTER, sapConn.getJCO_SAPROUTER());
- createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties);
- }
- /**
- * 获取SAP连接
- * @return SAP连接对象
- */
- public static JCoDestination connect(SapConn sapConn){
- System.out.println("正在连接至SAP...");
- JCoDestination destination = null;
- initProperties(sapConn);
- try {
- destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);
- destination.ping();
- System.out.println("已成功建立sap的连接");
- } catch (JCoException e) {
- System.out.println("Connect SAP fault, error msg: " + e.toString());
- }
- return destination;
- }
- }
接下来编写一个简单的测试类test
- /**
- * Created by gang.xu01@hand-china.com on 2018/12/9
- */
- public class testCon {
- public static void main(String[] args) {
- SapConn con = new SapConn(
- "127.0.0.1",
- "123",
- "456",
- "abc",
- "abc",
- "abc",
- "123",
- "321",
- "123456"
- );
- // 测试连接
- SAPConnUtils.connect(con);
- }
- }
如果出现如下结果表明连接失败,请检查连接类。
此时如果调用结果如下则表明建立连接成功。
四、常见报错
- 缺少build path
这个错误是因为缺少了上述提到的文件,请按照文中提到的顺序将其加入项目中即可。
(一)通过JAVA连接SAP (sapjco3.jar在Windows和MacOS上的配置)的更多相关文章
- JAVA连接SAP
1.首先需要在SAP事务码SE37中新建一个可以被远程调用的RFC 事务码:SE37 新建一个函数组:输入事务码SE37回车后,来到函数构建器屏幕,到上面一排菜单栏:转到 -> 函数组 -> ...
- Java连接Sap系统调并调用RFC函数
参考博客:https://blog.csdn.net/qq_36026747/article/details/81287462 https://www.cnblog ...
- 官网下载Java连接MySql驱动jar包
官网地址:http://dev.mysql.com/downloads/connector/ 1.选择下载驱动 2.选择下载 3.可以不登录直接下载 4.下载下来的是zip压缩包,解压之后,文件夹中有 ...
- java连接OPC之——Windows7 With SP1 网络OPC的DCOM配置
由于 OPC(OLE for Process Control)建立在 Microsoft 的 COM(COmponent Model)基础 上,并且 OPC 的远程通讯依赖 Microsoft 的 D ...
- (二)通过JAVA调用SAP接口 (增加一二级参数)
(二)通过JAVA调用SAP接口 (增加一二级参数) 一.建立sap连接 请参考我的上一篇博客 JAVA连接SAP 二.测试项目环境准备 在上一篇操作下已经建好的环境后,在上面的基础上新增类即可 三. ...
- centos7中配置java + mysql +jdk +使用jar部署项目
centos7中配置java + mysql +jdk +使用jar部署项目 思维导图 1. 配置JDK環境 1.1下载jdk安装包 Java Downloads | Oracle 1.2 将下载j ...
- java call sap
1.下载需要的jar,windows用dll,linux用so win下载地址 linux下载地址 win下载地址new 2.环境: windows -> sapjco3.dll放到wi ...
- 最新.net和Java调用SAP RFC中间件下载
还记得2012年初我发布的全网络第一个关于.net 连接SAP RFC的NCO3原创博文,用的就是SAP出的最新的.Net Connector 3.0的版本,在那个时候都是普遍用其他蹩脚的方式或Web ...
- 使用 SSL 加密的 JDBC 连接 SAP HANA 数据库
近期客户为满足安全要求,提了让业务应用使用 SSL 方式连接 SAP HANA 数据库的需求.本人查询 SAP官方文档 发现数据库支持 SSL 连接,有参数直接加到 JDBC 的 URL 后边就行了, ...
随机推荐
- jq-demo-购物车
首页 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title& ...
- python-面向对象-01课堂笔记
面向对象 ''''1.面向过程编程 核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么 基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式 ...
- Go const 关键字
Go const 关键字 package main import "fmt" func main() { const LENGTH int = 10 const WIDTH int ...
- AnalyticDB for PostgreSQL 6.0 新特性介绍
阿里云 AnalyticDB for PostgreSQL 为采用MPP架构的分布式集群数据库,完备支持SQL 2003,部分兼容Oracle语法,支持PL/SQL存储过程,触发器,支持标准数据库事务 ...
- 归并排序c语言
void mergeAdd(int arr[], int left, int mid, int right, int *temp){ int i = left; ; int k = left;//临时 ...
- Python 爬取赶集网租房信息
代码已久,有可能需要调整 #coding:utf-8 from bs4 import BeautifulSoup #有这个bs4不用正则也可以定位要爬取的内容了 from urlparse impor ...
- NOIp2018集训test-9-6(am)
Problem A. divisor 发现x为k可表达一定可以表示成这种形式,如k=3,x=(1/3+1/2+1/6)x. 于是可以搜索k(k<=7)个1/i加起来等于1的情况,如果一个数是这些 ...
- 暑假集训test-8-29
今天瓜成一坨了. 瓜的说不出话来. 直接退役算了我. T1 傻逼题,但是我傻逼地敲了一个线段树合并,然后把空间炸了,只剩20分, 直接dfs维护子树大小,子树中最大最小值即可统计答案. //Achen ...
- NX二次开发-UFUN获取球的参数UF_MODL_ask_sphere_parms
NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_ui.h> UF_initialize( ...
- iOS7 AVAudioRecorder不能录音
今天写录音代码的时候,在iOS7以下就可以录音,但是iOS7上不可以,后来才知道iOS7录音方式变了,加上下面的代码就可以了,bingo AVAudioSession *audioSession = ...