как публиковать статический контент с помощью плагина 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 &quot;%r&quot; %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 2

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>