Я пытаюсь собрать небольшую утилиту, которая позволит нам получать адреса и порты прослушивания управляемого сервера из управляемых серверов в домене.
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?