我正在尝试整合一个小工具,它可以让托管服务器监听域中托管服务器的地址和端口。
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密钥存储用户名和密码,因此无需传递用户名和密码。它工作正常,但是...我们需要在一个蚂蚁脚本中使用它,看起来从WLST获取信息并返回到ant的唯一方法是通过捕获输出。
我遇到的第一个问题是,当你调用无法抑制的时候,WLST会打印一些垃圾(一个标题)。 “初始化WebLogic脚本工具(WLST)......”等等。
所以稍微搜索一下就会发现如果你直接调用WLST就无法抑制它,但是你可以将你的脚本嵌入到java类中,嵌入式解释器也不会输出标题。
我将我的脚本包装在一个类中,编译它,当我使用java运行它时运行没有问题...
>java wlst.GetClusterAddress t3://myhost:7001 mycluster
mymanagedserver1:9999,mymananagedserver2:9999
到目前为止一切顺利。
现在我尝试将该类包装在我的蚂蚁脚本中......
<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时为什么不起作用?
答案 0 :(得分:2)
在java
任务中设置fork =“true”时尝试:
<java classname="wlst.GetClusterAddress" outputproperty="${addresses}" fork="true">
...