2017-02-22 2 views
0

Я использую мол-Maven-плагин со следующей конфигурацией:Jetty предупреждение "Нет resourceBase войны или набор для контекста" с Maven плагин

<plugin> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>9.4.1.v20170120</version> 
    <configuration> 
     <jettyConfig>${basedir}/src/main/webapp/WEB-INF/development.jetty-config.xml</jettyConfig> 
     <contextHandlers> 
      <contextHandler implementation="org.eclipse.jetty.maven.plugin.JettyWebAppContext"> 
       <contextPath>/</contextPath> 
      </contextHandler> 
     </contextHandlers> 
     <reload>manual</reload> 
     <scanIntervalSeconds>0</scanIntervalSeconds> 
     <webApp> 
      <contextPath>/</contextPath> 
     </webApp> 
    </configuration> 
    <dependencies> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>${mysql.version}</version> 
     </dependency> 
    </dependencies> 
</plugin> 

Файл development.jetty-config.xml имеет следующее содержание:

<?xml version="1.0"?> 
<Configure class="org.eclipse.jetty.maven.plugin.JettyWebAppContext"> 
    <Set name="resourceBase">./src/main/webapp</Set> 
    <Set name="contextPath">/</Set> 
    <Set name="war"><Property name="jetty.home" default="." />./src/main/webapp</Set> 

    <New id="proj1DS" class="org.eclipse.jetty.plus.jndi.Resource"> 
     <Arg></Arg> 
     <Arg>jdbc/proj1</Arg> 
     <Arg> 
      <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"> 
       <Set name="Url">jdbc:mysql://localhost/mydb</Set> 
       <Set name="User">root</Set> 
       <Set name="Password">***</Set> 
       <Set name="UseUnicode">true</Set> 
       <Set name="CharacterEncoding">UTF-8</Set> 
      </New> 
     </Arg> 
    </New> 
</Configure> 

я тогда начать Jetty с помощью команды Maven:

mvn jetty:run 

Соответствующие журналы плагина:

[INFO] <<< jetty-maven-plugin:9.4.1.v20170120:run (default-cli) < test-compile @ proj1-admin <<< 
[INFO] 
[INFO] --- jetty-maven-plugin:9.4.1.v20170120:run (default-cli) @ proj1-admin --- 
2017-02-22 11:41:42.311:INFO::main: Logging initialized @3350ms to org.eclipse.jetty.util.log.StdErrLog 
[INFO] Configuring Jetty for project: Proj Admin 
[INFO] webAppSourceDirectory not set. Trying src/main/webapp 
[INFO] Reload Mechanic: manual 
[INFO] Classes = /home/igor/projects/Proj1/admin/target/classes 
[INFO] Configuring Jetty from xml configuration file = /home/igor/projects/proj1/admin/src/main/webapp/WEB-INF/development.jetty-config.xml 
[INFO] Context path =/
[INFO] Tmp directory = /home/igor/projects/proj1/admin/target/tmp 
[INFO] Web defaults = org/eclipse/jetty/webapp/webdefault.xml 
[INFO] Web overrides = none 
[INFO] web.xml file = file:///home/igor/projects/proj1/admin/src/main/webapp/WEB-INF/web.xml 
[INFO] Webapp directory = /home/igor/projects/proj1/admin/src/main/webapp 
2017-02-22 11:41:42.449:INFO:oejs.Server:main: jetty-9.4.1.v20170120 
2017-02-22 11:41:44.694:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=1975ms 
2017-02-22 11:41:44.904:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0 
2017-02-22 11:41:44.904:INFO:oejs.session:main: No SessionScavenger set, using defaults 
2017-02-22 11:41:44.907:INFO:oejs.session:main: Scavenging every 600000ms 

Затем он печатает это предупреждение:

