为不同的 sso 票重用 jco 3 连接池

reuse jco 3 connection pool for different sso tickets

我们创建了一个 java 应用程序,它使用 JCo3 访问远程 SAP 系统数据。

我们正在使用 SSO 票证连接到该系统。

问题是是否有某种方法可以为所有用户 SSO 票证重用相同的连接池,而不是为每个令牌创建一个专用池。

目前我们有一个 DestinationDataProvider.getDestinationProperties 实现,它将 SSO Ticket 作为参数和 returns 相应的 Properties 实例,我相信最终每个用户都有一个连接池。

我不确定此配置的效率如何,可能想知道是否可以以某种方式重用这些连接。

技术 RFC 连接设计不允许与不同的用户重复使用 RFC 连接。 RFC 连接绑定到无法切换的用户身份。因此无法实现具有多个按需使用不同用户标识的物理连接的连接池。 这不是 JCo 的限制,而是 RFC 的一般限制。

然而,这并没有那么悲惨,因为 RFC 连接建立中最昂贵的部分不是通过 TCP/IP 打开新的物理连接,而是 RFC 用户授权过程及其 RFC 上下文对象创建和内部初始化.因此,为每个目的地和用户设置连接池真正有助于实现更好的性能。您无需担心和注意优化内部 JCo 连接池。即使每个用户 ID 都有自己的池,这已经相当好用了。