我正在尝试组合一个小工具,它可以让托管服务器监听域中托管服务器的地址和端口 .
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在你调用它时会打印一些你无法抑制的垃圾(一个 Headers ) . “初始化WebLogic脚本工具(WLST)......”等 .
所以一点点搜索显示,如果你直接调用WLST,就没有办法压制它,但你可以将你的脚本嵌入到java类中,嵌入式解释器不会输出头 .
我把我的脚本包装在一个类中,编译它,当我使用java运行它时运行没问题...
>java wlst.GetClusterAddress t3://myhost:7001 mycluster
mymanagedserver1:9999,mymananagedserver2:9999
到现在为止还挺好 .
现在我尝试将该类包装在我的 Ant 脚本中......
连接到管理服务器时,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 时为什么不起作用?