2017-02-22 11:41:47.150:INFO:oejsh.ContextHandler:main: Started [email protected]{/,file:///home/igor/projects/proj1/admin/src/main/webapp/,AVAILABLE}{file:///home/igor/projects/proj1/admin/src/main/webapp/} 
2017-02-22 11:41:47.154:WARN:oejw.WebInfConfiguration:main: Can't generate resourceBase as part of webapp tmp dir name: java.lang.IllegalStateException: No resourceBase or war set for context 
2017-02-22 11:41:47.155:WARN:oejw.WebAppContext:main: Failed startup of context [email protected]{/,null,null} 
java.lang.IllegalStateException: No resourceBase or war set for context 
    at org.eclipse.jetty.webapp.WebInfConfiguration.unpack(WebInfConfiguration.java:406) 
    at org.eclipse.jetty.maven.plugin.MavenWebInfConfiguration.unpack(MavenWebInfConfiguration.java:135) 
    at org.eclipse.jetty.webapp.WebInfConfiguration.preConfigure(WebInfConfiguration.java:72) 
    at org.eclipse.jetty.maven.plugin.MavenWebInfConfiguration.preConfigure(MavenWebInfConfiguration.java:95) 
    at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:501) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:539) 
    at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:432) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113) 
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:161) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113) 
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131) 
    at org.eclipse.jetty.server.Server.start(Server.java:452) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:105) 
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:419) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
    at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:460) 
    at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:328) 
    at org.eclipse.jetty.maven.plugin.JettyRunMojo.execute(JettyRunMojo.java:170) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) 

К моему удивлению, нагрузки приложений и workig правильно. Кроме того, эти три строки в конфигурационном файле:

<Set name="resourceBase">./src/main/webapp</Set> 
<Set name="contextPath">/</Set> 
<Set name="war"><Property name="jetty.home" default="."/>./src/main/webapp</Set> 

не имеют никакого эффекта, даже если я удалить их.

Я посмотрел на документы, и эти ответы, но не могу понять:

How to deploy my web application to jetty9 as root application?

No hot deployment in Jetty 9.0.6

Jetty config without resourceBase

Мои вопросы:

  1. Как для правильной настройки этого плагин, чтобы избавиться от предупреждения?
  2. Должен ли я действительно волноваться, так как это не ОШИБКА, и приложение работает?

ответ

1

Ваша установка в замешательстве.

Почему вы настраиваете org.eclipse.jetty.maven.plugin.JettyWebAppContext через XML-интерфейс Jetty IoC? Не делайте этого, его недействительно.

Вы не можете изменить resourceBase с плагином причал-maven, так как сам причал-maven-plugin должен контролировать эту настройку в своих целях.

Плагин jetty-maven будет использовать информацию, существующую в подсистеме maven, для создания списка ресурсов, чтобы сделать ваш webapp действительным с точки зрения спецификации Servlet и maven.Он будет тянуть в информации от:

  • сборки проекта (например: определенные каталоги выходных в вашем эффективном П)
  • плагин вашего проекта (например: динамически назначаемые выходные каталоги из ваших плагин, такие как из Maven-ресурсов -plugin, Maven-компилятор плагин, Maven войны-плагин, jspc-Maven-плагин, и т.д.)

с точки зрения Jetty правильного, вы не можете иметь WebAppContext, который определяет ОБА resourceBase и war, они - одно и то же, и имеют ту же цель.

  • resourceBase является фундаментальным понятием в Jetty (и как мол-Maven-плагин инициализирует свой веб-приложение)
  • war является специализированным resourceBase для сервлета спецификации. (И только используется, когда у вас есть надлежащее *.war или расширенного WebAPP Deployable. Это не действует во молы-Maven-плагин исполнение)

Для настройки contextPath используйте моле-Maven-плагин <configuration> вместо этого.

Если у вас есть этот XML-проект Jetty IoC для целей настройки ресурса JNDI, подумайте о том, чтобы сделать его нормальной конфигурацией в вашем файле WEB-INF/jetty-env.xml.

<Configure id='wac' class="org.eclipse.jetty.webapp.WebAppContext"> 
    <New id="proj1DS" class="org.eclipse.jetty.plus.jndi.Resource"> 
     <Arg></Arg> 
     <Arg>jdbc/proj1</Arg> 
     <Arg> 
      <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"> 
       <Set name="Url">jdbc:mysql://localhost/mydb</Set> 
       <Set name="User">root</Set> 
       <Set name="Password">***</Set> 
       <Set name="UseUnicode">true</Set> 
       <Set name="CharacterEncoding">UTF-8</Set> 
      </New> 
     </Arg> 
    </New> 
</Configure> 
+0

Я последовал вашему совету и удалил это из моего ПОМ: \t <реализация contextHandler = "org.eclipse.jetty.maven.plugin.JettyWebAppContext"> \t \t / \t \t Предупреждение ушло. Большое спасибо за помощь! – ipolevoy

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