1. 首页 > 软件安装教程 > 正文

GlassFish安装配置-GlassFish中间件安装配置_升级迁移详细过程

1. GlassFish概述与环境规划

GlassFish是一个开源的Java EE应用服务器,由Eclipse基金会维护。它提供了完整的Java EE规范实现,包括EJB、JPA、JMS、JAX-RS等。GlassFish以其轻量级和易于配置的特点,广泛应用于企业级Java应用开发。更多学习教程www.fgedu.net.cn

1.1 GlassFish版本说明

GlassFish目前主要版本为GlassFish 7,支持Jakarta EE 10规范。本教程以GlassFish 7为例进行详细讲解。

# 查看GlassFish版本
$ /opt/glassfish7/bin/asadmin version
Version = GlassFish Server Open Source Edition 7.0.9 (build 1)
Command version executed successfully.

# 查看服务器状态
$ /opt/glassfish7/bin/asadmin list-domains
Name: domain1 Status: Running
Command list-domains executed successfully.

# 查看详细版本信息
$ /opt/glassfish7/bin/asadmin version –verbose

GlassFish Server Open Source Edition 7.0.9 (build 1)

Version history:
Initial version: GlassFish Server Open Source Edition 7.0.0
Build number: 1
Build date: 2024-03-15

1.2 环境规划

本次安装环境规划如下:

主机名:fgedudb01.fgedu.net.cn
IP地址:192.168.1.51
GlassFish管理端口:4848
HTTP端口:8080
HTTPS端口:8181
IIOP端口:3700
JMX端口:8686
安装目录:/opt/glassfish7
数据目录:/data/glassfish
日志目录:/var/log/glassfish
备份目录:/backup/glassfish

Java环境:
JDK版本:OpenJDK 17
JAVA_HOME:/usr/lib/jvm/java-17
JVM堆大小:2GB

1.3 GlassFish核心特性

主要特点:
1. Jakarta EE 10支持:完整的Jakarta EE规范实现
2. 轻量级架构:启动快速,资源占用少
3. 模块化设计:基于OSGi的模块化架构
4. 易于管理:提供Web控制台和命令行工具
5. 高可用性:支持集群和负载均衡
6. 安全性:内置安全框架和SSL/TLS支持
7. 监控功能:提供JMX监控和性能统计
8. 开源免费:Eclipse基金会维护的开源项目

2. 硬件环境要求与检查

在安装GlassFish之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com

2.1 最低硬件要求

最低配置:
CPU:2核心
内存:2GB
磁盘:10GB

推荐配置(生产环境):
CPU:4核心以上
内存:4GB以上
磁盘:50GB以上

大型应用配置:
CPU:8核心以上
内存:8GB以上
磁盘:100GB以上SSD

2.2 Java环境检查

# 检查JDK版本
$ java -version
openjdk version “17.0.9” 9.0.4
OpenJDK Runtime Environment (Temurin-17.0.9+9) (build 17.0.9+9)
OpenJDK 64-Bit Server VM (build 17.0.9+9, mixed mode, sharing)

# 检查JAVA_HOME
$ echo $JAVA_HOME
/usr/lib/jvm/java-17

# 查看Java安装路径
$ which java
/usr/bin/java

# 查看所有已安装的Java版本
$ update-alternatives –list java
/usr/lib/jvm/java-17-openjdk.x86_64/bin/java
/usr/lib/jvm/java-11-openjdk.x86_64/bin/java

# 设置默认Java版本
# update-alternatives –config java
There are 2 programs which provide ‘java’.
Selection Command
———————————————–
*+ 1 /usr/lib/jvm/java-17-openjdk.x86_64/bin/java
2 /usr/lib/jvm/java-11-openjdk.x86_64/bin/java
Enter to keep the current selection[+], or type selection number: 1

2.3 系统环境检查

# 检查操作系统版本
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)

# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 15Gi 1.0Gi 13Gi 256Mi 1.0Gi 14Gi
Swap: 7Gi 0B 7Gi

# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 100G 5.0G 95G 5% /
/dev/mapper/vg_data-lv_data 500G 50G 450G 10% /data

# 检查防火墙状态
# systemctl status firewalld
firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running)

3. GlassFish安装步骤

