首页 文章

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

提问于
浏览
0

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

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 脚本中......

<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 回答

  • 2

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

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

相关问题