从 cargo-maven2-plugin 以嵌入式模式启动 tomcat 的最简单方法是啥?

Posted

技术标签:

【中文标题】从 cargo-maven2-plugin 以嵌入式模式启动 tomcat 的最简单方法是啥?【英文标题】:What is the easiest way to start tomcat in embedded mode from the cargo-maven2-plugin?从 cargo-maven2-plugin 以嵌入式模式启动 tomcat 的最简单方法是什么? 【发布时间】:2008-10-01 01:53:02 【问题描述】:

我已将 tomcat:catalina:5.5.23 定义为 cargo 插件的依赖项,但是我仍然收到以下异常:

java.lang.ClassNotFoundException: org.apache.catalina.Connector
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)
at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255)
at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274)
at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.codehaus.cargo.container.tomcat.internal.Tomcat5xEmbedded.preloadEmbedded(Tomcat5xEmbedded.java:232)

看起来 RealmClassLoader 没有找到类,可能是由于 java.security.AccessController.doPrivileged 拒绝访问。

有没有人在 maven 中让 tomcat 以嵌入式模式运行?

【问题讨论】:

您介意发布您的 POM 的相关部分吗? cargo 配置和相关依赖项就足够了。 AFAIK,使用 tomcat 嵌入式实现的货物参考不多。这个实现是“最近”贡献的,只有 Jetty 在早期版本中嵌入了实现。您应该直接在 cargo dev 列表上提出您的问题。 【参考方案1】:

旁注: 你可以启动类似于tomcat的jetty。 (Servlet 将在 http://localhost:8080/artefact-name 提供)

mvn jetty6:run

你必须添加到你的 pom 中:

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty6-plugin</artifactId>
                <configuration>
                    <scanIntervalSeconds>5</scanIntervalSeconds>
                    <!--
                    <webXml>$basedir/WEB-INF/web.xml</webXml>
                    -->
                </configuration>
            </plugin>
         </plugins>
    </build>
</project>

【讨论】:

【参考方案2】:

还有一个tomcat maven插件:

http://mojo.codehaus.org/tomcat-maven-plugin/introduction.html

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>tomcat-maven-plugin</artifactId>
  </plugin>
</plugins>

在我的机器上,这会加载 tomcat 6。我不知道如何让它与 tomcat 5.5 一起工作

【讨论】:

以上是关于从 cargo-maven2-plugin 以嵌入式模式启动 tomcat 的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.2.3:run (default-cli) on project Mav

扩展 maven cargo 插件 jvmargs

cargo failed to finish deploying within the timeout period [120000]

如何为 Jetty 的 Maven Cargo 插件指定 jetty-env.xml 文件?

使用 cargo 插件在 payara 上部署

如何使用 Java 启动和停止 Tomcat 容器?