本节详细介绍GlassFish 7的安装过程。学习交流加群风哥QQ113257174

3.1 安装OpenJDK

# 安装OpenJDK 17
# dnf install -y java-17-openjdk java-17-openjdk-devel

# 验证安装
$ java -version
openjdk version “17.0.9” 9.0.4
OpenJDK Runtime Environment (Temurin-17.0.9+9) (build 17.0.9+9)
OpenJDK 64-Bit Server VM (build 17.0.9+9, mixed mode, sharing)

# 设置JAVA_HOME
# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH

# 使配置生效
# source /etc/profile.d/java.sh
$ echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk

3.2 创建用户和目录

# 创建glassfish用户
# groupadd -g 1003 glassfish
# useradd -u 1003 -g glassfish -d /opt/glassfish7 -s /bin/bash glassfish
# passwd glassfish

# 创建目录
# mkdir -p /opt/glassfish7
# mkdir -p /data/glassfish/{domains,applications,logs}
# mkdir -p /var/log/glassfish
# mkdir -p /backup/glassfish

# 设置目录权限
# chown -R glassfish:glassfish /opt/glassfish7
# chown -R glassfish:glassfish /data/glassfish
# chown -R glassfish:glassfish /var/log/glassfish
# chown -R glassfish:glassfish /backup/glassfish

3.3 下载并安装GlassFish

# 切换到安装目录
# cd /usr/local/src

# 下载GlassFish 7
# wget https://download.eclipse.org/ee4j/glassfish/glassfish-7.0.9.zip

# 解压安装
# unzip -q glassfish-7.0.9.zip -d /opt/

# 设置目录权限
# chown -R glassfish:glassfish /opt/glassfish7

# 验证安装
$ ls -la /opt/glassfish7/
总用量 0
drwxr-xr-x. 3 glassfish glassfish 4096 4月 4 10:00 bin
drwxr-xr-x. 2 glassfish glassfish 4096 4月 4 10:00 glassfish
drwxr-xr-x. 2 glassfish glassfish 4096 4月 4 10:00 javadb
drwxr-xr-x. 2 glassfish glassfish 4096 4月 4 10:00 mq
drwxr-xr-x. 2 glassfish glassfish 4096 4月 4 10:00 pkg

# 查看GlassFish目录结构
$ ls -la /opt/glassfish7/glassfish/
总用量 0
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 bin
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 config
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 docs
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 domains
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 lib
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 modules

3.4 配置GlassFish环境

# 配置glassfish用户环境变量
$ vi ~/.bash_profile

# 添加以下内容
export GLASSFISH_HOME=/opt/glassfish7
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$GLASSFISH_HOME/bin:$JAVA_HOME/bin:$PATH

# 使配置生效
$ source ~/.bash_profile

# 验证环境变量
$ echo $GLASSFISH_HOME
/opt/glassfish7

# 查看asadmin命令
$ which asadmin
/opt/glassfish7/bin/asadmin

# 查看asadmin帮助
$ asadmin –help

3.5 创建域并启动服务器

# 创建新域
$ asadmin create-domain –domaindir /data/glassfish/domains –adminport 4848 –instanceport 8080 fgedu-domain

# 输出示例:
Using port 4848 for Admin.
Using port 8080 for HTTP Instance.
Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8181 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Using default port 8686 for JMX_ADMIN.
Using default port 6666 for OSGI_SHELL.
Using default port 9009 for JAVA_DEBUGGER.
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=fgedudb01.fgedu.net.cn,OU=GlassFish,O=Eclipse Foundation,L=Ottawa,ST=Ontario,C=CA]
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=fgedudb01.fgedu.net.cn-instance,OU=GlassFish,O=Eclipse Foundation,L=Ottawa,ST=Ontario,C=CA]
Domain fgedu-domain created.
Domain fgedu-domain admin port is 4848.
Domain fgedu-domain allows admin login as user “admin” with no password.
Command create-domain executed successfully.

# 启动域
$ asadmin start-domain fgedu-domain

# 输出示例:
Waiting for fgedu-domain to start …………………………….
Successfully started the domain : fgedu-domain
domain Location: /data/glassfish/domains/fgedu-domain
Log File: /data/glassfish/domains/fgedu-domain/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.

# 查看域状态
$ asadmin list-domains
Name: fgedu-domain Status: Running
Command list-domains executed successfully.

