在使用 WLST 时,我遇到了几个问题。我们的服务器仅使用 Solaris 或 Linux,因此请在回答时记住这一点。
1:我应该在哪里放置与内部 WLST 功能无关的 WLST 通用模块(选项解析、日志记录、输出......) 1.1:我自己写了一些,以说明Oracle 提供的 Jython 2.1 中缺乏现有的。
2:如何包含使用 WLST 内部函数的模块,以便它们工作,并且不会丢失它们的信息(模块中的连接在返回主程序时不会保持连接)。
问候
在使用 WLST 时,我遇到了几个问题。我们的服务器仅使用 Solaris 或 Linux,因此请在回答时记住这一点。
1:我应该在哪里放置与内部 WLST 功能无关的 WLST 通用模块(选项解析、日志记录、输出......) 1.1:我自己写了一些,以说明Oracle 提供的 Jython 2.1 中缺乏现有的。
2:如何包含使用 WLST 内部函数的模块,以便它们工作,并且不会丢失它们的信息(模块中的连接在返回主程序时不会保持连接)。
问候
对于#1,我可以通过将当前路径添加到 sys.path 来将库 .py 文件包含在与目标脚本相同的目录中。例如,如果我有一个文件 functions.py,我会使用以下代码:
import os, sys
sys.path.append(os.path.dirname(os.path.abspath(inspect.getsourcefile(lambda:(True)))))
import functions
我不确定添加到 sys.path 是否是 Pythonic 的做事方式,但它可以完成工作,而且 WLST 也非常“狂野西部”。
如果您无法使用嵌入 Python 2.1 的旧版 Weblogic,例如 10.x(可能还有 11g?),您会发现它没有很多现在标准的库,包括检查库。您必须使用sys.argv[0]
而不是os.path.abspath(inspect.getsourcefile(lambda:(True)))
.
对于#1,我按照 Ed Griebel 的方法附加到 sys.path。为了支持旧版本,我利用了 sys.argv[0] 变量。
对于#2,如果您在模块中执行“导入 wlstModule”,那么在主脚本中我发现您需要绕过提供的内部 WLST 函数,而是使用 wlstModule 中的函数。只需在主脚本中添加相同的“import wlstModule”,然后更改所有调用以使用导入的 wlstModule。例如,在您的主脚本中使用“wlstModule.cd()”、“wlstModule.cmo()”和“wlstModule.set()”等调用,而不是“cd()”、“cmo()”和“放()”。