一. 下载GlassFish
截止我写这篇文章时(20161009),GlassFish 4.1.1在处理Json会报空指针错误。
这个原因已被官方发现,将在下一版纠正。详情可以去Github上搜索。
所以建议各位在学习使用GlassFish时使用4.1.0版本,甚至是4.0.0版本。
建议下载图中的文件。
点我下载
![](https://i-blog.csdnimg.cn/blog_migrate/153e1a7acafedf0825b305ea7d3f169c.webp?x-image-process=image/format,png)
二. 配置Domain
1. 新增Domain
Windows 下,解压 ZIP 包到X:\glassfish3下,Unix/FreeBSD解压至 /usr/local/glassfish3 目录下
,Windows
进入
GlassFish
的
bin
目录运行
asadmin
,
FreeBSD
下运行
./asadmin
,进入GlassFish控制台,Windows 和 FreeBSD 的 asadmin 的进入只是形式的不同,本质没区别。
# 创建一个domain (ZIP 解压开,已经默认有一个 domain1),另:在修改了管理员名称后会提示设置密码,否则会略过设置密码。
create-domain domain1
# 删除一个domain,若有文件需要备份删除前请检查清楚,因为整个 domain 目录会被直接端掉,而且没有回收站。
delete-domain domain1
# 启动一个domain
start-domain domain1
# 停止一个domain
stop-domain domain1
![](https://i-blog.csdnimg.cn/blog_migrate/e56cccdb5bc85f5fe1279fd3ffb5711a.webp?x-image-process=image/format,png)
默认GlassFish只有domain1,domain2是我复制了一份domain1,然后更改文件夹名称为domain2的。
只复制domain1文件夹是不行的,还需要更改domain配置。
![](https://i-blog.csdnimg.cn/blog_migrate/b6876c8b0a247f4861a5a9237271332a.webp?x-image-process=image/format,png)
用文本编辑器打开这个文件。
查找domain1,更改为domain2即可。主要更改以下两个位置。
![](https://i-blog.csdnimg.cn/blog_migrate/48090193eed18666c5ecabe3ffebfab7.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/2bd3d16375a312fdede99b21926d66d5.webp?x-image-process=image/format,png)
如果还想更改默认端口号,那就查找8080,更改你想要的端口,比如80
![](https://i-blog.csdnimg.cn/blog_migrate/d9a64632dfa7c94a5ef0a1f0b5bd542e.webp?x-image-process=image/format,png)
改完配置后保存文件即可。
另一种办法是进WEB页面进行配置。
http://localhost:4848/ (默认管理端口4848)
![](https://i-blog.csdnimg.cn/blog_migrate/dff5bec9db4fca4e2ea2e759086dd5b8.webp?x-image-process=image/format,png)
2. 启动GlassFish
- 进入GlassFish目录
![](https://i-blog.csdnimg.cn/blog_migrate/ea4bf610d642c00bd9cf391f97d4681f.webp?x-image-process=image/format,png)
- 启动domain
![](https://i-blog.csdnimg.cn/blog_migrate/fac45781e082c1bd13c7ccbca108afdf.webp?x-image-process=image/format,png)
- 关闭domain
![](https://i-blog.csdnimg.cn/blog_migrate/f66859220ef6a7bf5af1a6a6e8ee9cc5.webp?x-image-process=image/format,png)
三. 部署WebApplication
1. Web部署
- 打开管理页面
- 选择部署应用
![](https://i-blog.csdnimg.cn/blog_migrate/1e37c0f2752e3809fa730fee8ca221d0.webp?x-image-process=image/format,png)
- 上传应用
![](https://i-blog.csdnimg.cn/blog_migrate/801e6f1c6b392ee2ae97e1e7259e7bfc.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/fc34a6ba225f44db74a0a94ee4f5e3d7.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/5b2bfdbe12018d25e8f8bcd5c6aa92c2.webp?x-image-process=image/format,png)
点击OK就完成部署了。
![](https://i-blog.csdnimg.cn/blog_migrate/a993fcb706805e91a5013da078a360d1.webp?x-image-process=image/format,png)
- 测试应用
点击上图中的Launch来启动应用
![](https://i-blog.csdnimg.cn/blog_migrate/dbd7f5005f34bbb035f046051beeb1ff.webp?x-image-process=image/format,png)
然后就可以访问网址来测试了。例如:
2. 自动部署(AutoDeploy)
简单到不能再简单,将项目中生成的artifacts目录下的文件夹拷贝到domains/domain2/autodeploy即可
![](https://i-blog.csdnimg.cn/blog_migrate/279259c3a6767952b50cb16d3665b424.webp?x-image-process=image/format,png)
3. 更新部署
- Web更新部署
![](https://i-blog.csdnimg.cn/blog_migrate/8579579f58af18f9acdd0f7d90db14a4.webp?x-image-process=image/format,png)
同第一次部署,类似,不再赘述。
- 自动更新部署
还是将项目生成的artifacts目录下的文件夹拷贝到domains/domain2/autodeploy。
然后删除 autodeploy.autodeploystatus 下和你项目 artifacts 名称相同的文件。
稍后GlassFish会自动重新部署这个应用。简单吧。
![](https://i-blog.csdnimg.cn/blog_migrate/8d8418964d9e16302ad78daf171d1750.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/0b662b1c26c2ab3a671d163ca8aa9d60.webp?x-image-process=image/format,png)
三. 自定义地址
在web\WEB-INF文件夹下新建 glassfish-web.xml文件。
![](https://i-blog.csdnimg.cn/blog_migrate/224efc6b487463b8fe7c6e179f6dc18e.webp?x-image-process=image/format,png)
在里面填写内容:
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTDGlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"><glassfish-web-app> <context-root>/restdemo</context-root></glassfish-web-app>
以后访问地址就变为:
http://127.0.0.1:8080/restdemo/hello
不受artifacts名称的影响了。
四.报错排查
1. WELD-001414
org.jboss.weld.exceptions.DeploymentException: WELD-001414 Bean name is ambiguous. Name JerseyClassAnalyzer resolves to beans: [Managed Bean [class org.glassfish.jersey.internal.inject.JerseyClassAnalyzer] with qualifiers [@Default @Named @Any], Managed Bean [class org.glassfish.jersey.internal.inject.JerseyClassAnalyzer] with qualifiers [@Default @Named @Any]]
看到这个错误,我是一脸懵逼啊。怎搞的,按照新建向导一步一步创建的项目啊,连Hello World也跑不起来。。。
嗯,回想一下,创建向导。。问题就出现在创建项目的引导页上。
![](https://i-blog.csdnimg.cn/blog_migrate/598d61bdf8de8501bc773c876b9f597c.webp?x-image-process=image/format,png)
按照上图设置,千万不要选Download,否则呵呵不断的报上面懵逼的错误代码。。。。。
(白白浪费了我一个下午,就为了一个Hello World啊)。
作者:Thresh0ld
链接:http://www.jianshu.com/p/a454ab6a7fd9