glassfish4是首个支持JavaEE 7的容器,即支持servlet3.1,于是使用glassfish4 maven插件测试,但是测试时一直不成功,接着参考oracle官网的一篇《GlassFish 4 beta and Maven Embedded Plugin》终于搞定。
没办法,切换到3.1.2.2插件,但是使用4.0-b86的内嵌容器,jar包巨大无比(差不多80多M),请耐心等待。。
具体配置如下:
<plugin>
<groupId>org.glassfish.embedded</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>3.1.2.2</version>
<configuration>
<port>9080</port>
<autoDelete>true</autoDelete>
<app>${project.build.directory}/${project.build.finalName}</app>
<contextRoot>${project.build.finalName}</contextRoot>
<name>${project.build.finalName}</name>
<serverID>embedded</serverID>
</configuration>
<dependencies>
<dependency>
<groupId>org.glassfish.main</groupId>
<artifactId>simple-glassfish-api</artifactId>
<version>4.0-b79</version>
</dependency>
<dependency>
<groupId>org.glassfish.main.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>4.0-b86</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
这样可以在maven clean package时运行glassfish。
另外,需要制定下载依赖的仓库
<pluginRepositories>
<pluginRepository>
<id>maven.java.net</id>
<name>Java.net Repository for Maven</name>
<url>https://maven.java.net/content/groups/promoted/</url>
</pluginRepository>
<pluginRepository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/glassfish/</url>
</pluginRepository>
</pluginRepositories>
单独使用glasshfish4容器测试时没有问题的。
最近在整理servlet3.x的一份学习示例,具体可参考我的github
https://github.com/zhangkaitao/servlet3-showcase
servlet3.1的新特性可以参考
https://github.com/zhangkaitao/servlet3-showcase/tree/master/chapter4-3_1