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

问题描述 投票:1回答:1

我正在尝试设置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:.'
java ibm-midrange
1个回答
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服务程序中找到START_JVM的程序(here)。请注意,Scotts服务程序中的过程不会导出,但您需要做的就是修改源以导出过程。

定制SETUPJVM供您个人使用:

  1. 您需要设置BNDDIR()以引用您自己的绑定目录。
  2. 您需要调整类路径以包含您正在使用的jar。这个假定POI和RPGMAIL。
  3. 您可能希望选择其他JVM。
© www.soinside.com 2019 - 2024. All rights reserved.