3.6 配置管理员密码

# 修改管理员密码
$ asadmin change-admin-password

# 输出示例:
Enter admin user name [default: admin]> admin
Enter the admin password>
Enter the new admin password> fgedu123
Enter the new admin password again> fgedu123
Command change-admin-password executed successfully.

# 启用安全管理员
$ asadmin enable-secure-admin

# 输出示例:
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.

# 重启域
$ asadmin restart-domain fgedu-domain

# 配置防火墙
# firewall-cmd –permanent –add-port=4848/tcp
success
# firewall-cmd –permanent –add-port=8080/tcp
success
# firewall-cmd –permanent –add-port=8181/tcp
success
# firewall-cmd –reload
success

# 访问管理控制台
# 浏览器访问: https://192.168.1.51:4848
# 使用刚才设置的管理员密码登录

风哥提示:GlassFish 7要求Java 11或更高版本。生产环境建议使用Java 17 LTS版本。默认情况下管理员密码为空,建议立即设置强密码。

4. GlassFish参数配置

GlassFish参数配置是性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com

4.1 JVM参数配置

# 创建JVM选项
$ asadmin create-jvm-options –target fgedu-domain “-Xms2g”
$ asadmin create-jvm-options –target fgedu-domain “-Xmx4g”
$ asadmin create-jvm-options –target fgedu-domain “-XX:+UseG1GC”
$ asadmin create-jvm-options –target fgedu-domain “-XX:MaxGCPauseMillis=200”
$ asadmin create-jvm-options –target fgedu-domain “-XX:+HeapDumpOnOutOfMemoryError”
$ asadmin create-jvm-options –target fgedu-domain “-XX:HeapDumpPath=/var/log/glassfish/heapdump.hprof”

# 查看JVM选项
$ asadmin list-jvm-options

# 输出示例:
-server
-Xms2g
-Xmx4g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/glassfish/heapdump.hprof
-Djava.awt.headless=true
-Djdk.corba.allowOutputStreamSubclass=true
-Djavax.xml.accessExternalSchema=all
Command list-jvm-options executed successfully.

# 重启域使配置生效
$ asadmin restart-domain fgedu-domain

4.2 线程池配置

# 创建线程池
$ asadmin create-threadpool –target fgedu-domain –maxthreadpoolsize 50 –minthreadpoolsize 10 –idletimeout 900 fgedu-thread-pool

# 输出示例:
Thread pool fgedu-thread-pool created.
Command create-threadpool executed successfully.

# 查看线程池
$ asadmin list-threadpools

# 输出示例:
admin-thread-pool
http-thread-pool
fgedu-thread-pool
Command list-threadpools executed successfully.

# 配置HTTP服务使用自定义线程池
$ asadmin set configs.config.server-config.network-config.network-listeners.network-listener.http-listener-1.thread-pool=fgedu-thread-pool

# 输出示例:
Command set executed successfully.

4.3 数据源配置

# 创建连接池
$ asadmin create-jdbc-connection-pool \
–datasourceclassname org.postgresql.ds.PGSimpleDataSource \
–restype javax.sql.DataSource \
–property user=fgedu:password=fgedu123:servername=192.168.1.51:portnumber=5432:databasename=fgedudb \
FgeDuPool

# 输出示例:
JDBC connection pool FgeDuPool created successfully.
Command create-jdbc-connection-pool executed successfully.

# 验证连接池
$ asadmin ping-connection-pool FgeDuPool

# 输出示例:
Command ping-connection-pool executed successfully.

# 创建JNDI资源
$ asadmin create-jdbc-resource –connectionpoolid FgeDuPool –enabled=true jdbc/FgeDuDS

# 输出示例:
JDBC resource jdbc/FgeDuDS created successfully.
Command create-jdbc-resource executed successfully.

# 查看数据源
$ asadmin list-jdbc-resources

# 输出示例:
jdbc/__TimerPool
jdbc/__default
jdbc/FgeDuDS
Command list-jdbc-resources executed successfully.

生产环境建议:根据应用并发量和数据库性能合理配置连接池大小。建议设置合理的空闲超时时间,及时释放连接。

5. 应用部署

GlassFish支持多种应用部署方式,本节介绍常用的部署方法。from:www.itpux.com

