Запуск приложения Jython в WebSphere Liberty

Я хочу запустить jython/modjy (modjy в некотором роде аналогичен mod_wsgi, за исключением того, что он соединяет веб-серверы и приложения Java) в моем профиле IBM WAS 8.5 Liberty.

Однако, когда я конвертирую пример приложения jython-modjy в файл .WAR и помещаю его в каталог dropins, сервер WebSphere действительно изо всех сил пытается найти путь к demo_app.py (обработчику WSGI). Вот фрагмент моего файла web.xml:

<init-param>
  <param-name>python.home</param-name>
  <param-value>C:/jython2.5.3</param-value>
</init-param>
<init-param>
  <param-name>app_filename</param-name>
  <param-value>demo_app.py</param-value>
</init-param>

Единственными другими параметрами, связанными с приложением, являются app_directory и app_callable_name, которые по умолчанию соответствуют текущему каталогу и обработчику:

Я получаю следующую ошибку, когда пытаюсь запустить приложение:

modjy.modjy_exceptions.ApplicationNotFound: Application filename not found: None/demo_app.py

Единственный способ заставить его работать - указать абсолютный путь, который на самом деле не слишком переносим.

Любая помощь будет принята с благодарностью

Спасибо, Дэвид


person David    schedule 28.08.2013    source источник
comment
Я не знаю, но я бы порекомендовал отладить/отследить код modjy, чтобы определить, что вызывает разницу в поведении. Вполне вероятно, что Liberty API (мне кажется, javax.servlet или ClassLoader) возвращает другое значение из Tomcat (например, getRealPath, потому что .war не расширяется на диске?).   -  person Brett Kail    schedule 15.10.2013


Ответы (1)


Я сам провел быстрый тест и разделяю те же опасения, что и bkail. Эта проблема, скорее всего, является результатом того, что Liberty не раздувает развернутые веб-приложения. Таким образом, все приложения, использующие getRealPath(), не будут работать.

Есть два возможных варианта/обходного пути:

  1. В среде разработки вы можете использовать Eclipse с инструментами WebSphere Application Server Liberty Profile Tools, чтобы добавить проект динамического веб-модуля в экземпляр сервера Liberty. Это создаст связь между Liberty и файлами вашего проекта в вашем рабочем пространстве. В этой настройке будет работать метод getRealPath() контекста сервлета.

  2. Разместите файл WAR в каталоге dropins вашего сервера Liberty в каталог, который называется так же, как файл WAR, включая расширение файла .war. Тот же подход должен работать с указанием вашего приложения в файле server.xml.

person Matthias Diester    schedule 17.01.2014