Обновите пользовательские jar-файлы посредника без перезапуска сервера wso2ei (интегратора)

Есть ли способ обновить/обновить собственный посредник (файл jar), расположенный в папке wso2ei/lib, без перезапуска всего сервера wso2ei (integrator.sh)?

Существует приложение Carbnon, которое использует, скажем, x медиатор (x.jar), и всякий раз, когда есть обновленная версия медиатора (x.jar), я делаю следующее:

  • остановить интегратор wso2 integrator.sh -stop
  • удалить все dropins/*
  • удалить все tmp/*
  • удалить x.jar в wso2ei/lib
  • загрузите новый x.jar в этот каталог
  • запустить интегратор wso2 integrator.sh -start

person Altin Ukshini    schedule 28.11.2018    source источник


Ответы (1)


По умолчанию - не поддерживается замена библиотеки на лету (кроме веб-приложений). Поэтому официально, если вам нужно поддерживать работоспособность ваших сервисов, вы должны использовать несколько узлов EI и использовать непрерывное обновление. Я предлагаю вам быть проще.

Однако, если вы хотите углубиться, углеродный код wso2 (основа wso2ei) построен на контейнере osgi p2, который теоретически позволит вам устанавливать и удалять пакеты на лету. (хотя wso2, вероятно, не будет поддерживать этот тип развертывания)

  • Вы можете запустить wso2ei с параметром -DosgiConsole и запустить консоль osgi на определенном порту -DosgiConsole=<port number>, см. https://www.yenlo.com/blog/access-wso2-osgi-console-using-telnet

  • Здесь мы предполагаем, что вы можете создать пакет osgi, а не простую библиотеку jar (вы должны быть хорошо знакомы с технологией и опциями osgi).

  • Из консоли вы можете установить и удалить пакеты https://wiki.eclipse.org/Equinox/p2/Console_Users_Guide и есть install и uninstallcommand

Обратите внимание: если есть какие-либо другие пакеты, которые используют ваши классы, они останавливаются, и установка другой версии может не привести к их восстановлению (например, вы не можете просто заменить уже загруженный драйвер .db)

person gusto2    schedule 28.11.2018