http://weblogs.java.net/blog/arungupta/archive/2008/11/totd_56_simple.html
这篇文章主要介绍的是RESTful 中使用嵌入的glassfish配置web Service,而我这次带来的是则是目前新出的glassfishv3.0.1版本的嵌入式web应用程序.
使用嵌入式pom.xml则不需要maven-glassfish-plugin这个插件了,取而代之则使用maven-embedded-glassfish-plugin这个插件,本例子pom.xml如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.glassfish</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>3.0</version>
<configuration>
<app>${project.build.directory}/${build.finalName}.war</app>
<autoDelete>true</autoDelete>
<port>8080</port>
<contextRoot>SSH2</contextRoot>
</configuration>
</plugin>
</plugins>
<finalName>SSH2Maven</finalName>
</build>
一个比较完整的嵌入式pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
Line breaks in the following element are for readability purposes only
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.glassfish</groupId>
<artifactId>maven-glassfish-plugin-tester</artifactId>
<version>3.0-74b</version>
<name>Maven test</name>
<build>
<plugins>
<plugin>
<groupId>org.glassfish</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>3.0-74b</version>
<configuration>
<goalPrefix>embedded-glassfish</goalPrefix>
<app>test.war</app>
<port>8080</port>
<contextRoot>test</contextRoot>
<autoDelete>true</autoDelete>
</configuration>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<pluginRepositories>
<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>
</project>
更详细配置的请参考:设置maven环境
对于<configuration>标签配置说明如下:
<app>:你的web应用的war目录位置,可以自定义,或者可以通过m2eclipse中的package命令打成war包,后写输出的路径.
<autoDelete>:自动删除,默认为false,如果设为true的话则当服务器停止的时候会删除实例的根目录.
<port>:端口号,运行web应用的时候的端口口
<contextRoot>:应用的名字,相当于输入完地址栏后的目录地址,如:http://localhost:8080/test 地址中的test
对于嵌入式的glassfish运行命令跟之前的已安装好的glassfish的命令是不一样,主要的命令如下(中英对照):
embedded-glassfish:run Goal :(启动服务器并且部署该应用,如果你更改了该应用里面的内容,你可以重新部署,这个应用可以是一个已经打成war包的或者是一个目录,但是目录里面必须要包含一个应用程序.)This goal starts the server and deploys an application. You can redeploy if you change the application. The application can be a packaged archive or a directory that contains an exploded application.
embedded-glassfish:start Goal:(启动服务器,但是不能使用glassfish控制台功能)This goal starts the server.
embedded-glassfish:deploy Goal:(部署应用程序,如果你更改了该应用里面的内容,你可以重新部署,这个应用可以是一个已经打成war包的或者是一个目录,但是目录里面必须要包含一个应用程序,)This goal deploys an application. You can redeploy if you change the application. The application can be a packaged archive or a directory that contains an exploded application.
embedded-glassfish:undeploy Goal:(移除已经部署的应用)This goal undeploys an application
embedded-glassfish:stop Goal:(停止服务器)This goal stops the server.
对于以上命令都有其参数,每个命令使用的参数请参考:参数说明,另外附上另外一位对这些命令的说明:嵌入式glassfish功能说明
对于测试代码还是继续沿用之前的,地址:[使用心得]maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之jetty篇(二)
运行embedded-glassfish:run 命令(如何运行请参考:[使用心得]maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之glassfish篇(一)
),在Console控制台出现扫描信息(如图1:扫描信息),等待一段时间后最后会出现让你选择的信息(如图2:部署成功),按回车则会重新部署,按X则会退出当前应用,在浏览器地址栏输入http://localhost:8080/SSH2/会如果出现相应的信息(如图3:运行成功界面),则证明嵌入式glassfish运行成功,而且后台也会打印出查询的语句(如图4:查询语句).
注意:如果使用Struts的<s:debug>标签的话后台会出现报错,但是不影响使用,具体原因不明,目前正在查找当中,估计struts的实现方式跟glassfish有冲突,其他标签则无异常.
对于glassfish参考的文档比较多这里就不一一列出的,如何想更深一步了解嵌入式的glassfish详细教程可以查看oracle sun公司的文档,地址如下:
http://docs.sun.com/app/docs/doc/821-1208/gihus?l=en&a=view