我目前正在Tomcat中运行一个应用程序,我希望它在Jetty中运行它。
我的Tomcat配置如下:
我的Tomcat的server.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-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>
</configuration>
</plugin>
</plugins>
</build>
差异是在/ home / neuquino / svn_co / FrameworkIMG / img我没有webApp,该目录只包含文件夹和文件(在本例中为图像)
所以,问题是:我如何用Jetty公开静态内容?
没有必要告诉我如何使用maven的插件,如果你知道如何使用独立的码头发行版,它也对我有很大的帮助!
提前致谢!
答案 0 :(得分:3)
正如@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>
它对我有用。
答案 1 :(得分:1)
我找到了解决方案,现在是:
<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>