5.1 部署WAR应用

# 方式一:使用asadmin部署
$ asadmin deploy /tmp/fgedu-web.war

# 输出示例:
Application deployed with name fgedu-web.
Command deploy executed successfully.

# 指定上下文路径部署
$ asadmin deploy –contextroot /fgedu /tmp/fgedu-web.war

# 输出示例:
Application deployed with name fgedu-web.
Command deploy executed successfully.

# 方式二:通过管理控制台部署
# 浏览器访问: https://192.168.1.51:4848
# 选择”Applications” -> “Deploy” -> 上传WAR文件

# 方式三:通过autodeploy目录部署
$ cp /tmp/fgedu-web.war /data/glassfish/domains/fgedu-domain/autodeploy/

# 查看部署状态
$ ls -la /data/glassfish/domains/fgedu-domain/autodeploy/
fgedu-web.war
fgedu-web.war_deployed

# 查看已部署的应用
$ asadmin list-applications

# 输出示例:
fgedu-web
Command list-applications executed successfully.

5.2 部署EAR应用

# 部署EAR应用
$ asadmin deploy /tmp/fgedu-app.ear

# 输出示例:
Application deployed with name fgedu-app.
Command deploy executed successfully.

# 查看应用详情
$ asadmin show-component-status fgedu-app

# 输出示例:
Status of fgedu-app is enabled.
Command show-component-status executed successfully.

# 启用/禁用应用
$ asadmin disable fgedu-app
$ asadmin enable fgedu-app

5.3 取消部署

# 取消部署应用
$ asadmin undeploy fgedu-web

# 输出示例:
Command undeploy executed successfully.

# 或者删除autodeploy目录中的文件
$ rm /data/glassfish/domains/fgedu-domain/autodeploy/fgedu-web.war
$ rm -f /data/glassfish/domains/fgedu-domain/autodeploy/fgedu-web.war_deployed

# 查看部署历史
$ asadmin list-applications –long

# 输出示例:
NAME TYPE STATUS
fgedu-app ear enabled
fgedu-web war enabled
Command list-applications executed successfully.

6. 集群配置

GlassFish支持集群部署,提供高可用性和负载均衡能力。更多学习教程www.fgedu.net.cn

6.1 创建集群

# 创建集群
$ asadmin create-cluster fgedu-cluster

# 输出示例:
Cluster fgedu-cluster created.
Command create-cluster executed successfully.

# 创建集群实例
$ asadmin create-local-instance –cluster fgedu-cluster –node localhost-domain1 –systemproperties HTTP_LISTENER_PORT=28080:HTTP_SSL_LISTENER_PORT=28181 fgedu-instance-1

# 输出示例:
Rendezvoused with DAS on localhost:4848.
Port Assignments for server instance fgedu-instance-1:
JMS_PROVIDER_PORT=27676
HTTP_LISTENER_PORT=28080
ASADMIN_LISTENER_PORT=24848
IIOP_SSL_LISTENER_PORT=23820
IIOP_LISTENER_PORT=23700
JMX_SYSTEM_CONNECTOR_PORT=28686
IIOP_SSL_MUTUALAUTH_PORT=23920
HTTP_SSL_LISTENER_PORT=28181
Command create-local-instance executed successfully.

# 创建第二个实例
$ asadmin create-local-instance –cluster fgedu-cluster –node localhost-domain1 –systemproperties HTTP_LISTENER_PORT=28081:HTTP_SSL_LISTENER_PORT=28182 fgedu-instance-2

# 查看集群状态
$ asadmin list-clusters

# 输出示例:
fgedu-cluster running
Command list-clusters executed successfully.

6.2 启动集群

# 启动集群
$ asadmin start-cluster fgedu-cluster

# 输出示例:
The command start-cluster executed successfully for: fgedu-instance-1 fgedu-instance-2

# 查看实例状态
$ asadmin list-instances

# 输出示例:
fgedu-instance-1 running
fgedu-instance-2 running
Command list-instances executed successfully.

# 停止集群
$ asadmin stop-cluster fgedu-cluster

# 删除集群
$ asadmin delete-cluster fgedu-cluster

6.3 配置负载均衡

# 创建负载均衡器
$ asadmin create-http-lb –devicehost 192.168.1.51 –deviceport 80 fgedu-lb

