ドメイン内の管理対象サーバーから管理対象サーバーのリッスン アドレスとポートを取得できる小さなユーティリティをまとめようとしています。
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 Scripting Tool (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を使用しているときにこれが機能しないのはなぜですか?