| | |
| | | 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; |
| | | |
| | |
| | | import java.util.Properties; |
| | | |
| | | @Component |
| | | @Slf4j |
| | | @Getter |
| | | public class SapRfcConnectionManager { |
| | | |
| | | @Value("${sap.rfc.destination}") |
| | |
| | | @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; |
| | |
| | | * @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); |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |