5

TomcatプラグインでMaven3.0.3を使用しています。MavenとTomcatを使用して、サイトの組み込みインスタンスをデプロイしたいと思います。私の質問は、組み込みTomcatサーバーで追加のコンテキストパスを構成するにはどうすればよいですか?以下は私のTomcat構成ですが、私の<contextFile>仕様が無効であるか、そのファイルの内容(以下)が無効です:

<Context path="/all-new-jx-web" docBase="/Users/davea/Documents/workspace/NissanUSA2/Technology/nna/mycousa/jx/target/web">
</Context>

私が呼び出すとき

mvn clean -Dmaven.test.skip=true verify -Ptomcat tomcat:run

マップされたURL /all-new-jx-web(私の追加のコンテキストパス)はどれもマップされていません(アセットはTomcatによって提供されていません)。なぜ何かアイデアはありますか?以下は私のpom.xmlファイルからの私のtomcatプロファイルです:

<profile>
  <id>tomcat</id>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tomcat-maven-plugin</artifactId>
        <version>1.1</version>
        <configuration>
          <contextFile>config/tomcat/context.xml</contextFile>
          <mode>context</mode>
          <addContextWarDependencies>true</addContextWarDependencies>
          <charset>UTF-8</charset>
          <path>/all-new-jx</path>
          <update>true</update>
          <warDirectory>target/${project.artifactId}-${project.version}.${project.packaging}</warDirectory>
          <systemProperties>
            <JAVA_OPTS>-Xms256m -Xmx512m -XX:MaxPermSize=256m -XX:NewRatio=6
                -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
                -verbose:gc"
            </JAVA_OPTS>
          </systemProperties>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>
4

4 に答える 4

4

同じ問題が発生しました。外部サーバーのxmlに場所を指定しようとしましたが、プロジェクトを実行できました。最終的に、追加の静的コンテキストパスを含めるようにTomcatプラグインコードを変更することになりました。

// Snippet from AbstractRunMojo.java

            String appBase = new File(configurationDir, "webapps")
                    .getAbsolutePath();
            Host host = container.createHost("localHost", appBase);

            host.addChild(context);
            // Adding static context
            createStaticContext(container, context, host);//More code after this


    private void createStaticContext(final Embedded container, Context context,
        Host host) {
    if (null != staticContextDocbase) {
        Context ctx1 = container.createContext(staticContextPath,
                staticContextDocbase);
        ctx1.setPrivileged(true);
        Wrapper servlet = context.createWrapper();
        servlet.setServletClass(DefaultServlet.class.getName());
        servlet.setName("staticContent");
        ctx1.addChild(servlet);
        ctx1.addServletMapping("/", "staticContent");
        host.addChild(ctx1);
    }
}
于 2012-04-08T01:49:13.837 に答える
2

contextFile xml要素については正しい考えがありますが、相対パスを使用するのではなく、明示的にしてみてください。

<contextFile>${basedir}/config/tomcat/context.xml</contextFile>

${basedir}pom.xmlが存在するフォルダーです。プロジェクトに適していない場合は、この部分を変更する必要がある場合があります。

于 2012-11-26T22:51:16.323 に答える
1

serverXmlそのための構成を使用します。

于 2011-08-08T19:14:00.693 に答える
1

Apache solrを使用するアプリを開発モードで実行するには、同じものが必要でした。以下はうまくいったようです:

  1. solrをtype=war、scope=tomcat依存関係として宣言します
  2. addContextWarDependenciesでtomcatmavenプラグイン(バージョン1.1)を使用します
  3. 以下の例のように、solrhomeのシステムプロパティを追加します

次に、 mvn tomcat:runのようにMavenを実行できます。このシナリオではJavaが大量のメモリを必要とするため、mavenを実行する前に、たとえばMAVEN_OPTS = "-Xmx1536m -XX:MaxPermSize=512m"をエクスポートすることに注意してください。

pom.xmlはのようなもので、構成ファイルから読み取られるいくつかのプロパティ(solr.homeと呼ばれるものを含む)があると想定しています。

<project>
  ...
  <dependencies>
  ...
    <dependency>
      <groupId>org.apache.solr</groupId>
      <artifactId>solr</artifactId>
      <version>3.3.0</version>
      <type>war</type>
      <scope>tomcat</scope>
    </dependency>
  </dependencies>
  <build>
  ...
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>tomcat-maven-plugin</artifactId>
      <version>1.1</version>
      <configuration>
        <addContextWarDependencies>true</addContextWarDependencies>
        <systemProperties>
          <property.you.need>${example.property.yours}</property.you.need>
          <solr.solr.home>${solr.home}</solr.solr.home>
        </systemProperties>
      </configuration>
    </plugin>
    ...
  </build>
</project>

その後、Solrに到達できます。

http://localhost:8080/solr/admin

とあなたのアプリケーション

http://localhost:8080/your-app-id/
于 2012-07-03T07:44:42.520 に答える