maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之glassfish篇(一)

时间:2022-02-09 13:54:05
 本来想打算先写一篇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免费开源版本):

完整版本:

Windows安装版本     zip版本

简化版:

Windows安装版本     zip版本

更多版本: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>


 

配置准备好了,至于代码请参照:maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之jetty篇(二)

对于maven中glassfish也有它的启动命令,它的命令分别如下(中英对照),对于每个命令的详细说明请点击该命令的连接:

  • glassfish:create-domain: (创建一个新的域,创建一个已存在的域会可能会导致已存在的被删除或者覆盖)Create a new Glassfish domain. (Creating an existing domain will cause it to be deleted and recreated.)
  • glassfish:start-domain:(启动一个已经存在的域,如果该域不存在则会创建) Start an existing Glassfish domain. (Starting a non-existent domain will cause it to be created.)
  • glassfish:deploy:(部署一个JavaEE应用到域中并且启动域,如果部署在一个不存在的域的话则会导致会创建一个新的域) Deploy JavaEE artifacts to a running domain. (Deploying to an inactive domain will cause it to be started and created if necessary.)
  • glassfish:redeploy:(重部署一个JavaEE应用并且启动域,先将当前部署状态冷却,变成未部署状态,然后重新进行热部署) Redeploy JavaEE artifacts to a running domain. (Cold redeployment by first callingundeploy and then deploy . Use deploy to effect a hot deployment.)
  • glassfish:undeploy: (运行域并且将JavaEE应用从部署中卸载)Undeploy JavaEE components from a running domain.
  • glassfish:stop-domain :(停止域运行)Stop a running Glassfish domain.
  • glassfish:delete-domain :(删除项目中所定义的的域)Delete an existing Glassfish domain.

如何在eclipse中运行glassfish命令请参照:maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之jetty篇(三)

运行glassfish:deploy命令会发现需要把war部署到glassfish服务器上面,所以必须要把当前的项目打成war包,对项目使用package命令(如图1:运行package命令),将项目变成war的形式,然后再重新运行glassfish:deploy(如图2:部署信息)命令会看到一些信息

 

maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之glassfish篇(一) 图1:运行package

maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之glassfish篇(一) 图2:部署信息

输入:http://localhost:8080/SSH2Maven/index.jsp,可以看到成功的内容如下图:

maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之glassfish篇(一)

注意:使用maven-glassfish-plugin插件的时候必须要把安装盘符/glassfishv3/glassfish/bin/asadmin这个 文件移走,因为使用插件的时候会优先读取asadmin这个文件,而并不是读取asadmin.bat这个,使用那个的话会出现找不到文件或者不能运行的错误