3

Документация IBM Liberty утверждает, что можно запустить/остановить/управлять сервером Liberty, используя SPI непосредственно из кода. Я хотел бы использовать такую ​​функциональность для создания интеграционных тестов для моих служб REST.Запуск сервера Liberty как встроенный из maven с использованием зависимостей maven

Ссылка на оригинал статьи: http://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/twlp_extend_embed.html?lang=en

Я хочу создать интеграционный тест, что:

1) Start Liberty сервер с моим собственным 'server.xml'. Я хочу предоставить конкретный источник данных и безопасность здесь.

2) Разверните приложение EAR на сервере Liberty.

3) Запустите тесты на сервере REST с гарантией REST.

4) Отменить развертывание приложения и завершить работу сервера Liberty.

В основном я застрял на первом этапе - я не могу запустить сервер, потому что получаю исключение «NoClassDefFoundError: com.ibm.ws.kernel.boot.EmbeddedServerImpl». В приведенной выше ссылке описывается, что нужно использовать ws-server.jar из установки Liberty, но как насчет ссылки на нее из зависимостей maven? Я полагаю, что я могу указать некоторый артефакт от IBM maven repo 'https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/maven/repository/' и использовать его для запуска Liberty в качестве встроенного сервера непосредственно из моих модульных тестов, но я не могу найти, что это за артефакт.

Итак, чтобы перефразировать себя: что было бы артефактом maven в репозитории IBM, который содержит класс EmbeddedServerImpl? И достаточно ли включить этот артефакт, или их больше требуется для встраивания свободы?

+1

Рассмотрите возможность использования [плагин Liberty Maven] (https://github.com/WASdev/ci.maven) для запуска ваших интеграционных тестов. Фактически, примерный проект, созданный с использованием архетипа [libty plugin archtype] (https://github.com/WASdev/ci.maven#liberty-plugin-archetype), показывает только это. – jgawor

+0

Для NoClassDefFoundError, любая другая информация о настройке? Конкретная версия версии Liberty и среда выполнения могут помочь. Был ли ws-server.jar перемещен из wlp/bin/tools? – ewhoch

+0

@jgawor, скажем, у меня есть несколько тестов интеграции, и я хочу запустить каждый из них на чистом сервере (например, в новой базе данных). Запуск Liberty только один раз на этапе «pre-integration-test» будет поддерживать одну и ту же базу данных для всех тестов, и они могут влиять друг на друга. – alebu

ответ

2

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

я написал статью и попробовать некоторое время назад с изложением различных методов для написания тестов функционала/интеграции с Liberty в том числе с использованием JUnit Rule с помощью встроенного запуска сервера и остановки сервера:

https://developer.ibm.com/wasdev/docs/writing-functional-tests-liberty/

https://github.com/WASdev/sample.functionaltest

Это было с помощью Gradle сделать часть сборки сценария, так что я включил запуск JAR с:

fvtRuleCompile fileTree(dir: "${libertyRoot}/bin/tools", include: 'ws-server.jar') 

То же самое может быть достигнуто в среде Maven построить с помощью системы Зависимость:

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies

1

Я не думаю, что ws-server.jar предоставляется в хранилище IBM Maven DHE, только Liberty API, и ИПБ и некоторые пакеты времени выполнения предоставляются пользователю в качестве зависимостей Maven.

Кстати, если вы используете артефакты из репозитория IBM Maven DHE, вы можете изменить их на те, которые в настоящее время предоставляются в Maven Central, см:

http://mvnrepository.com/artifact/com.ibm.websphere.appserver

 Смежные вопросы

  • Нет связанных вопросов^_^