# 输出示例:
HTTP load balancer fgedu-lb created.
Command create-http-lb executed successfully.

# 将集群添加到负载均衡器
$ asadmin create-http-lb-ref –config fgedu-lb-config fgedu-cluster

# 输出示例:
Command create-http-lb-ref executed successfully.

# 启用负载均衡器
$ asadmin enable-http-lb-server fgedu-cluster

# 输出示例:
Command enable-http-lb-server executed successfully.

# 导出负载均衡器配置
$ asadmin export-http-lb-config –config fgedu-lb-config /tmp/loadbalancer.xml

# 输出示例:
Command export-http-lb-config executed successfully.

风哥提示:GlassFish集群使用Grizzly框架进行通信。生产环境建议配置可靠的网络环境,确保集群稳定性。

7. 安全配置

GlassFish提供了完善的安全框架,本节介绍常用的安全配置方法。学习交流加群风哥微信: itpux-com

7.1 配置SSL/TLS

# 生成自签名证书
$ keytool -genkeypair -alias s1as -keyalg RSA -keysize 2048 -keystore /data/glassfish/domains/fgedu-domain/config/keystore.jks -validity 365 -storepass changeit -keypass changeit -dname “CN=fgedudb01.fgedu.net.cn,OU=IT,O=FGedu,L=BJ,ST=BJ,C=CN”

# 配置HTTPS
$ asadmin set configs.config.server-config.network-config.network-listeners.network-listener.http-listener-2.enabled=true

# 输出示例:
Command set executed successfully.

# 配置SSL证书
$ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.cert-nickname=s1as

# 输出示例:
Command set executed successfully.

# 重启域
$ asadmin restart-domain fgedu-domain

# 测试HTTPS访问
$ curl -k https://192.168.1.51:8181

7.2 配置安全域

# 创建安全域
$ asadmin create-auth-realm –classname com.sun.enterprise.security.auth.realm.file.FileRealm –property file=/data/glassfish/domains/fgedu-domain/config/fgedu-keyfile:jaas-context=fileRealm fgedu-realm

# 输出示例:
Auth realm fgedu-realm created.
Command create-auth-realm executed successfully.

# 创建用户
$ asadmin create-file-user –authrealmname fgedu-realm –groups fgedu-users fgedu-user

# 输出示例:
Enter the user password> fgedu123
Enter the user password again> fgedu123
Command create-file-user executed successfully.

# 查看安全域
$ asadmin list-auth-realms

# 输出示例:
admin-realm
file
certificate
fgedu-realm
Command list-auth-realms executed successfully.

7.3 配置访问控制

# 配置JDBC安全域
$ asadmin create-auth-realm –classname com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm –property datasource-jndi=jdbc/FgeDuDS:user-table=users:user-name-column=username:password-column=password:group-table=user_roles:group-name-column=role:jaas-context=jdbcRealm fgedu-jdbc-realm

# 输出示例:
Auth realm fgedu-jdbc-realm created.
Command create-auth-realm executed successfully.

# 配置应用安全
$ asadmin set applications.application.fgedu-web.module.fgedu-web.security-role-mapping.fgedu-users.principal=fgedu-user

# 输出示例:
Command set executed successfully.

生产环境建议:生产环境建议使用正式CA签发的SSL证书。定期更新证书和密码策略。

8. 监控与日志

GlassFish提供了完善的监控和日志功能,本节介绍常用的监控配置方法。更多学习教程公众号风哥教程itpux_com

8.1 日志配置

# 设置日志级别
$ asadmin set-log-levels javax.enterprise.system.core.security=INFO

# 输出示例:
Command set-log-levels executed successfully.

# 查看日志级别
$ asadmin list-log-levels

# 输出示例:
javax.enterprise.resource.corba INFO
javax.enterprise.resource.jta INFO
javax.enterprise.system.core.security INFO
Command list-log-levels executed successfully.

# 配置日志文件
$ asadmin set-log-attributes com.sun.enterprise.server.logging.GFFileHandler.file=/var/log/glassfish/server.log

# 输出示例:
Command set-log-attributes executed successfully.

# 轮转日志
$ asadmin rotate-log

# 输出示例:
Command rotate-log executed successfully.

