2013-07-30 59 views
1

我目前在Tomcat中運行一個應用程序,我希望它在Jetty中運行。如何使用jetty-maven-plugin公開靜態內容?

我的Tomcat配置如下:

<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> 

的:

  • 1戰
  • 1模塊暴露圖片

我的Tomcat的server.xml中的一些代碼我無法在Jetty中重現的事情是在此行中配置的一件事:

<Context docBase="/home/neuquino/svn_co/FrameworkIMG/img" path="/img" reloadable="true"/> 

這裏是我的碼頭 - 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我沒有一個Web應用程序,目錄只是包含文件夾和文件(在這種情況下爲圖像)

所以,問題是:我如何使用Jetty公開靜態內容?

沒有必要告訴我如何用maven的插件來實現它,如果你知道如何用獨立的碼頭分佈來做到這一點,它也幫助我很多!

在此先感謝!

+0

我使用的是jetty-maven-plugin的v9.0.4.v20130625 – Neuquino

回答

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> 
2

至於@Neuquino回答自己,解決它,但有一個例外:碼頭的最新版本需要包裝的上下文句柄特殊部分,像這樣:

 <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> 

它適用於我。