zhangherong
2025-06-17 0ecd8b8c158436b23298b66b64eaef0438b6425b
src/main/java/org/jeecg/config/sap/SapRfcConnectionManager.java
@@ -1,8 +1,12 @@
package org.jeecg.config.sap;
import com.sap.conn.jco.*;
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;
import com.sap.conn.jco.ext.Environment;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -10,6 +14,8 @@
import java.util.Properties;
@Component
@Slf4j
@Getter
public class SapRfcConnectionManager {
    @Value("${sap.rfc.destination}")
@@ -33,10 +39,13 @@
    @Value("${sap.rfc.lang}")
    private String lang;
    private String poolSize = "5";
    @Value("${sap.rfc.poolSize}")
    private String poolSize;
    private String idleTimeout = "10000";
    @Value("${sap.rfc.expirationTime}")
    private String expirationTime;
    @Value("${sap.rfc.peekLimit}")
    private String peekLimit = "10";
    private JCoDestination destination;
@@ -46,7 +55,7 @@
     * @throws JCoException
     */
    @PostConstruct
    public void init() throws JCoException {
    public void init() throws Exception {
        Properties connectProperties = new Properties();
        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, ashost);
        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, sysnr);
@@ -56,33 +65,15 @@
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG, lang);
        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, peekLimit);
        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, poolSize);
        connectProperties.setProperty(DestinationDataProvider.JCO_EXPIRATION_TIME, idleTimeout);
        connectProperties.setProperty(DestinationDataProvider.JCO_EXPIRATION_TIME, expirationTime);
        // 创建动态目的地(避免依赖 SM59 配置)
        CustomDestinationDataProvider provider = new CustomDestinationDataProvider();
        provider.addDestination(destinationName, connectProperties);
        CustomDestinationDataProvider provider = new CustomDestinationDataProvider(destinationName, connectProperties);
        // 设置全局目的地提供者
        Environment.registerDestinationDataProvider(provider);
        // 获取目的地
        this.destination = JCoDestinationManager.getDestination(destinationName);
    }
    /**
     *
     * @return
     */
    public JCoDestination getDestination() {
        return destination;
    }
    /**
     *
     */
    public void destroy() {
        if (destination != null) {
//            destination;
        }
    }
}