8.2 启用监控

# 启用监控服务
$ asadmin set configs.config.server-config.monitoring-service.module-monitoring-levels.jvm=HIGH
$ asadmin set configs.config.server-config.monitoring-service.module-monitoring-levels.http-service=HIGH
$ asadmin set configs.config.server-config.monitoring-service.module-monitoring-levels.jdbc-connection-pool=HIGH

# 输出示例:
Command set executed successfully.

# 查看监控数据
$ asadmin get -m “server.jvm.memory.heap-used”

# 输出示例:
server.jvm.memory.heap-used=2147483648
Command get executed successfully.

# 查看HTTP服务监控
$ asadmin get -m “server.http-service.server.request.count200”

# 输出示例:
server.http-service.server.request.count200=1000
Command get executed successfully.

8.3 配置JMX监控

# 启用JMX
$ asadmin set configs.config.server-config.admin-service.jmx-connector.system.enabled=true

# 输出示例:
Command set executed successfully.

# 配置JMX端口
$ asadmin set configs.config.server-config.admin-service.jmx-connector.system.port=8686

# 输出示例:
Command set executed successfully.

# 重启域
$ asadmin restart-domain fgedu-domain

# 使用JConsole连接
$ jconsole service:jmx:rmi:///jndi/rmi://192.168.1.51:8686/jmxrmi

风哥提示:生产环境建议配置集中式日志收集,如ELK Stack。定期分析日志有助于发现潜在问题。

9. 升级与迁移

GlassFish升级和迁移是运维工作中的重要环节,需要仔细规划和执行。from:www.itpux.com

9.1 版本升级

# 检查当前版本
$ asadmin version
Version = GlassFish Server Open Source Edition 7.0.9 (build 1)

# 完整备份当前GlassFish
$ tar -czf /backup/glassfish/glassfish_backup_$(date +%Y%m%d).tar.gz /opt/glassfish7

# 备份域配置
$ asadmin backup-domain –domaindir /data/glassfish/domains fgedu-domain

# 输出示例:
Backed up domain at /data/glassfish/domains/fgedu-domain/backups/fgedu-domain_2026_04_04_v00001.zip
Command backup-domain executed successfully.

# 停止域
$ asadmin stop-domain fgedu-domain

# 下载新版本
# wget https://download.eclipse.org/ee4j/glassfish/glassfish-7.1.0.zip

# 解压新版本
# unzip -q glassfish-7.1.0.zip -d /opt/

# 迁移域配置
# cp -r /data/glassfish/domains /opt/glassfish7/glassfish/

# 更新软链接
# rm -f /opt/glassfish
# ln -s /opt/glassfish7 /opt/glassfish

# 启动域
$ asadmin start-domain fgedu-domain

# 验证版本
$ asadmin version
Version = GlassFish Server Open Source Edition 7.1.0 (build 1)

9.2 迁移到新服务器

# 在源服务器备份域
$ asadmin backup-domain –domaindir /data/glassfish/domains fgedu-domain

# 传输备份文件
$ scp /data/glassfish/domains/fgedu-domain/backups/fgedu-domain_*.zip new-server:/tmp/

# 在新服务器安装GlassFish
# 参见3.1-3.4节安装步骤

# 恢复域
$ asadmin restore-domain –domaindir /data/glassfish/domains /tmp/fgedu-domain_2026_04_04_v00001.zip

# 输出示例:
Restored the domain [fgedu-domain] at [/data/glassfish/domains/fgedu-domain]
Command restore-domain executed successfully.

# 启动域
$ asadmin start-domain fgedu-domain

# 验证迁移
$ asadmin list-applications

# 输出示例:
fgedu-web
fgedu-app
Command list-applications executed successfully.

生产环境建议:升级前必须进行完整备份。建议先在测试环境验证兼容性,确保应用正常运行。

10. 生产环境实战案例

本节提供一个完整的生产环境配置案例,帮助读者更好地理解GlassFish的实际应用。更多学习教程www.fgedu.net.cn

10.1 生产环境完整配置

# 生产环境GlassFish完整配置脚本

