IBM Toolbox for Java 是一个类的集合,用于开发与 IBM i 相关的 Java 应用程序。它包含的各类工具,提供了对于 IFS、IBM i 系统信息、客户端 / 服务器等各类应用场景的的支持,用户可以在其他平台诸如 Windows,Linux 上面方便的使用 IBM Toolbox for Java 开发运行在 IBM i 上的应用程序,为用户的编程和调试带来了极大的方便。我们在这些操作系统平台上,通过几行简单的代码就可以访问一台 IBM i 系统,对系统进行相应的控制和更改。
IBM Toolbox for Java 不仅可以供 IBM 的">开发人员使用,它还拥有一个开源版本 JTOpen,供所有人员下载和使用。JTOpen 可以从 SourceForge 网站上下载。JTOpen 的下载和使用遵循 IBM 公共许可证协议(IBM Public License),这个协议鼓励使用者对软件进行开发和改进,同时鼓励软件的商业化应用。
本文将通过一些例子,来介绍如何使用 IBM Toolbox for Java 提供的各种工具来访问 IBM i 系统并且开发 IBM i 相关的 Java 程序。
初始化并建立连接 :
IBM Toolbox for Java 中的 AS400 类用于建立访问 IBM i 系统的连接,这个类的使用很简单,只需使用如下参数初始化 AS400 类,Toolbox 就会自动建立连接并用相应的用户名登录制定的系统:
清单 1. 使用 Toolbox 建立连接
AS400 as400 = new AS400(SystemName, Username, Password);
如果不在初始化 AS400 对象的时候指定用户,Toolbox 在连接的时候就会弹出一个窗口,提示输入登录 IBM i 的用户名和密码。
我们也可以指定默认的登录用户,在登录框中选择"Default User"和"Save Password",这样在下次再次登录的时候,可以免输用户名或密码,代码如下:
清单 2. 指定默认的登录用户
AS400 sys1 = new AS400(SystemName); AS400 sys2 = new AS400(SystemName); try{ sys1.connectService(AS400.COMMAND); sys2.connectService(AS400.COMMAND); }catch(Exception e) { e.printStackTrace(); }
如果我们需要访问一台 IBM i 系统上的敏感数据,或者访问或存储的数据内容需要加密,我们可以使用 Toolbox for Java 中的 SecureAS400 类。这个类继承了 AS400 类,使用方法与 AS400 类似,连接时只需输入系统名、用户名和密码即可。但是 SecureAS400 中使用了 Secure Sockets Layer(SSL),因此在数据交换时更加安全可靠。
除了直接新建一个连接之外,我们还可以使用连接池来获得一个对 AS400 的连接。参见下面的代码:
清单 3. 使用连接池来获得连接
AS400ConnectionPool as400Pool = new AS400ConnectionPool(); as400Pool.setMax
Connections(128); as400Pool.fill(SystemName, Username, Password, AS400.DATABASE, 50); as400Pool.getConnection(SystemName, Username, Password, AS400.COMMAND);
上面的代码新建了一个 as400Pool 作为一个连接 IBM i 系统的连接池,设置最大连接数为 128,同时为服务器建立 50 个连接。在建立完连接之后,从连接池中获得一个连接,使用用户名和密码。 使用连接池的优点在于,当所需要建立的连接数很多的时候,使用连接池可以大大提高效率,减少建立连接所需要的时间。当连接数少的时候,这种效果不明显,但当连接数多的时候,使用连接池对系统效率的提升效果会很明显。
除了 AS400 之外,另外一个有用的类是 AS400JPing。这个类可以可以用来 Ping 一个 IBM i 系统,从而查询这个系统当前是否在活动状态,或者查询系统的某个端口是否可用。下面的代码演示了这个类的使用方法:
清单 4.AS400JPing 的使用
AS400JPing pingObj = new AS400JPing(SystemName, AS400.COMMAND, false); if(pingObj.ping()) System.out.println("SUCCESS"); else System.out.println("FAILED");
使用 IBM Toolbox for Java 获取 IBM i 系统信息:
IBM Toolbox for Java 提供了很多工具和类库,用于访问和控制系统资源,最常用的工具之一就是"com.ibm.as400.access"包中的 AS400 类。AS400 通过 socket 连接来登录和访问一个 IBM i 系统,一旦登录成功,它会以方法的形式提供各种各样的接口供用户访问 IBM i 系统的各种信息。例如,如果想获得一个 IBM i 系统的系统名、操作系统版本、当前登录用户和使用的 CCSID,我们可以使用以下代码实现:
清单 5. 获取 IBM i 系统信息
AS400 as400 = new AS400(SystemName, Username, Password); System.out.println(as400.getSystemName()); System.out.println(as400.getVRM()); System.out.println(as400.getUserId()); System.out.println(as400.getCcsid());
使用 IBM Toolbox for Java 获取系统运行信息:
IBM Toolbox for Java 也提供了很多接口,用于获得系统运行的信息。一个常用的类是 SystemStatus。这个类允许我们访问一台 IBM i 系统,并且获得当前作业的运行状况和各种信息。
举例来说,如果我们想知道当前系统中有多少批处理作业正在运行,可以使用以下方法:
清单 6. 获取系统运行信息
AS400 as400 = new AS400(SystemName, Username, Password); SystemStatus systemStatus = newSystemStatus(as400); try{ System.out.println("getBatchJobsRunning: " + systemStatus.getBatchJobsRunning()); } catch(Exception e) { e.printStackTrace(); }
方法 getBatchJobsRunning() 用于返回当前正在运行的批处理作业数量。与此相关的方法还有很多,下表列出了 SystemStatus 类中常用的用于显示系统运行状况的方法及它们的作用:
方法 用途 ASPUsed 显示当前系统 ASP 的使用状况 getJobsInSystem 获得系统中的作业总数 getBatchJobsEnding 获得正在结束的作业数量 getBatchJobsWaitingToRunOrAlreadyScheduled 获得等待运行的作业数量 getPoolsNumber 获得系统中 Pool 的数量 getSystemPools 返回 Enumeration 类型,枚举系统中的 Pool,枚举类型为 SystemPool getPercentProcessingUnitUsed 返回处理器使用的百分比 getUsersCurrentSignedOn 获得当前已经登录的用户数 getTotalAuxiliaryStorage 获得存储的总容量 getDateAndTimeStatusGathered 获得系统当前的日期时间,储存在一个 Date 对象中
除了 SystemStatus 之外,Toolbox for Java 还提供了很多与作业相关的类用来管理和获得系统中作业的信息,这些类包括 Job 类、JobList 类、JobLog 类、JobCCSID 类等等。下面我们会对其中常用的几个作业相关类进行一下介绍。