`
resunly
  • 浏览: 42041 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java jco 連接池的實現

    博客分类:
  • java
 
阅读更多

SAPService.java

package com.resunly.sap;

/**
 * Created by IntelliJ IDEA.
 * User: resunly
 * Date: 11-12-22
 * Time: 下午4:24
 * To change this template use File | Settings | File Templates.
 */
import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.JCO;

import java.util.List;
import java.util.Properties;

abstract public class SAPService {

    //連接创建對象
    abstract protected JCO.Client getConnection();

    //释放连接对象
    abstract protected void releaseConnection(JCO.Client myConnection);

    //连接参数
    protected Properties getSAPProperties() {
        Properties logonProperties = new Properties();
        logonProperties.put("jco.client.ashost", "10.134.99.100");    //SAP系統的IP位址
        logonProperties.put("jco.client.client", "810");    //要登錄的用戶端
        logonProperties.put("jco.client.sysnr", "02");      //系統編號  00
        logonProperties.put("jco.client.user", "userName");        //登錄用戶名
        logonProperties.put("jco.client.passwd","password");    //用戶登錄口令
        return logonProperties;
    }

    public String sendDataToSAP(String mesCode,String holdFlag,List<String []> list){
    	String result = "";
        JCO.Client myConnection = getConnection();
        myConnection.connect();       //進行實際連接
        try {
            //如果連接不為null並且處於活動狀態
            if (myConnection != null && myConnection.isAlive()) {
                //從連接獲得一個邏輯意義上的“倉庫”物件(Repository)
                JCO.Repository myRepository =
                        new JCO.Repository("Repository",  //只是一個名字
                                myConnection); //活動的連接
                //要調用的SAP函數名稱
                String strFunc = "ZRFC_SD_PCE_0109";
                //從“倉庫”中獲得一個指定函數名的函數範本
                IFunctionTemplate ft = myRepository.getFunctionTemplate(strFunc.toUpperCase());
                
                //從這個函數範本獲得該SAP函數的物件
                JCO.Function function = ft.getFunction();
                //獲得函數的import參數列表
                JCO.ParameterList input = function.getImportParameterList();
                //JCO.Structure sFrom = input.getStructure("DESTINATION_FROM");
                input.setValue("PNK1","PLANT");
                input.setValue("O","SEND_FLAG"); 
                input.setValue(mesCode,"MSG_CODE");         
                input.setValue(holdFlag,"HOLD_FLAG");
                
                //设置table参数
                JCO.Table tDateRange = function.getTableParameterList().getTable("CMSHOLD");
                for(int i = 0; i<list.size(); i++){
                	String [] tempStr = list.get(i);
                	tDateRange.appendRow();                        //添加行
                	tDateRange.setRow(i);                          //定位行位
                	tDateRange.setValue(tempStr[0], "PO_NUM");
                	tDateRange.setValue(tempStr[1], "PO_TIE");
                	tDateRange.setValue(tempStr[2], "MSG_TEXT");
                }
                
                //執行函數
                myConnection.execute(function);

                //在執行函數後可用相同方式獲得輸出結果
                JCO.ParameterList output = function.getExportParameterList();
                
                result = (String)output.getValue("ZRETURN");

                releaseConnection(myConnection);
            } else {
                throw new Exception("No connection!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //斷開連接
            try {
                releaseConnection(myConnection);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return result;
    }


}
 


SAPServiceImpl.java

package com.resunly.sap;

/**
 * Created by IntelliJ IDEA.
 * User: resunly
 * Date: 11-12-22
 * Time: 下午4:24
 * To change this template use File | Settings | File Templates.
 */

import com.sap.mw.jco.JCO;

import java.util.List;


public class SAPServiceImpl extends SAPService {

    protected JCO.Client getConnection() {
        System.out.println("=====SAPServiceImpl.getconnect=====");

        //用上述條件創建一個連接物件
        JCO.Client myConnection = JCO.createClient(this.getSAPProperties());
        /*獲得一個到SAP系統的連接  END    */

        return myConnection;  
    }

    protected void releaseConnection(JCO.Client myConnection) {

        System.out.println("=====SAPServiceImpl.releaseConnection=====");
        //斷開連接
        myConnection.disconnect();
    }
    public String callSAPMeth(String mesCode,String holdFlag,List<String []> list) {
        SAPService service = new SAPServiceImpl();
        String result = "";
        try {
        	result = service.sendDataToSAP(mesCode, holdFlag,list);
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace(); 
        }
        return result;
    }
}

  test.java

 

package com.resunly.sap;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 11-12-22
 * Time: 下午4:24
 * To change this template use File | Settings | File Templates.
 */
public class test {
    public static void main(String args[]) {
        SAPServiceImpl sapser = new SAPServiceImpl();
        //SAPServicePoolImpl sp = new SAPServicePoolImpl();
        List<String[]> list = new ArrayList<String[]>();
        String[] array = new String[3];
        array[0] = "20101215001";
        array[1] = "1";
        array[2] = "666666";

        list.add(array);
        System.out.println(sapser.callSAPMeth("D05", "N", list));
    }
}
 

 

 

  • sap.zip (3.6 KB)
  • 下载次数: 14
分享到:
评论

相关推荐

    Java连接SAP系统所用的JCo连接池的配置和使用

    JCo连接池可以在Java应用程序中实现连接池的功能,用于连接SAP R3系统。 在Java应用程序中使用JCo连接池需要首先创建JCo连接池对象,然后使用该对象来连接SAP R3系统。在连接SAP R3系统时,需要提供SAP系统的连接...

    java jco连接sap相关插件及jar包

    在这个主题中,我们将深入探讨Java JCO连接SAP的相关插件和jar包,以及如何使用它们来实现数据交换。 首先,我们需要了解JCO的核心组件——`jco.jar`。这是一个包含SAP JCO接口和实现的Java库,它是所有Java JCO...

    SAP Java Jco3.0(win32)

    同时,对于大型项目,还需要考虑性能优化,如连接池的使用,以减少创建和销毁连接的开销。 总之,SAP Java Jco3.0为Java开发者提供了一个强大且灵活的工具,使他们能够在Java环境中无缝地集成和操作SAP系统,从而...

    java通过sapjco3连接sap

    SAP Java Connector (SAP JCo) 是JAVA与SAP相互通信的...直接连接需要开发者来控制连接的创建和释放,使用连接池方式可以让池来管理连接的分配、管理和释放,可以最大限度的节省系统开销,相比直接方式优势也是明显的。

    sap java connector jco 3.1.1.7z

    同时,还需要理解如何处理异常和错误,以及如何优化性能,比如通过连接池管理多个连接。 总之,SAP Java Connector 3.1.1是Java开发者连接SAP系统的重要工具,通过它的使用,开发者能够构建各种集成解决方案,实现...

    SAP Java Jco3.0(win32,win64,mac64,linux64)

    SAP Java Connector (JCo) 3.0 是一个关键组件,它允许Java应用程序与SAP系统进行通信,实现数据交换和业务流程集成。JCo3.0支持多种操作系统平台,包括Windows(32位和64位)、Mac OS(64位)以及Linux(64位),...

    Java用JCo连接SAP.zip

    总的来说,Java通过JCo连接SAP是一个涉及网络通信、数据交换和业务逻辑调用的复杂过程。理解JCo的工作原理和使用方法,对于开发与SAP系统集成的应用程序至关重要。在实际项目中,还需要结合具体的业务需求和SAP系统...

    jco 连接sap图文

    标题中的“jco连接sap图文”指的是使用Java Connector (JCO) 这一技术来实现Java应用程序与SAP系统的交互。JCO是SAP提供的一个API库,它允许非SAP系统(例如Java应用程序)与SAP R/3系统进行通信,主要通过Remote ...

    SAP Java Jco3.0.20 Windows 全平台 32bit 64bit

    此外,JCo还支持连接池,这对于提高系统性能和减少资源消耗非常有帮助。开发者可以通过配置文件设置连接池的大小,从而在多线程环境下更好地管理与SAP的连接。 在使用JCo时,开发人员需要遵循一些最佳实践。例如,...

    JAVA连接SAP的官方接口文档

    7. **性能优化**:在大量调用SAP系统时,考虑使用连接池来复用连接,减少每次连接建立的时间开销。此外,合理安排并发调用,避免对SAP系统造成过大的压力。 8. **IDoc交互**:除了直接调用函数模块,JCo3还支持处理...

    SAP Java Jco3 0 13 Windows 全平台 32bit 64bit

    10. **最佳实践**: 使用 JCo 进行开发时,遵循最佳实践,比如使用连接池来管理 SAP 连接,确保及时关闭资源,以及在设计时充分考虑可扩展性和维护性。 综上所述,SAP Java Connector 3.0.13 是一个强大的工具,它使...

    java连接池是这样配置的

    1. **选择连接池实现**:根据项目需求和性能考虑,选择合适的连接池库。例如,HikariCP以其高性能和低资源占用而广受欢迎,而C3P0则提供更多的配置选项。 2. **下载JDBC驱动**:连接数据库需要相应的JDBC驱动,例如...

    jco3Demo以及插件jar包

    在实际开发中,还可能涉及到错误处理、连接池管理、多线程处理等高级主题。"插件jar包"可能包含了对这些复杂情况的支持,或者提供了额外的工具和实用程序,以简化开发过程。 总之,JCo3是Java开发者与SAP系统集成的...

    java与sap交互 jco包

    确保遵循最佳实践,例如在高并发场景下,使用连接池来复用JCoDestination对象,以减少创建和销毁连接的开销。 总的来说,Java与SAP的交互涉及JCO包的使用,包括jar包的导入和dll文件的正确配置。通过这个接口,Java...

    SAP Java Connector(JCo).doc

    JCo提供了两种连接方式:直接连接(Direct Connections)和连接池(Connection Pools)。 - **直接连接**:这种方式适用于简单且短时间的连接需求。示例代码如下: ```java import com.sap.mw.jco.*; public ...

    JAVA连接SAP说明.pdf

    TutorialConnect2方法展示了如何使用JCo连接池。首先通过JCO.ClientPoolManager获取指定名称的连接池,如果池不存在,则需要加载配置文件(如logon.properties)并创建连接池。配置文件中可以定义连接池的名称、最大...

Global site tag (gtag.js) - Google Analytics