在IBM i(AS400)服务器上配置Classpath

时间:2018-03-01 09:40:04

标签: java ibm-midrange

我正在尝试设置IBM i服务器以连接到SQL服务器。必要的.JAR驱动程序文件已下载并上载到服务器。我们一直关注这些instructions

现在我们尝试设置classpath环境变量。目前看来如下:

'/QIBM/ProdData/OS400/jt400/lib/jt400Native.jar:/QIBM/ProdData/OS400/jt400/lib/jt400Native11x.jar:/QIBM/ProdData/OS400/jt400/MRI2924/jt400Mri.jar:.'

jar文件位于/java/jdbc/jtds-1.3.1.jar。似乎我需要做的就是将其附加到类路径字符串。但是,我很困惑,在'jar:'后面的字符串末尾有一段额外的句号('。')

是真的有必要还是错误插入?请告诉我如何将此jar文件添加到类路径中。

在服务器上运行其他java东西,我绝对不能搞砸任何东西。我知道即使是最轻微的改变也会让事情变得糟透了。

WRKENVVAR命令可以选择仅使用作业级变量。我可以在我的工作级别修改这个,而不会影响其他人做的事情吗?

编辑01:根据下面的第一条评论,我理解在这种情况下,'。'在大多数示例中我都可以看到最后一个而不是字符串的开头。

我可以修改类路径,如下所示吗?

'/QIBM/ProdData/OS400/jt400/lib/jt400Native.jar:/QIBM/ProdData/OS400/jt400/lib/jt400Native11x.jar:/QIBM/ProdData/OS400/jt400/MRI2924/jt400Mri.jar:/java/jdbc/jtds-1.3.1.jar:.'

1 个答案:

答案 0 :(得分:0)

正如鲍里斯在评论中所说:

  

.代表发出命令的当前目录,这意味着其中的每个* .jar文件都将被添加到类路径中。

但我不知道这有什么用,因为每个用户都有不同的当前目录,而在IBM i上,当前目录可能是IFS中用户的主目录。由于RPG程序不是从IFS运行,因此根本不可能改变。因此,您可以安全地从类路径中删除.

要记住的另一件事是,一旦启动JVM,就无法更改类路径。由于每个作业最多只能有一个JVM,我的做法是设置类路径并在每个需要它的作业开始时启动JVM。我使用我专门为此目的创建的CL程序来做到这一点。

以下是一个示例SETUPJVM程序,可用于设置和启动JVM:

         PGM
         DCLPRCOPT  DFTACTGRP(*NO) ACTGRP(*NEW) BNDDIR(MYBNDDIR) +
                    USRPRF(*OWNER)
         DCL        VAR(&POINTER) TYPE(*PTR)

         ADDENVVAR  ENVVAR(CLASSPATH) +
                      VALUE('+
                        /java/poi-3.14/poi-3.14-mx.jar:+
                        /java/poi-3.14/poi-ooxml-3.14-mx.jar:+
                        /java/poi-3.14/ooxml-schemas-1.3.jar:+
                        /java/poi-3.14/lib/commons-codec-1.10.jar:+
                        /java/poi-3.14/lib/commons-logging-1.2.jar:+
                        /java/poi-3.14/lib/log4j-1.2.17.jar:+
                        /java/poi-3.14/ooxml-lib/xmlbeans-2.6.0.jar:+
                        /java/poix/poi-extend.jar:+
                        /java/javamail/javax.mail.jar:+
                        /java/rpgmail/rpgmail.jar:+
                        /java/prod/lib/mxSqlSvrJdbc.jar:+
                        /java/prod/lib/sqljdbc.jar:+
                        /java/prod/classes/cribMaster+
                      ') REPLACE(*YES)
         ADDENVVAR  ENVVAR(QIBM_RPG_JAVA_PROPERTIES) +
                      VALUE('+
                        -Djava.awt.headless=true;+
                        -Djava.net.preferIPv4Stack=true;+
                      ') REPLACE(*YES)

         ADDENVVAR  ENVVAR(QIBM_USE_DESCRIPTOR_STDIO) VALUE('Y') REPLACE(*YES)
         ADDENVVAR  ENVVAR(JAVA_HOME) +
                      VALUE('/QOpenSys/QIBM/ProdData/JavaVM/jdk80/32bit'+
                      ) REPLACE(*YES)
         ADDENVVAR  ENVVAR(QIBM_RPG_JAVA_EXCP_TRACE) VALUE('Y') REPLACE(*YES)

         CALLPRC    PRC(START_JVM) RTNVAL(&POINTER)
OUT:     ENDPGM

这是一个CLLE,并调用来自Scott Kelment的HSSFR4服务程序here的程序(START_JVM)。请注意,Scotts服务程序中的过程不会导出,但您需要做的就是修改源以导出过程。

自定义SETUPJVM供您个人使用:

  1. 您需要设置BNDDIR()以引用您自己的绑定目录。
  2. 您需要调整类路径以包含您正在使用的jar。这个假定POI和RPGMAIL。
  3. 您可能想要选择其他JVM。