package org.jeecg.config.sap;
|
|
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;
|
|
import javax.annotation.PostConstruct;
|
import java.util.Properties;
|
|
@Component
|
@Slf4j
|
@Getter
|
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;
|
|
@Value("${sap.rfc.poolSize}")
|
private String poolSize;
|
|
@Value("${sap.rfc.expirationTime}")
|
private String expirationTime;
|
|
@Value("${sap.rfc.peekLimit}")
|
private String peekLimit = "10";
|
|
private JCoDestination destination;
|
|
/**
|
*
|
* @throws JCoException
|
*/
|
@PostConstruct
|
public void init() throws Exception {
|
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, expirationTime);
|
|
// 创建动态目的地(避免依赖 SM59 配置)
|
CustomDestinationDataProvider provider = new CustomDestinationDataProvider(destinationName, connectProperties);
|
|
// 设置全局目的地提供者
|
Environment.registerDestinationDataProvider(provider);
|
|
// 获取目的地
|
this.destination = JCoDestinationManager.getDestination(destinationName);
|
}
|
}
|