Jetty-maven-plugin несколько войн отдельные порты

Я использую плагин jetty-maven-plugin для тестирования локальной разработки. Я хочу использовать одну команду jetty: run, запустить кучу контейнеров для причала на отдельных портах, как указано в pom.xml - я не хочу указывать это во время войны. Мой текущий блок конфигурации плагина выглядит так:

<configuration>
   <scanIntervalSeconds>0</scanIntervalSeconds>
   <contextHandlers>
      <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
         <war>${basedir}/service-a/target/a.war</war>
         <contextPath>/a</contextPath>
         <allowNullPathInfo>true</allowNullPathInfo>
      </contextHandler>
      <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
         <war>${basedir}/service-b/target/b.war</war>
         <contextPath>/b</contextPath>
         <allowNullPathInfo>true</allowNullPathInfo>
      </contextHandler>
   </contextHandlers>
</configuration>

Я знаю, что могу указать -Djetty.port, но это глобально устанавливает порт. В приведенном выше примере обе войны запускаются в одном экземпляре контейнера причала, работающем на порту 8080. Кто-нибудь знает переключатель в contextHandler для установки порта или как это сделать, если у меня есть несколько экземпляров всего блока плагина? Каждый пример, который я искал, имеет только возможность установить его в файле jetty.xml в рамках войны, чего я не хочу делать.


person Mark    schedule 31.03.2014    source источник
comment
Что произойдет, если вы создадите несколько модулей mvn под основным модулем, оба из которых получат причал: run, но с разными конфигурациями? (хотя обычно консоль удерживается, не так ли)   -  person DrLivingston    schedule 01.04.2014


Ответы (2)


Возможно, если вы назовете коннекторы и обработчики контекста

<configuration>
    <connectors>
        <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
            <port>8080</port>
            <name>instance_8080</name>
        </connector>
        <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
            <port>8081</port>
            <name>instance_8081</name>
        </connector>
    </connectors>
    <contextHandlers>           
        <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
            <war>${basedir}/service-a/target/a.war</war>
            <contextPath>/a</contextPath>
            <connectorNames>
                <item>instance_8080</item>
            </connectorNames>
        </contextHandler>
        <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
            <war>${basedir}/service-b/target/b.war</war>
            <contextPath>/b</contextPath>
            <connectorNames>
                <item>instance_8081</item>
            </connectorNames>
        </contextHandler>
    </contextHandlers> 
</configuration>

Обратите внимание, что эта конфигурация предназначена для org.mortbay.jetty:jetty-maven-plugin.

person Johan Sjöberg    schedule 31.08.2014
comment
Выглядит неплохо, но, к сожалению, я больше не могу проверить, работает ли это. Я дам ему несколько дней, чтобы увидеть, подтвердит ли кто-нибудь, но после этого я буду считать, что это правильно, и отмечу это как таковое. - person Mark; 02.09.2014

В вашем плагине jetty maven вы можете создать несколько connectors, которые могут работать на разных портах. Это первое начало.

Я не уверен, как и могут ли эти connector блоки вести разные войны. Они могут относиться к другому jetty.xml (хотя у меня не было ничего, кроме проблем с jetty.xml).

http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html#configuring-jetty-container

person DrLivingston    schedule 01.04.2014
comment
Из связанного документа :: Обратите внимание, что, начиная с jetty-9.0, больше невозможно настроить коннектор https непосредственно в pom.xml: для этого вам нужно использовать файлы конфигурации jetty xml. Единственная альтернатива, подразумеваемая в документации, - использовать org.eclipse.jetty.webapp.WebAppContext (использованный выше), и оттуда не похоже, что вы можете настроить порт из pom.xml - person Mark; 02.04.2014
comment
о, как насчет этого. Пользуюсь 8. - person DrLivingston; 03.04.2014