java jco sap 重连_JCO重连SAP

本文详细记录了如何使用Java JCO库进行SAP连接,包括组登录和IP登录的方式,并展示了如何在连接失败时进行重连操作,确保获取到可用的SAP连接。
摘要由CSDN通过智能技术生成

记录一下

...

import com.sap.mw.jco.JCO;

// true:组登录,false:ip登录

private static boolean groupFlag = false;

private final static String prefsfile = "config-saphttp.properties";

@SuppressWarnings("deprecation")

public static JCO.Client getConnectionInPool(String poolName) {

JCO.Client connection = null;

if (groupFlag) { // 组登录

connection = JCO.createClient(SAP_client, SAP_user, SAP_passwd,

"zh", SAP_mshost, SAP_r3name, SAP_group);

} else { // ip登录

JCO.Pool pool = JCO.getClientPoolManager().getPool(poolName);

if (pool != null) {

connection = JCO.getClient(poolName);

// pool.setAbapDebug(true);

}

}

return connection;

}

/**

* 递归获取可用的SAP连接,如没有就是null

* /

private static JCO.Client getAvailableConnection(boolean groupFlag, String interfaceId, String nextId) {

JCO.Client connection = null;

if (interfaceId.equals(nextId)) {

POOL_NAME = "";

System.out.println("======error:没有可用连接池");

return connection;

}

String id = StringUtils.isBlank(nextId) ? interfaceId : nextId;

// 组登录

if (groupFlag) {

try {

init(id);

connection = getConnectionInPool("");

} catch (JCO.Exception ex) {

System.out.println("SAP连接池[" + id + "]组登录异常:(" + ex.getKey() + ")" + ex.getMessage());

connection = null;

}

} else {// ip登录

POOL_NAME = "SAP_POOL" + id;

try {

connection = getConnectionInPool(POOL_NAME);

if (connection == null) {

init(id);

connection = getConnectionInPool(POOL_NAME);

}

} catch (JCO.Exception ex) {

System.out.println("SAP连接池[" + id + "]IP登录异常:(" + ex.getKey() + ")" + ex.getMessage());

connection = null;

}

}

if (connection == null) {

return getAvailableConnection(groupFlag, interfaceId, getNextId(id));

} else {

connection.connect();

if (!connection.isAlive()) {

System.out.println("SAP连接池[" + id + "]没有可用连接,切换下一个");

return getAvailableConnection(groupFlag, interfaceId, getNextId(id));

}

}

return connection;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值