JAVA通过JCo连接SAP

关于JCo

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

JCo支持Connection Pools和Direct两种方式的连接。直接连接需要开发者来控制连接的创建和释放,使用连接池方式可以让池来管理连接的分配、管理和释放,可以最大限度的节省系统开销,网站空间,相比直接方式优势也是明显的。本文的示例也是使用池方式连接。

安装JCo

到https://service.sap.com/connectors 下载3.0 或 2.1版本的JCo(需要 SAP Service MarketPlace账号),至于用32bit的还是64bit的要根据你的JVM来选择。

怎么查看自己的JVM版本?

-cmd 用 java -version32位:Java HotSpot(TM) Client VM ….64位:Java HotSpot(TM) 64-Bit Server VM ….-或System.out.println(“JVM Bit size: ” + System.getProperty(“sun.arch.data.model”));-或System.out.println(“JVM Bit size: ” + System.getProperty(“os.arch”));

1。 ZIP包解压到一个目录(像我,香港服务器租用,如果只是开发Web App,可以选择不安装的。。直接把sapjco3.dll和sapjco3.jar丢到lib目录中就可以了)

2。在PATH环境变量中指定JCo的安装目录

3。CLASSPASS指定 安装目录\sapjco3.jar

打开 cmd到安装目录执行java -jar sapjco3.jar,安装成功你可以看到如下的信息。。

注: 你也可以把sapjco3.dll丢进system32或SysWOW64目录,这样做就不用设置环境变量了,不过SAP官方不建议你这么做。。

解压目录中的javadoc,香港服务器,examples文件夹里面有一些简单示例和文档供参考。

JCo的使用

用JCo3做开发的时候都会涉及到Destination。在运行时,这个Destination会从 DestinationDataProvider 或 ServerDataProvider的实现类中获取server addr. 和 logon info等相关信息。之后我们通过它来找到相应的RFC。下面是用来注册 DestinationDataProvider的工具类。

import java.util.HashMap;import java.util.Properties;import com.sap.conn.jco.ext.DataProviderException;import com.sap.conn.jco.ext.DestinationDataEventListener;import com.sap.conn.jco.ext.DestinationDataProvider;public class JCOProvider implements DestinationDataProvider {private HashMap<String, Properties> secureDBStorage = new HashMap<String, Properties>();private DestinationDataEventListener eL;@Overridepublic Properties getDestinationProperties(String destinationName) {try{//read the destination from DBProperties p = secureDBStorage.get(destinationName);if(p!=null){(p.isEmpty())throw new DataProviderException(DataProviderException.Reason.INVALID_CONFIGURATION, “destination configuration is incorrect”, null);return p;}return null;}catch(RuntimeException re){throw new DataProviderException(DataProviderException.Reason.INTERNAL_ERROR, re);}}@Overridepublic void setDestinationDataEventListener(DestinationDataEventListener eventListener) {this.eL = eventListener;}@Overridepublic boolean supportsEvents() {return true;} changePropertiesForABAP_AS(String destName, Properties properties) {synchronized(secureDBStorage){if(properties==null){if(secureDBStorage.remove(destName)!=null)eL.deleted(destName);}else{secureDBStorage.put(destName, properties);eL.updated(destName); // create or updated}}}}那段雨骤风狂。人生之旅本就是风雨兼程,是要说曾经拥有,

JAVA通过JCo连接SAP

相关文章:

你感兴趣的文章:

标签云: