如何将JSP2.1与Cargo maven插件和Jetty6x嵌入一起使用?
我有一个在Java6上使用JSP2.1、Servlets 2.5和JSTL1.2的webapp。我使用maven jetty插件6.1.1rc1进行测试,没有任何问题。从这个链接:,我了解到Jetty6将在JDK5+上选择JSP2.1,这很好 下面是应用程序war的my pom.xml中的相关部分:如何将JSP2.1与Cargo maven插件和Jetty6x嵌入一起使用?,jsp,jetty,cargo,Jsp,Jetty,Cargo,我有一个在Java6上使用JSP2.1、Servlets 2.5和JSTL1.2的webapp。我使用maven jetty插件6.1.1rc1进行测试,没有任何问题。从这个链接:,我了解到Jetty6将在JDK5+上选择JSP2.1,这很好 下面是应用程序war的my pom.xml中的相关部分: <!--servlet & javax--> <dependency> <groupId>javax.servle
<!--servlet & javax-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
和引起的错误:java.lang.NoSuchMethodError:javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;
位于org.apache.taglibs.standard.tag.common.core.SetSupport.doEndTag(SetSupport.java:140)
这是我的货物配置:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.0.1</version>
<configuration>
<container>
<containerId>jetty6x</containerId>
<type>embedded</type>
</container>
<configuration>
<deployables>
<deployable>
<groupId>groupId</groupId>
<artifactId>artifact</artifactId>
<type>war</type>
</deployable>
</deployables>
</configuration>
<wait>${cargo.wait}</wait>
</configuration>
<executions>
<execution>
<id>start-container</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop-container</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
org.codehaus.cargo
cargo-maven2-plugin
1.0.1
码头6X
嵌入的
groupId
人工制品
战争
${货物,等等}
启动容器
预集成测试
开始
停止容器
整合后测试
停止
cargo jetty6x集装箱也使用jetty的v6.1.1rc1,因此这一定与cargo使用jetty的方式有关。我知道cargo硬编码其容器依赖项的版本,而不是使用maven依赖项机制(可能是出于好的原因,jira->cargo-571)
所以我的问题是:有没有其他人能够使用JSP2.1来嵌入cargo和jetty 6x?有什么让它工作的建议吗
非常感谢任何帮助 好的,我想办法解决这个问题。货物邮寄列表中的这篇文章很有帮助: . 它描述了如何使用cargo定制容器的类路径,但是如果采用这种方法,则需要手动指定所有依赖项 我从货物来源中发现,jetty6x集装箱默认使用以下依赖项:
jetty6xDependencies.add(new Dependency("org.mortbay.jetty", "jsp-api-2.0", "6.1.1rc1"));
jetty6xDependencies.add(new Dependency("org.mortbay.jetty", "servlet-api-2.5", "6.1.1rc1"));
jetty6xDependencies.add(new Dependency("org.mortbay.jetty", "jetty", "6.1.1rc1"));
jetty6xDependencies.add(new Dependency("org.mortbay.jetty", "jetty-util", "6.1.1rc1"));
jetty6xDependencies.add(new Dependency("org.mortbay.jetty", "jetty-naming", "6.1.1rc1"));
jetty6xDependencies.add(new Dependency("org.mortbay.jetty", "jetty-plus", "6.1.1rc1"));
jetty6xDependencies.add(new Dependency("ant", "ant", "1.6.5"));
jetty6xDependencies.add(new Dependency("commons-el", "commons-el", "1.0"));
jetty6xDependencies.add(new Dependency("tomcat", "jasper-compiler", "5.5.15"));
jetty6xDependencies.add(new Dependency("tomcat", "jasper-runtime", "5.5.15"));
jetty6xDependencies.add(new Dependency("tomcat", "jasper-compiler-jdt","5.5.15"));
jetty6xDependencies.add(new Dependency("javax.mail", "mail", "1.4"));
jetty6xDependencies.add(new Dependency("javax.activation", "activation", "1.1"));
jetty6xDependencies.add(new Dependency("geronimo-spec", "geronimo-spec-jta", "1.0.1B-rc4"));
jetty6xDependencies.add(new Dependency("xerces", "xercesImpl","2.6.2"));
jetty6xDependencies.add(new Dependency("xerces", "xmlParserAPIs","2.6.2"));
jetty6xDependencies.add(new Dependency("commons-logging", "commons-logging","1.0.4"));
jetty6xDependencies.add(new Dependency("log4j", "log4j", "1.2.14"));
有问题的是tomcat,因为它们使用JSP2.0。因此,在设置类路径时,需要排除这些,并包括JSP-2.1,即
<dependencies>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jsp-2.1</artifactId>
<version>6.1.1rc1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>core</artifactId>
<version>3.1.1</version>
</dependency>
org.mortbay.jetty
jsp-2.1
6.1.1rc1
org.eclipse.jdt
核心
3.1.1
下面是整个配置:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.0.1</version>
<configuration>
<container>
<containerId>jjetty6x</containerId>
<type>embedded</type>
<implementation>
org.codehaus.cargo.container.jetty.Jetty6xEmbeddedLocalContainer
</implementation>
<timeout>500000</timeout>
<dependencies>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jsp-api-2.1</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xmlParserAPIs</artifactId>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</dependency>
<dependency>
<groupId>geronimo-spec</groupId>
<artifactId>geronimo-spec-jta</artifactId>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</dependency>
<!--replaced these:-->
<!--<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler</artifactId>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-runtime</artifactId>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler-jdt</artifactId>
</dependency>-->
<!--with this:-->
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jsp-2.1</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>core</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>servlet-api-2.5</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-naming</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-plus</artifactId>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
</dependency>
<dependency>
<groupId>commons-el</groupId>
<artifactId>commons-el</artifactId>
</dependency>
</dependencies>
</container>
<configuration>
<deployables>
<deployable>
<groupId>gruopId</groupId>
<artifactId>artifact</artifactId>
<type>war</type>
</deployable>
</deployables>
<implementation>
org.codehaus.cargo.container.jetty.Jetty6xEmbeddedStandaloneLocalConfiguration
</implementation>
</configuration>
<executions>
<execution>
<id>start-container</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop-container</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
org.codehaus.cargo
cargo-maven2-plugin
1.0.1
jjetty6x
嵌入的
org.codehaus.cargo.container.jetty.Jetty6xEmbeddedLocalContainer
500000
org.mortbay.jetty
jsp-api-2.1
log4j
log4j
公用记录
公用记录
薛西斯
xmlParserAPIs
薛西斯
干细胞移植
geronimo规范
geronimo规范jta
javax.activation
激活
javax.mail
邮件
org.mortbay.jetty
jsp-2.1
org.eclipse.jdt
核心
org.mortbay.jetty
servlet-api-2.5
org.mortbay.jetty
码头
org.mortbay.jetty
码头
org.mortbay.jetty
码头命名
org.mortbay.jetty
jetty plus
蚂蚁
蚂蚁
康姆斯艾尔酒店
康姆斯艾尔酒店
格鲁皮德
人工制品
战争
org.codehaus.cargo.container.jetty.jetty6xembeddedstandarolocalconfiguration
启动容器
预集成测试
开始
停止容器
整合后测试
停止
请注意,您需要两次指定所有依赖项—一次在插件中,一次作为项目依赖项。您可以从第一个代码片段中获得版本。您使用的org.mortbay.jetty:jsp-api-2.1的哪个版本?6.1.1rc1(取自pom.xml部分)现在我发现javax/el/ExpressionFactory存在类加载问题。您使用的是什么JDK?另外,你能把你所有的POM都贴在什么地方吗?你有什么特别的原因不想使用jetty7x集装箱吗?这直接适用于JSP2.1。
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.0.1</version>
<configuration>
<container>
<containerId>jjetty6x</containerId>
<type>embedded</type>
<implementation>
org.codehaus.cargo.container.jetty.Jetty6xEmbeddedLocalContainer
</implementation>
<timeout>500000</timeout>
<dependencies>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jsp-api-2.1</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xmlParserAPIs</artifactId>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</dependency>
<dependency>
<groupId>geronimo-spec</groupId>
<artifactId>geronimo-spec-jta</artifactId>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</dependency>
<!--replaced these:-->
<!--<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler</artifactId>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-runtime</artifactId>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler-jdt</artifactId>
</dependency>-->
<!--with this:-->
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jsp-2.1</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>core</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>servlet-api-2.5</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-naming</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-plus</artifactId>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
</dependency>
<dependency>
<groupId>commons-el</groupId>
<artifactId>commons-el</artifactId>
</dependency>
</dependencies>
</container>
<configuration>
<deployables>
<deployable>
<groupId>gruopId</groupId>
<artifactId>artifact</artifactId>
<type>war</type>
</deployable>
</deployables>
<implementation>
org.codehaus.cargo.container.jetty.Jetty6xEmbeddedStandaloneLocalConfiguration
</implementation>
</configuration>
<executions>
<execution>
<id>start-container</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop-container</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>