本文仅供本人在学习使用GlassFish中的学习笔记,如有错误,欢迎指正!
一. 下载GlassFish
http://download.java.net/glassfish/
截止我写这篇文章时(20161009),GlassFish 4.1.1在处理Json会报空指针错误。
这个原因已被官方发现,将在下一版纠正。详情可以去Github上搜索。
所以建议各位在学习使用GlassFish时使用4.1.0版本,甚至是4.0.0版本。
建议下载图中的文件。点我下载
二. 配置Domain
1. 新增Domain
domain.png默认GlassFish只有domain1,domain2是我复制了一份domain1,然后更改文件夹名称为domain2的。
只复制domain1文件夹是不行的,还需要更改domain配置。
domain_config.png用文本编辑器打开这个文件。
查找domain1,更改为domain2即可。主要更改以下两个位置。
如果还想更改默认端口号,那就查找8080,更改你想要的端口,比如80
Paste_Image.png改完配置后保存文件即可。
另一种办法是进WEB页面进行配置。http://localhost:4848/ (默认管理端口4848)
Paste_Image.png2. 启动GlassFish
-
进入GlassFish目录
Paste_Image.png -
启动domain
Paste_Image.png -
关闭domain
Paste_Image.png
三. 部署WebApplication
1. Web部署
- 打开管理页面
http://localhost:4848/ - 选择部署应用
- 上传应用
点击OK就完成部署了。
Paste_Image.png- 测试应用
点击上图中的Launch来启动应用
然后就可以访问网址来测试了。例如:
http://think-threshold:8080/RestfulDemo_war_exploded/hello
2. 自动部署(AutoDeploy)
简单到不能再简单,将项目中生成的artifacts目录下的文件夹拷贝到domains/domain2/autodeploy即可
Paste_Image.png3. 更新部署
-
Web更新部署
Paste_Image.png
同第一次部署,类似,不再赘述。
-
自动更新部署
还是将项目生成的artifacts目录下的文件夹拷贝到domains/domain2/autodeploy。
然后删除 autodeploy.autodeploystatus 下和你项目 artifacts 名称相同的文件。
稍后GlassFish会自动重新部署这个应用。简单吧。
三. 自定义地址
在web\WEB-INF文件夹下新建 glassfish-web.xml文件。
Paste_Image.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也跑不起来。。。
嗯,回想一下,创建向导。。问题就出现在创建项目的引导页上。
按照上图设置,千万不要选Download,否则呵呵不断的报上面懵逼的错误代码。。。。。
(白白浪费了我一个下午,就为了一个Hello World啊)。
关注我的公众号.jpg
网友评论