我正在尝试组合一个小实用程序,它可以让我们将托管服务器侦听地址和端口从域中的托管服务器中提取出来。
WLST 似乎是正确的工具。
我有一个像这样工作的脚本
admin_url = sys.argv[1]
cluster = sys.argv[2]
connect(url=admin_url)
servers = get_servers(cluster)
for server in servers.values():
address = server.getListenAddress()
port = str(server.getListenPort())
server_url = address + ":" + port
addresses.append(server_url)
print ','.join(addresses)
我们使用 weblogic 密钥来存储用户名和密码,因此无需通过连接用户名和密码。它工作正常,但是......我们需要在 ant 脚本中使用它,看起来从 WLST 获取信息并返回到 ant 的唯一方法是通过捕获输出。
我遇到的第一个问题是,当您调用 WLST 时,它会打印一些您无法抑制的垃圾(标题)。“正在初始化 WebLogic 脚本工具 (WLST) ...”等。
因此,稍微搜索一下就会发现,如果您直接调用 WLST,则无法抑制这种情况,但是您可以将脚本嵌入到 java 类中,并且嵌入式解释器不会输出标头。
我将我的脚本包装在一个类中,编译它,当我使用java运行它时它运行没有问题......
>java wlst.GetClusterAddress t3://myhost:7001 mycluster
mymanagedserver1:9999,mymananagedserver2:9999
到目前为止,一切都很好。
现在我尝试将该类包装在我的 ant 脚本中......
<java classname="wlst.GetClusterAddress" outputproperty="${addresses}" >
<arg line="${admin.url} ${cluster.name}"/>
<classpath refid="class.path"/>
</java>
Ant 连接管理服务器时抛出异常
[java] WLSTException: Error occured while performing connect : Error connecting to the server : weblogic.security.internal.encryption.EncryptionServiceException: weblogic.security.internal.encryption.EncryptionServiceException: [Security:090219]Error decrypting Secret Key java.lang.SecurityException: The provider self-integrity check failed.
[java] Use dumpStack() to view the full stacktrace
[java]
我检查了我的类路径,java 和 ant 之间的一切似乎都是一样的。我不知道下一步该往哪里看。为什么在使用 ant 时这不起作用?