【问题标题】:Gettting an encryption error when attempting to embed a wlst script into a java class尝试将 wlst 脚本嵌入 java 类时出现加密错误
【发布时间】:2013-08-05 20:08:55
【问题描述】:

我正在尝试组合一个小型实用程序,它可以让我们将托管服务器侦听地址和端口从域中的托管服务器中提取出来。

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 时这不起作用?

【问题讨论】:

    标签: weblogic wlst


    【解决方案1】:

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

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

    【讨论】:

    • 哇!就是这样。现在就像一个魅力。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多