Получение ошибки шифрования при попытке встроить скрипт wlst в класс java

Я пытаюсь собрать небольшую утилиту, которая позволит нам получать адреса и порты прослушивания управляемого сервера из управляемых серверов в домене.

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

Все идет нормально.

Теперь я пытаюсь обернуть этот класс в свой муравьиный скрипт...

<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?


person Brian    schedule 05.08.2013    source источник


Ответы (1)


Попробуйте, установив fork="true" в задаче java:

<java classname="wlst.GetClusterAddress" outputproperty="${addresses}" fork="true">
...
person Lee Meador    schedule 05.08.2013
comment
Уот! Вот и все. Теперь работает как шарм. Спасибо! - person Brian; 06.08.2013