как публиковать статический контент с помощью плагина jetty-maven?
В настоящее время я запускаю приложение в Tomcat и хочу, чтобы оно запускалось в Jetty.
Моя конфигурация Tomcat выглядит следующим образом:
- 1 война
- 1 модуль, который предоставляет изображения
Какой-то код сервера моего Tomcat.xml:
<Service name="Catalina">
<Executor maxThreads="300" minSpareThreads="50" name="tomcatThreadPool" namePrefix="tomcat-http--"/>
<Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host appBase="webapps" autoDeploy="true" deployOnStartup="true" deployXML="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>
<Context docBase="/home/neuquino/svn_co/FrameworkIMG/img" path="/img" reloadable="true"/>
<Context docBase="myapp-web" path="/" reloadable="true" source="org.eclipse.jst.j2ee.server:myapp-web"/>
</Host>
</Engine>
<Connector acceptCount="100" connectionTimeout="20000" executor="tomcatThreadPool" maxKeepAliveRequests="15" port="${bio.http.port}" protocol="org.apache.coyote.http11.Http11Protocol" redirectPort="${bio.https.port}"/>
</Service>
Вещь, которую я не могу воспроизвести в Jetty, настроена в этой строке:
<Context docBase="/home/neuquino/svn_co/FrameworkIMG/img" path="/img" reloadable="true"/>
Вот моя конфигурация плагина jetty-maven :
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<configuration>
<webApp>
<contextPath>/</contextPath>
<war>${basedir}/target/myapp.war</war>
</webApp>
</configuration>
</plugin>
</plugins>
</build>
Разница состоит в том, что в /home / neuquino/svn_co/FrameworkIMG/img у меня нет веб-приложения, каталог просто содержит папки и файлы (в данном случае изображения)
Итак, вопрос: Как я могу выставить статическое содержимое с помощью Jetty?
Нет необходимости говорить мне, как это сделать с плагином maven, если вы знаете, как это сделать с автономным дистрибутивом jetty, это также очень помогает мне!
Заранее спасибо!
2 ответа:
Как ответил Сам себе @Neuquino, решение есть, но с одним исключением: последняя версия jetty требует обернуть обработчики контекста в специальный раздел, например:
<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.3.v20140905</version> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> <contextHandlers> <contextHandler implementation="org.eclipse.jetty.server.handler.ContextHandler"> <contextPath>/avatar/tmp</contextPath> <resourceBase>/usr/local/resources/webapp/avatar/tmp</resourceBase> <handler implementation="org.eclipse.jetty.server.handler.ResourceHandler" /> </contextHandler> </contextHandlers> <stopPort>9966</stopPort> <stopKey>foo</stopKey> <stopWait>10</stopWait> </configuration> </plugin>
Это работает на меня.
Я нашел решение, вот оно:
<build> <plugins> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>${jetty.version}</version> <configuration> <webApp> <contextPath>/</contextPath> <war>${basedir}/target/myapp.war</war> </webApp> <contextHandler implementation="org.eclipse.jetty.server.handler.ContextHandler"> <contextPath>/img</contextPath> <resourceBase>/home/neuquino/svn_co/FrameworkIMG/img</resourceBase> <handler implementation="org.eclipse.jetty.server.handler.ResourceHandler" /> </contextHandler> </configuration> </plugin> </plugins> </build>