| | |
| | | import com.sap.conn.jco.*; |
| | | import com.sap.conn.jco.ext.DestinationDataProvider; |
| | | import com.sap.conn.jco.ext.Environment; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import java.io.File; |
| | | import java.io.FileOutputStream; |
| | | import java.util.Properties; |
| | | |
| | | @Component |
| | | @Slf4j |
| | | public class SapRfcConnectionManager { |
| | | |
| | | @Value("${sap.rfc.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); |
| | |
| | | provider.addDestination(destinationName, connectProperties); |
| | | |
| | | // 设置全局目的地提供者 |
| | | Environment.registerDestinationDataProvider(provider); |
| | | // Environment.registerDestinationDataProvider(provider); |
| | | |
| | | log.info("properties = " + connectProperties); |
| | | |
| | | //生成配置文件,JCoDestinationManager.getDestination()调用时会需要该连接配置文件,后缀名需要为jcoDestination |
| | | FileOutputStream fos = null; |
| | | String suffix = "jcoDestination"; |
| | | File cfg = new File(destinationName + "." + suffix); |
| | | if (!cfg.exists()) { |
| | | try { |
| | | fos = new FileOutputStream(cfg, false); |
| | | connectProperties.store(fos, "for tests only !"); |
| | | fos.close(); |
| | | } catch (Exception var9) { |
| | | throw new Exception("Unable to create the destination file " + cfg.getName(), var9); |
| | | } finally { |
| | | if (null != fos) { |
| | | fos.close(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 获取目的地 |
| | | this.destination = JCoDestinationManager.getDestination(destinationName); |