本来想打算先写一篇glassfish在eclipse下的使用的教程再写这篇文章的,但是maven的使用手册快完结了,所以先把关于glassfish在maven中的应用写完先,好了不多说了这次带来的是目前oracle sun 公司的应用服务器glassfish在m2eclipse中的应用,代码还是引用jetty中的SSH2的例子,glassfish版本采用glassfish v3.0.1版本,下载地址:
GlassFish Server Open Source Edition 3.0.1(glassfish免费开源版本):
完整版本:
简化版:
更多版本:https://glassfish.dev.java.net/downloads/3.0.1-final.html
Oracle GlassFish Server 3.0.1(glassfish收费版本,对Oracle有更好的支持):http://www.oracle.com/technology/products/glassfish/index.html
glassfish的好处的话非常多,就讲个简单的吧,就拿热部署来说,平常我们改完的类不可以马上应用,必须重启服务器,但是glassfish就不需要了,只是需要修改后保存,效果就可以马上展现到前台了,而且它有一个很好的管理平台,可以对ejb,war等进行管理跟部署,对jdbc的管理,而且它目前是唯一一个支持Javaee6.0的应用服务器.
一个基本的glassfish的配置如下:
<plugin> <groupId>org.glassfish.maven.plugin</groupId> <artifactId>maven-glassfish-plugin</artifactId> <version>2.2-SNAPSHOT</version> <configuration> <glassfishDirectory>${glassfish.home}</glassfishDirectory> <user>${domain.username}</user> <!-- <adminPassword>admin</adminPassword> --> <passwordFile>${glassfish.home}/domains/domain1/master-password</passwordFile> <debug>true</debug> <echo>true</echo> <domain> <name>domain1</name> <adminPort>4848</adminPort> </domain> <components> <component> <name>${project.artifactId}</name> <artifact>${project.build.directory}/${project.build.finalName}.war</artifact> </component> </components> </configuration> </plugin>
使用glassfish必须要求自定义<glassfishDirectory>,<user><passwordFile>或者<adminPassword>,<domain><components><debug><echo>这几个标签,对于这几个标签解释如下:
<configuration>:定义
<glassfishDirectory>:glassfish_home的目录,可以通过在settings.xml profiles中设置或者在这里指定
<user>:用户名,glassfish安装后会自动新建了一个域,domain1,用户名默认是admin,也可以通过settings.xml profiles中设置或者在这里指定
<adminPassword>:用户名密码,这个跟<passwordFile>是互相冲突的,两者只能选1,使用这个标签则要明文输入管理员登录密码,而且在glassfish启动的时候会自动生成一个tmp的文件进行读取
<passwordFile>:密码文件,指定新建域的密码文件存放位置,以domain1来说密码位置上存在domain1的根目录下的master-password.
<debug>:是否使用debug模式启动glassfish,使用debug模式启动可以查看中间使用的[Info]信息,可以跟echo一起使用
<echo>:是否以echo模式启动glassfish,使用echo模式启动则直接运行,除了最后出错信息跟一些必要的[Info]信息之外其余都不显示包括中间运行错误的信息.
<domain>:域
<name>:域名,指定当前项目使用那个域启动,这个域是跟<user>,<passwordFile>的内容对应的.
<adminPort>:控制台端口,一般是4848
<components>:组件,生成目录:
<component>组件
<name>:组件名称,一般默认使用project的artifactId,也就是project的文件名
<artifact>:生成指定文件的目录与文件类型,对于webapp的话则是webapp.
对于本例子的中的settings.xml中profiles的设置如下:
<properties> <glassfish.home>E:\JavaWorkingTools\Sun\Glassfish\glassfishv3\glassfish </glassfish.home> <domain.username>admin</domain.username> <domain.password>admin</domain.password> <domain.log.dir>E:\JavaWorkingTools\Sun\Glassfish\glassfishv3\glassfish\domains\domain1\logs </domain.log.dir> </properties>
<glassfish.home>:glassfish的安装目录
<domain.username>:用户名,默认admin
<domain.password>:用户密码,默认adminadmin,可以通过在控制台中修改跟<adminpassword>联系
<domain.log.dir>:glassfish日志记录
由于本例子采用了maven-glassfish-plugin的2.2的版本,由于在运行的时候插件会从远处的数据仓库下载,而在目前的远程服务器上是没有的,需要加入插件仓库,在pom.xml中加入以下内容:
<pluginRepositories> <pluginRepository> <id>ocean</id> <url>http://maven.ocean.net.au/snapshot</url> <releases> <enabled>false</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </pluginRepository> </pluginRepositories>
配置准备好了,至于代码请参照
对于maven中glassfish也有它的启动命令,它的命令分别如下(中英对照),对于每个命令的详细说明请点击该命令的连接:
如何在eclipse中运行glassfish命令请参照:
运行glassfish:deploy命令会发现需要把war部署到glassfish服务器上面,所以必须要把当前的项目打成war包,对项目使用package命令(如图1:运行package命令),将项目变成war的形式,然后再重新运行glassfish:deploy(如图2:部署信息)命令会看到一些信息
输入:http://localhost:8080/SSH2Maven/index.jsp,可以看到成功的内容如下图:
注意:使用maven-glassfish-plugin插件的时候必须要把安装盘符/glassfishv3/glassfish/bin/asadmin这个 文件移走,因为使用插件的时候会优先读取asadmin这个文件,而并不是读取asadmin.bat这个,使用那个的话会出现找不到文件或者不能运行的错误