■前言
・初次接触glassfish,之前接触过 tomact(Apache),websphere(IBM)
■glassfish简介
・sun公司推测的一款web服务器,当然,现在已经是Oracle的了。
■glassfish常用命令
/glassfish4/glassfish/bin/
asadmin start-domain domain2
asadmin list-domains -l
asadmin stop-domain domain2
■【坑】
虽然,使用 「asadmin start-domain domain2」之后,显示正常执行了,
但是,使用 「asadmin list-domains -l」命令时,显示 domain2 is not running // 加上 -l 可以显示详细信息
这时,访问domain2中的APP,显示404,sever.log中有ERROR情报
其实,这个时候,glassfish的domain2并没有成功启动,
解决方法,重新「asadmin start-domain domain2」启动,多试几次,可以成功启动。
当端口被占用时,使用如下命令查找进程,并强制关闭
netstat -ano | find "4849"
taskkill /pid XXXX /F
■Linux操作时,注意点
======
1.启动的用户,一般不使用root用户启动
通常使用glassfish自己的用户来启动。
(使用root用户启动之后,一些文件会的所有中会变成root,
比如:
・domains/domain/config/domain.xml
・applications下 war解压生成的目录,也是root权限
要把这些用户的权限改回来,才能再次 使用 glassfish 用户正常启动)
2.注意查看log信息
比如出现500,直接查看server.log
3.数据库的连接配置是否正确
比如连接的 数据库 的 服务器,是否是当前环境的服务
4.是否有有已经写好的脚本
通过 root 用户,直接调用脚本,来实现glassfish的启动・停止操作。
// root 脚本中 sudo - glassfish
5.http Code
404:服务器无法找到对应资源 // 部署后的文件夹权限有问题时,会造成此问题
500:服务器内部错误 // 比如【数据库 不对 ; 或者数据密码不对】时,就会出现此问题
501:服务器不支持请求的函数
502:服务器暂时不可用,有时是为了防止发生系统过载
503:服务器正忙(web服务器不能处理HTTP请求,可能是临时超载或者是服务器进行维护) // domainN停止时
======
■目录结构
glassfish4
└glassfish
└bin
└asadmi
└domains
└domain1
└applications
└__internal
└ProjectName
└ProjectName.war
└ProjectName
└ProjectName_war
└WEB-INF
└classes
└リソース
└lib
└ProjectName.war
└autodeploy
└ProjectName.war // 要发布的war,放到这个位置
└ProjectName.war_deployed // 发布成功之后,会生成一个 【0】 size 的文件
└Logs
└server.log
↑ 启动之后,如果有500的错误,在这里查看!
└config
└ admin-keyfile
↑管理员用户和密码 (密码保存的内容是,密码的HASH值)
└ domain.xml
↑端口号等情报设定
domain2 一般默认为
8180 工程
4948 管理员
search (key-word) :network-listener、port
└domain2
└domainN
■注意点(命令行启动)
1. 使用「asadmin start-domain domain1」命令之前,确保环境变量path中,配置了jdk的bin
2.解压缩后,即可直接使用,但是目录里面不能带有中文。
3.目录不要过长,否则某些文件会因为路径过长,从而解压缩失败,从而在服务器启动时造成各种问题。
(建以直接在C盘根目录下解压)
以下内容与项目实际有关,仅供参考
ーーー
4.把服务器上运行的glassfish的内容直接压缩后,取到本地。(其他同事已经对应了。)
5.本次使用的安装包时,XXXXXX.tar.gz,看似是Linux下使用的东西,
在win10的C盘下解压后,可以正常使用。
(解压后的bin文件夹中,有bat文件,说明windows 系统 应该可以使用)
6.解压后自带的 domain1 可以正常使用
ーーー
7.不能删除Domain1 !!!
( 目录结构的 applications 中是有内容的,比如 重要的控制台,
出现:ThemeConfigurationException 异常
这里面的内容,应该就是异常信息中所说的: 「主题 theme」)
----------------
如果删除 domain1后,手动使用命令「asadmin create-domain domain1」建立domain1,
这种做法,虽然可以成功建立domain1,
使用 「asadmin start-domain domain1」命令行中,也能正常显示启动,
但是从网页「localhost:8484」进入控制台时,会是一直等待的状态,
从log中可以看到,说没有 「主题 theme」
----------------
8.使用管理者权限启动命令行后,再在命令行中执行命令
----------------
不使用管理者会有奇怪的问题发生,// 参照最上面【坑】相关的记述
比如,
虽然,使用 「asadmin start-domain domain2」,可以正常启动,
但是,使用 「asadmin list-domains -l」命令时,显示 domain2 is not running // 加上 -l 可以显示详细信息
使用 「asadmin stop-domain domain2」无法停止domain2,说domain2没有启动,
// 不使用管理员,也可以成功启动,但是有概率问题,不是每次都百分之百成功启动 !!!// 参照最上面【坑】相关的记述
----------------
■注意点(Eclipse中,glassfish插件行启动)
0.【参考】对象工程,外面再包一层EJB
【新規】
⇒【その他】
⇒【Java EE】
⇒【エンタープライズ・アプリケーション・プロジェクト】
(enterprise・Application・project)
1.本地数据库服务是否启动
(如果有多个数据库(比如 mysql1,mysql2),启动对象数据库是否正确)
2.在eclipse中,
移除 GlassFish服务器中的工程
3.clean工程
4.删除「domains\domainX\applications\」中已经发布的内容
5.在eclipse中,
GlassFish服务器中,添加要发布的工程
6.启动 GlassFish
7.【参考】GlassFish Server设定:自動公開しない (不自动公开)
8.【参考】GlassFish Server设定:time out 时间 :800秒
■相关命令
1.「asadmin start-domain domain2」 管理员端口号 4848
2.「asadmin stop-domain domain2」 管理员端口号 4948、运行web程序,是其他的端口号 (8180)
3.「asadmin list-domains domain2」
可以查看每个domain的启动状况。
==========
domain1 not runing
domain2 running // 注意,要使用admin在本地启动命令行,执行命令
// 否则,即使成功启动,这里还是显示not running
// 同时,http:localhost:4849 也无法正常进入,
要么是一直等待,要么是出http 500的错误
// 对应的端口也被一直占用(netstat -ano | find "4849")
// (taskkill /f /pid XXXX)
domain3 not runing
==========
---
■进入控制台
localhost:4848
「asadmin start-domain domain1」命令之后,会告诉你控制台的端口号,
不同的domain端口号是不相同的。
■发布并运行web服务(加载war)
前言,在eclipse中的操作,有管理者权限,正常启动eclipse即可
安装相应的插件
・glassfish的插件:Eclipse GlassFish Tools
・插件下载
https://download.eclipse.org/glassfish-tools/1.0.0/?d
https://download.eclipse.org/glassfish-tools/1.0.1/
・安装
Eclipse插件安装之,使用(已经下载的zip)安装包直接安装插件(例:glassfish 插件 plugin)_sun0322的博客-CSDN博客_eclipse安装zip插件
・sapphire的插件: Sapphire XML Editor Support //应该没有用,不安装也许能运行
【help】 ⇒ 【新規ソフトウェアのインストール】 ⇒【追加】
出来的对话框中,「位置」中,选择本地插件zip的保存路径,然后安装
方法1:
在控制台中进行操作。
注意: 端口号与控制台的端口号是不相同的。
这一点与tomcat不同,但是与 websphere类似
=== 控制台界面 start
Domain
Server(Admin Server)
。。。
Nodes
Applications ⇒ 选择web工程 (checkbox),点击「Deploy」
Licecycle Modules
。。。
===控制台界面 end
方法2:
■数据源配置
待续。。。
■课题解决
cannot Deploy [YourProjectName]
[YourProjectName] is not deployed
Step1.
外面再包一层 (tomcat不用,websphere也要包一层)
【新規】
⇒【その他】
⇒【Java EE】
⇒【エンタープライズ・アプリケーション・プロジェクト】
(enterprise・Application・project)
Step2.
在Eclipse中无法将应用程序部署到Glassfish 4.1 - IT屋-程序员软件开发技术分享社区
通过以下方式找到使用JAR归档进行部署:
右键单击eclipse服务器选项卡上的glassfish。然后,在新窗口中选择监控> 属性> Glassfish > 使用JAR存档进行部署。
即:Use JAR archiives for deployment(J)
(这里有两个复选框,上面的,复选框,也选中
最デプロイメントにまたがリセッションを保持(V))
Step3.
修改deploy的具体设置
右键点击工程
⇒デプロイメント・アセンブリ
只发布你想要发布的内容
step4.
修改glashfish的启动时间,修改到500秒左右。
step5.
确保 对应的端口已经关闭
比如domain2是 4948 端口
查看端口 netstat -ano | find "4948"
并得到pid,通过pid关闭进程
(taskkill /f /pid XXXX)
step6.
删除 glassfish 发布目录下面的 内容
domain2
└applications
└__internal //存放war包的目录
└XXXWeb // (step1 中建立工程的名字)
└XXXWeb.ear
└XXXXWeb // (step1 中建立工程的名字)
└TTTTWeb_war // 工程的名字
└TTTTWeb.war // 工程的名字
└WEB-INF
└ classes //根据 上述step3中的配置发布
└lib //根据 上述step3中的配置发布,是maven关联的jar包
---
step7.IE中,运行程序
http://localhost:8180/TTTTWeb // 工程的名字
但是,通过
http://localhost:4849
进入glassfish管理者画面时,报500的错误
---