# 1. JVM参数配置
$ asadmin delete-jvm-options “-Xmx512m”
$ asadmin create-jvm-options “-Xms4g”
$ asadmin create-jvm-options “-Xmx8g”
$ asadmin create-jvm-options “-XX:+UseG1GC”
$ asadmin create-jvm-options “-XX:MaxGCPauseMillis=200”
$ asadmin create-jvm-options “-XX:+HeapDumpOnOutOfMemoryError”
$ asadmin create-jvm-options “-XX:HeapDumpPath=/var/log/glassfish/heapdump.hprof”
$ asadmin create-jvm-options “-XX:MetaspaceSize=256m”
$ asadmin create-jvm-options “-XX:MaxMetaspaceSize=512m”

# 2. 线程池配置
$ asadmin create-threadpool –target fgedu-domain –maxthreadpoolsize 100 –minthreadpoolsize 20 –idletimeout 900 fgedu-production-pool
$ asadmin set configs.config.server-config.network-config.network-listeners.network-listener.http-listener-1.thread-pool=fgedu-production-pool

# 3. 连接池配置
$ asadmin set resources.jdbc-connection-pool.FgeDuPool.steady-pool-size=10
$ asadmin set resources.jdbc-connection-pool.FgeDuPool.max-pool-size=50
$ asadmin set resources.jdbc-connection-pool.FgeDuPool.pool-resize-quantity=5
$ asadmin set resources.jdbc-connection-pool.FgeDuPool.idle-timeout-in-seconds=300

# 4. 创建启动脚本
$ vi /opt/glassfish7/bin/start-glassfish.sh

#!/bin/bash
GLASSFISH_HOME=/opt/glassfish7
export GLASSFISH_HOME

$GLASSFISH_HOME/bin/asadmin start-domain fgedu-domain

# 5. 创建systemd服务
$ vi /etc/systemd/system/glassfish.service

[Unit]
Description=GlassFish Server
After=network.target

[Service]
Type=forking
User=glassfish
Group=glassfish
ExecStart=/opt/glassfish7/bin/asadmin start-domain fgedu-domain
ExecStop=/opt/glassfish7/bin/asadmin stop-domain fgedu-domain
Restart=on-failure

[Install]
WantedBy=multi-user.target

# 启用服务
# systemctl enable glassfish
# systemctl start glassfish

10.2 健康检查配置

# 配置健康检查
$ asadmin set configs.config.server-config.health-check-service.enabled=true

# 输出示例:
Command set executed successfully.

# 配置健康检查项
$ asadmin set configs.config.server-config.health-check-service.checker.configuration.name=configuration-checker
$ asadmin set configs.config.server-config.health-check-service.checker.configuration.enabled=true
$ asadmin set configs.config.server-config.health-check-service.checker.configuration.time=10
$ asadmin set configs.config.server-config.health-check-service.checker.configuration.unit=SECONDS

# 查看健康检查状态
$ asadmin get-health

# 输出示例:
Health Check Status: GOOD
Command get-health executed successfully.

# 探测健康检查端点
$ curl http://192.168.1.51:8080/health
{
“status”: “UP”,
“checks”: [
{
“name”: “memory”,
“status”: “UP”
},
{
“name”: “cpu”,
“status”: “UP”
}
]
}

10.3 性能调优实战

# HTTP服务优化
$ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.max-connections=250
$ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.timeout-seconds=30
$ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.request-timeout-seconds=30

# 输出示例:
Command set executed successfully.

# 线程池优化
$ asadmin set configs.config.server-config.thread-pools.thread-pool.http-thread-pool.max-thread-pool-size=100
$ asadmin set configs.config.server-config.thread-pools.thread-pool.http-thread-pool.min-thread-pool-size=20

# 输出示例:
Command set executed successfully.

# EJB容器优化
$ asadmin set configs.config.server-config.ejb-container.property.disable-nonportable-jndi-names=true

# 输出示例:
Command set executed successfully.

# 重启域使配置生效
$ asadmin restart-domain fgedu-domain

# 查看性能指标
$ asadmin get -m “server.jvm.memory.heap-used”
$ asadmin get -m “server.jvm.memory.heap-committed”
$ asadmin get -m “server.http-service.server.request.count200”
$ asadmin get -m “server.http-service.server.request.count404”

风哥提示:GlassFish作为开源Java EE应用服务器,在轻量级和易用性方面表现出色。建议根据实际业务负载进行性能调优,避免过度配置。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息