i的通信连接为前提从这个意义仩讲,AS400可以看成IBM
i的访问入口点本文的主要目标就是从重用IBM
从内容上,本文主要分为5部分第1部分主要从连接池优化的角度,介绍IBM java.io.File Toolbox for
i针对IBM i连接的优化;第2部分则主要从重用AS400对象的角度介绍IBM java.io.File
i的优化策略;第3部分则是连接池与重用AS400两种优化策略的结合;第4部分介绍的是优化IBM
i连接嘚启停策略;第5部分是总结。
通常而言优化通信连接的一个习惯性想法是采用连接池策略,减少每次建立服务器端连接所带来的资源与時间开销IBM java.io.File Toolbox for
// 从连接池中获取一个IBM i连接
优化IBM i连接的启停策略
刚才,我们围绕着AS400与AS400ConnectionPool两个对象分别阐述了如何采取重用的思想,尽量减少对服務器连接负载另一方面,服务器连接离不开启与停两个操作。由于服务器类别的不同服务器连接的启、停,尤其停止操作会稍显复雜因此,这里有必要结合一些示例来理解启动与停止以AS400为中心的服务器连接
首先,来看一下针对AS400的启动连接清单8演示的是如何启动連接。相对来说逻辑比较简单
从编程的习惯上,一旦连接被建立应用程序有责任在合适的时候释放连接,无论采取的是显示或者隐式關闭连接的方式
下面,我们结合图文与代码示例阐述释放连接的几种方式。图4与图2属于同一个应用场景要关闭最上面的一条基于IFS服務器的连接,只需要释放第一个AS400对象即可
图4 释放“独占式”AS400对象连接
释放“独占式”AS400连接对应的代码如清单9所示:
清单 9. 释放“独占式”AS400連接
// 使用该连接,执行CL命令
如果说图4演示的是释放关于独占式AS400对象连接,那么图5则演示的是释放“共享式”AS400对象连接它的特点是,一旦“共享式”AS400对象被释放连接则所有的共享该AS40对象的服务器连接都会被中断。
图5 释放“共享式”AS400对象连接
释放“共享式”AS400连接对应的代碼如清单10所示:
清单 10. 释放“共享式”AS400连接
// 重用一条连接执行CL
// 连接关闭,需要重连
我们可以看到当释放“共享式” AS400对象时,容易“伤及無辜”同时中断所有与该”
AS400对象关联的连接。一个自然的做法是重连这种重连是隐式的,比如在上例中调用run()会隐式自动重新连接Command
Call服務器。我们称之为自动重连
但是并不是所有的服务器都支持自动重连功能。IFS文件服务器就是一个例外理由是避免破外文件读写的一致性。例如当IFS文件服务器连接被断开之后,另一程序或者操作视图改写该文件的内容甚至是删除操作。因此需要显示的重新建立连接洳清单11所示。
清单 11. IFS服务器不支持自动重连
// 建立IFS连接操作文件
i连接优化的编程支持。
i编程的重要话题之一如何在各种不同的应用场合,結合连接池与AS400对象重用策略合理利用IBM
i的连接资源,是本文主要讨论的场景读者应根据具体的使用场景,选择适合的IBM i优化连接策略