一. 下载GlassFish
截止我写这篇文章时(20161009),GlassFish 4.1.1在处理Json会报空指针错误。
这个原因已被官方发现,将在下一版纠正。详情可以去Github上搜索。
所以建议各位在学习使用GlassFish时使用4.1.0版本,甚至是4.0.0版本。
建议下载图中的文件。点我下载
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM2NC8xNTNlMWE3YWNhZmVkZjA4MjViMzA1ZWE3ZDNmMTY5Yy5wbmc%3D.png?w=700)
二. 配置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
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzEzMC9lNTZjY2NkYjViYzg1ZjVmZTEyNzlmZDNmZmI1NzExYS5wbmc%3D.png?w=700)
默认GlassFish只有domain1,domain2是我复制了一份domain1,然后更改文件夹名称为domain2的。
只复制domain1文件夹是不行的,还需要更改domain配置。
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzY5MC9iNjg3NmM4YjBhMjQ3ZjQ4NjFhNWE5MjM3MjcxMzMyYS5wbmc%3D.png?w=700)
用文本编辑器打开这个文件。
查找domain1,更改为domain2即可。主要更改以下两个位置。
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI3MS80ODA5MDE5M2VlZDE4NjY2YzVlY2FiZTNmZmViZmFiNy5wbmc%3D.png?w=700)
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI2MS8yYmQzZDE2Mzc1YTMxMmZkZWRlOTliMjE5MjZkNjZkNS5wbmc%3D.png?w=700)
如果还想更改默认端口号,那就查找8080,更改你想要的端口,比如80
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzU1OC9kOWE2NDYzMmRmYTdjOTRhNWVmMGExZjBiNWJkNTQyZS5wbmc%3D.png?w=700)
改完配置后保存文件即可。
另一种办法是进WEB页面进行配置。http://localhost:4848/ (默认管理端口4848)
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE0NC9kZmY1YmVjOWRiNGZjYTRlMmVhMmU3NTkwODZkZDViOC5wbmc%3D.png?w=700)
2. 启动GlassFish
- 进入GlassFish目录
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUxOS9lYTRiZjYxMGQ2NDJjMDBiZDljZjM5MWY5N2Q0NjgxZi5wbmc%3D.png?w=700)
- 启动domain
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk1L2ZhYzQ1NzgxZTA4MmMxYmQxM2M3Y2NiY2ExMDhhZmRmLnBuZw%3D%3D.png?w=700)
- 关闭domain
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzU5Ny9mNjY4NTkyMjBlZjZhN2JmNWFmMWE2YTZlOGVlOWNjNS5wbmc%3D.png?w=700)
三. 部署WebApplication
1. Web部署
- 打开管理页面
- 选择部署应用
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM2OC8xZTM3YzBmMjc1MmUzODA5ZmE3MzBmZWU4Y2EyMjFkMC5wbmc%3D.png?w=700)
- 上传应用
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM2NC84MDFlNmYxYzZiMzkyZWUyYWU5N2UxZTcyNTllN2JmYy5wbmc%3D.png?w=700)
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxNS9mYzM0YTZiYTIyNWY0NGRiNzRhMGE5NGVlNGY1ZTNkNy5wbmc%3D.png?w=700)
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc3OC81YjJiZmRiZTEyMDE4ZDI1ZThmOGJjZDVjNmFhOTJjMi5wbmc%3D.png?w=700)
点击OK就完成部署了。
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQ0OS9hOTkzZmNiNzA2ODA1ZTkxYTUwMTNkYTA3OGEzNjBkMS5wbmc%3D.png?w=700)
- 测试应用
点击上图中的Launch来启动应用
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzU1OS9kYmQ3ZjUwMDVmMzRiYmIwMzVmMDQ2MDUxYmVlYjFmZi5wbmc%3D.png?w=700)
然后就可以访问网址来测试了。例如:
2. 自动部署(AutoDeploy)
简单到不能再简单,将项目中生成的artifacts目录下的文件夹拷贝到domains/domain2/autodeploy即可
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM2LzI3OTI1OWMzYTY3Njc5NTJiNTBjYjE2ZDM2NjViNDI0LnBuZw%3D%3D.png?w=700)
3. 更新部署
- Web更新部署
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIzNi84NTc5NTc5ZjU4YWYxOGY5YWNkZDBmN2Q5MGRiMTRhNC5wbmc%3D.png?w=700)
同第一次部署,类似,不再赘述。
- 自动更新部署
还是将项目生成的artifacts目录下的文件夹拷贝到domains/domain2/autodeploy。
然后删除 autodeploy.autodeploystatus 下和你项目 artifacts 名称相同的文件。
稍后GlassFish会自动重新部署这个应用。简单吧。
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzcyMC84ZDg0MTg5NjRkOWUxNjMwMmFkNzhkYWYxNzFkMTc1MC5wbmc%3D.png?w=700)
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIwMC8wYjY2MmIxYzI2YzJhYjNhNjcxZDE2M2NhOGFhOWQ2MC5wbmc%3D.png?w=700)
三. 自定义地址
在web\WEB-INF文件夹下新建 glassfish-web.xml文件。
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzMyNi8yMjRlZmM2YjQ4NzQ2M2I4ZmU3YzZlMTc5ZjZkYzE4ZS5wbmc%3D.png?w=700)
在里面填写内容:
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cDovL25vdGUueW91ZGFvLmNvbS95d3MvcmVzLzM4NjYvV0VCUkVTT1VSQ0VkZDhjNjAyODU5MjUzMGRlMzlkY2YzMWFiNmQ0NWEzMQ%3D%3D.jpg?w=700)
<!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
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cDovL25vdGUueW91ZGFvLmNvbS95d3MvcmVzLzM4NjgvV0VCUkVTT1VSQ0UzODIxZjNlNDNlODNmMzFiNjJkOGI2ZmEwNzgxOTAyNg%3D%3D.jpg?w=700)
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也跑不起来。。。
嗯,回想一下,创建向导。。问题就出现在创建项目的引导页上。
![glassfish基本配置(转载) glassfish基本配置(转载)](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc5Ni81OThkNjFiZGY4ZGU4NTAxYmM3NzNjODc2YjlmNTk3Yy5wbmc%3D.png?w=700)
按照上图设置,千万不要选Download,否则呵呵不断的报上面懵逼的错误代码。。。。。
(白白浪费了我一个下午,就为了一个Hello World啊)。
作者:Thresh0ld
链接:http://www.jianshu.com/p/a454ab6a7fd9