package org.jeecg.config.sap; import com.sap.conn.jco.*; import com.sap.conn.jco.ext.DestinationDataProvider; import com.sap.conn.jco.ext.Environment; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.Properties; @Component public class SapRfcConnectionManager { @Value("${sap.rfc.destination}") private String destinationName; @Value("${sap.rfc.ashost}") private String ashost; @Value("${sap.rfc.sysnr}") private String sysnr; @Value("${sap.rfc.client}") private String client; @Value("${sap.rfc.user}") private String user; @Value("${sap.rfc.passwd}") private String passwd; @Value("${sap.rfc.lang}") private String lang; private String poolSize = "5"; private String idleTimeout = "10000"; private String peekLimit = "10"; private JCoDestination destination; /** * * @throws JCoException */ @PostConstruct public void init() throws JCoException { Properties connectProperties = new Properties(); connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, ashost); connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, sysnr); connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, client); connectProperties.setProperty(DestinationDataProvider.JCO_USER, user); connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, passwd); 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); // 创建动态目的地(避免依赖 SM59 配置) CustomDestinationDataProvider provider = new CustomDestinationDataProvider(); provider.addDestination(destinationName, connectProperties); // 设置全局目的地提供者 Environment.registerDestinationDataProvider(provider); // 获取目的地 this.destination = JCoDestinationManager.getDestination(destinationName); } /** * * @return */ public JCoDestination getDestination() { return destination; } /** * */ public void destroy() { if (destination != null) { // destination; } } }