尝试将wlst脚本嵌入到java类中时出现加密错误

时间:2013-08-05 20:08:55

标签: weblogic wlst

我正在尝试整合一个小工具,它可以让托管服务器监听域中托管服务器的地址和端口。

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时为什么不起作用?

1 个答案:

答案 0 :(得分:2)

java任务中设置fork =“true”时尝试:

<java classname="wlst.GetClusterAddress" outputproperty="${addresses}" fork="true">
...