2016-12-29 4 views
1

Я пытаюсь добавить папку webapp со статическими HTML-страницами в JAXRSArchive с Wildfly Swarm. Но, к сожалению, это было неудачно. Как я могу это сделать?Wildfly Swarm JAXRSArchive add webapp directory

+0

Вы решили проблему? У меня такая же проблема. –

ответ

0

Скопируйте все статические файлы в src/main/webapp и в вас основной метод добавить вызов staticContenet следующим

public static void main(String... args) throws Exception { 
    Swarm container = new Swarm(); 
    JAXRSArchive jaxrsDeployment = ShrinkWrap.create(JAXRSArchive.class); 
    jaxrsDeployment.addAsLibrary(container.createDefaultDeployment()); 
    jaxrsDeployment.addAllDependencies(); 
    jaxrsDeployment.staticContent(); 
    container.start(); 
    container.deploy(jaxrsDeployment); 
+0

Я сделал то же самое, но это не работает для меня. Может, я что-то пропустил? – Nikita

+0

вы можете проверить содержимое банки/войны и посмотреть, правильно ли они добавляются – ravthiru

+0

Это проблема. Они не. – Nikita

0

Вы можете уточнить, почему вам нужен собственный Main()?

Предпочтительный вариант - не использовать пользовательский main(), или если у вас должен быть пользовательский main(), чтобы не настроить развертывание.

Вы можете просто позвонить Swarm.deploy(), и он будет создавать развертывание по умолчанию, который, если ваш проект имеет тип войны, будет работать нормально

+0

Мне нравится подход на основе Java. И эта настройка развертывания используется в большинстве примеров wildfly-swarm (например, для добавления swagger). Для меня это выглядит как лучший подход, но это плохо документировано. – Nikita

+0

Большинство примеров и документации настраивают развертывание, поэтому это будет не так просто. – Nikita

+0

Если вам действительно нужен пользовательский main(), потому что вам нужно каким-то образом настроить WAR, используйте Swarm.createDefaultDeployment(), чтобы предоставить вам архив, эквивалентный упаковке Maven WAR, а не создавать все с нуля. – Ken

0

Этот вопрос устарел. Но я отправляю это решение тем, кто сталкивается с той же проблемой.

Проблема может возникнуть, если вы используете JAX-RS без указания @ApplicationPath.

По умолчанию JAX-RS прослушивает корень / вашего приложения и переопределяет стандартное сопоставление.

В этом случае вы должны добавить конфигурацию, как это:

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

@ApplicationPath("/api") 
public class JaxRSConfiguration extends Application { 
} 

Это префикс все JAX-RS конечных точек с /api и позволяет работать со статическим контентом.

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