Wildfly Swarm запускает развернутый артефакт, используя его хэш-имя

У меня есть стандартный чистый веб-проект, который я использую для создания артефакта роя Wildfly. Мой ПОМ выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test.swarm</groupId>
    <artifactId>test_security_module</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.wildfly.swarm</groupId>
                <artifactId>bom-all</artifactId>
                <version>2017.6.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.wildfly.swarm</groupId>
            <artifactId>security</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.wildfly.swarm</groupId>
                <artifactId>wildfly-swarm-plugin</artifactId>
                <version>2017.6.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>package</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

У меня также есть файл jboss-web.xml, который должен регистрировать корень контекста и выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_6_0.xsd"
           version="6.0">

    <context-root>/Tiles</context-root>

</jboss-web>

Таким образом, после создания и запуска проекта корневой контекст /Tiles должен быть зарегистрирован, а приложение должно быть доступно по адресу: http://localhost:8080/Tiles.

Но затем я пытаюсь запустить uber jar, используя стандартный java -jar, Swarm развертывает хеш-имя имени проекта (в отличие от имени проекта). Он даже не регистрирует корень контекста. Фрагмент трассировки стека:

2017-07-04 04:32:14,329 ИНФОРМАЦИЯ [org.jboss.as] (поток загрузки контроллера) WFLYSRV0025: WildFly Swarm 2017.6.1 (WildFly Core 2.2.1.Final) запущен через 5762 мс — запущено 55 из 59 служб (4 сервисы ленивые, пассивные или по требованию) -04 04:32:14,405 INFO [org.jboss.as.server.deployment] (поток службы MSC 1–3) WFLYSRV0027: запуск развертывания «3d31f81a-29d6-4ea1-b3eb-0a2a98a3c3f5.war» (имя среды выполнения: "3d31f81a-29d6-4ea1-b3eb-0a2a98a3c3f5.war") 2017-07-04 04:32:14,464 INFO [org.jboss.as.server] (основной) WFLYSRV0010: развернуто "3d31f81a-29d6-4ea1-b3eb-0a2a958a3c3f .war" (имя среды выполнения: "3d31f81a-29d6-4ea1-b3eb-0a2a98a3c3f5.war") 2017-07-04 04:32:14,466 INFO [org.wildfly.swarm] (основной) WFSWARM99999: WildFly Swarm готов

Что может привести к тому, что swarm запустит приложение, используя хеш-имя проекта?


person Obakeng Balatseng    schedule 04.07.2017    source источник
comment
Не то, что я видел, если у вас нет пользовательского main(), создающего архив без имени, что не похоже на вашу ситуацию. Не могли бы вы поднять вопрос по этому поводу? issues.jboss.org/browse/SWARM   -  person Ken    schedule 04.07.2017
comment
Удалось исправить это, добавив ‹groupId›org.wildfly.swarm‹/groupId› ‹artifactId›undertow‹/artifactId› Эта ошибка очень загадочна   -  person Obakeng Balatseng    schedule 04.07.2017
comment
На самом деле это имеет смысл, извините, я не заметил этого вчера. Если вы хотите развернуть WAR, вам понадобится либо undertow, либо jaxrs, чтобы это работало.   -  person Ken    schedule 05.07.2017


Ответы (2)


Исправлено добавлением зависимости от отвода

<dependency>
    <groupId>org.wildfly.swarm</groupId>
    <artifactId>undertow</artifactId>
</dependency>
person Obakeng Balatseng    schedule 04.07.2017

Я сделал это, запустив swarm/thorntail следующим образом:

Swarm swarm = new Swarm();
swarm.start();
WARArchive a = ShrinkWrap.create(WARArchive.class, "WARNAME");
swarm.deploy(a);

Где WARNAME — это, очевидно, имя нужного вам .war.

Версия Thorntail: 2.2.0.Final

PS: Он просто может изменить хэш на имя файла... Я думаю, вам нужно поместить файлы перед развертыванием... Я не мог найти, как это сделать. Я пытался запустить EJB без сохранения состояния с поиском jndi с именем java:/global + runtime-name + /EJBname. и когда я запускаю его в Swarm, мне нужно знать хэш... Итак, что я сделал?

   Swarm conteiner = new Swarm();   
   Archive a = conteiner.createDefaultDeployment();
   a.getId();  // where id is the hash

Я пытаюсь поместить этот хеш в поиск.

person Marcio    schedule 23.07.2020