1

複数の webapps WAR ファイルを Jetty 8 にデプロイするにはどうすればよいmaven-jetty-pluginですか?

<contextHandlers>
  <contextHandler implementation="org.mortbay.jetty.webapp.WebAppContext">
    <war>${basedir}/dir/mywar.war</war>
  <contextPath>/path</contextPath>
</contextHandler>

古いプラグイン バージョンでのみ動作するようです。

4

1 に答える 1

1

pom.xml から次のスニペットを使用します。これは、Jetty サーバーの指示を基にしています。これは Jetty7 用ですが、後のバージョンにも簡単に適用できます。

pom.xml

  <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <!-- Jetty 7.3+ requires Maven 3+ -->
    <!-- Keep with Jetty 7.6.0 to avoid startup delays from Servlet API 3.0 -->
    <version>7.6.0.RC1</version>
    <configuration>
      <stopKey>STOP</stopKey>
      <stopPort>8009</stopPort>
      <scanIntervalSeconds>10</scanIntervalSeconds>
      <!-- Provide some JNDI resources (optional) -->
      <jettyEnvXml>src/test/resources/jetty-jndi-config.xml</jettyEnvXml>
      <!-- Register this application as a context -->
      <webAppConfig>
        <contextPath>/example</contextPath>
      </webAppConfig>
      <!-- Allow resources on the test classpath to be available -->
      <useTestClasspath>true</useTestClasspath>
      <!-- Add in any supporting application contexts (use dependencies section) -->
      <contextHandlers>
        <!-- Supporting WAR (note the use of a property entry for version, and see the dependency later - also Jetty 7 uses org.eclipse...) -->
        <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
          <war>
            ${settings.localRepository}/org/example/supporting-war/${supporting-war.version}/supporting-war-${supporting-war.version}.war
          </war>
          <contextPath>/supporting-war</contextPath>
        </contextHandler>
      </contextHandlers>
      <connectors>
        <!-- Later versions of Jetty don't require the Connector to be specified -->
        <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
          <port>8080</port>
          <maxIdleTime>60000</maxIdleTime>
        </connector>
        <!-- SSL for localhost support -->
        <connector implementation="org.mortbay.jetty.security.SslSocketConnector">
          <port>8443</port>
          <maxIdleTime>60000</maxIdleTime>
          <!-- Provide a local key store for serving up SSL certificates -->
          <keystore>src/test/resources/jetty-ssl.keystore</keystore>
          <!-- Pick any password you like -->
          <password>jetty6</password>
          <keyPassword>jetty6</keyPassword>
        </connector>
      </connectors>
    </configuration>
    <dependencies>
      <!-- This ensures that WAR files are downloaded from the repo -->
      <!-- Example supporting WAR  -->
      <dependency>
        <groupId>org.example</groupId>
        <artifactId>supporting-war</artifactId>
        <version>${supporting-war.version}</version>
        <scope>compile</scope>
        <type>war</type>
      </dependency>
    </dependencies>
  </plugin>

SSL と JNDI の構成は、誰かがそれらの構成方法を確認する必要がある場合に備えて残しておきます。明らかに、サポート ファイルが必要になります。SSL は、たとえば localhost 用の SSL 証明書を含む適切なキー ストアが既に作成されていることを前提としています。JNDI 構成ファイルは次のとおりです。

jetty-jndi-config.xml

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">

<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <New id="ExampleDB" class="org.mortbay.jetty.plus.naming.Resource">
    <Arg>java:jdbc/ExampleDB</Arg>
    <Arg>
      <New class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <Set name="driverClass">oracle.jdbc.driver.OracleDriver</Set>
        <Set name="jdbcUrl">jdbc:oracle:thin:@//host:port/schema</Set>
        <Set name="user">user</Set>
        <Set name="password">password</Set>
        <!-- Configure a simple connection test with timeout for subsequent queries -->
        <Set name="preferredTestQuery">select 1 from dual</Set>
        <Set name="checkoutTimeout">5000</Set>
      </New>
    </Arg>
  </New>
</Configure>

これにより、たとえば次のような Spring Bean ファクトリを使用した JNDI リソース ルックアップが可能になります。

<bean id="exampleDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:jdbc/ExampleDB"/>
    <property name="resourceRef" value="true"/>
  </bean>

C3P0 および Oracle の参照は、表面上は Jetty サーバーにローカルな依存関係を導入するため<plugin><dependencies>、WAR と共にセクションに配置する必要があることに注意してください。それらは主要な依存関係にある必要はありません。

したがって、Maven ビルドには組み込みの Jetty Web サーバーが含まれ、複数の WAR で動作するように構成され、すべてが pom.xml バージョンに結び付けられ、HTTP と HTTPS の両方を提供し、プールされたデータベース接続でサポートされます。これで、すぐに使用できる統合開発環境に必要なものがすべて揃っています。

于 2011-11-15T14:20:56.627 に答える