MULE 连接sap rfc接口开发一:jco连接

本篇文章主要介绍JCO连接sap rfc接口的连接类。

参考地址:http://www.cnblogs.com/jiangzhengjun/p/4291479.html

项目lib添加:windows运行环境需添加:sapjco3.dll

linux运行环境需添加:libsapjco3.so

buildpath: sapjco3.jar


import java.io.File;  
import java.io.FileOutputStream;  
import java.util.Properties;  
  
//import org.apache.log4j.Logger;  
import com.sap.conn.jco.JCoDestination;  
import com.sap.conn.jco.JCoDestinationManager;  
import com.sap.conn.jco.JCoException;  
import com.sap.conn.jco.ext.DestinationDataProvider;  
  

public class SAPConn {  
    private static final String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL";  
    static{  
        Properties connectProperties = new Properties();  
        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "172.xx.xx.xx");//服务器  
        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "00");        //系统编号  
        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "800");       //SAP集团  
        connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "xxx");  //SAP用户名  
        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "xxx");     //密码  
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "ZH");        //登录语言  
       
        //JCo连接到SAP服务器有两种方法,分别是直连和通过连接池进行连接。其差别在于,打开直连连接后可以一直保持连接;连接池则是在需要时才建立连接,连接暂不需要时,将被释放回连接池,再分配给其他用户使用。在网络服务器应用程序里,一般采用连接池进行连接SAP服务器。
        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");  //最大连接数    
        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");     //最大连接线程  
//          
        createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties);  
    }  
      
    /** 
     * 创建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){  
         //   log.error("Create Data file fault, error msg: " + e.toString());  
            throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);  
        }  
    }  
      
    /** 
     * 获取SAP连接 
     * @return  SAP连接对象 
     */  
    public static JCoDestination connect(){  
        JCoDestination destination =null;  
        try {  
            destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);  
        } catch (JCoException e) {  
           // log.error("Connect SAP fault, error msg: " + e.toString());
        	 throw new RuntimeException("Unable to create the destination file ", e); 
        }  
        return destination;  
    }  
   // private static Logger log = Logger.getLogger(SAPConn.class); // 初始化日志对象  
}  
下一篇日志我们将介绍如何用jco来连接sap rfc接口,

并提供一种统一的模板来对不同的sap接口进行调用。

你可能感兴趣的:(MULE,ESB)