GlassFish 是 Java EE (現 Jakarta EE) 參考實作,與 NetBeans 深度整合,是開發與生產環境部署的優秀選擇。本文涵蓋 GlassFish v2/v3 經典版本的安裝、端口配置、三種部署方式、JDBC 連線池與資料源設定,並針對生產環境最佳實踐給出建議。
一、開發工具選型:NetBeans + GlassFish 黃金搭檔
- NetBeans 對 GlassFish 支援最完整 (專案建立、除錯、熱部署、Server Log 整合)。
- 版本對應:NetBeans 5.5.1 ↔ GlassFish v2 (穩定);NetBeans 6.x 早期版本較不穩;現代建議 NetBeans 12+ + GlassFish 6+ (Jakarta EE 9)。
二、GlassFish 安裝與基礎配置
1. 下載與安裝
# 下載 glassfish-installer.jar
java -Xmx256m -jar glassfish-installer.jar
# 接受授權條款後解壓至 glassfish/ 目錄
2. 核心配置 (setup.xml / asadmin)
關鍵端口與帳號預設值:
| 屬性 | 預設值 | 說明 |
| admin.port | 4848 | 管理主控台 HTTPS 端口 |
| instance.port | 8080 | HTTP 請求端口 (Web 應用訪問) |
| https.port | 8181 | HTTPS 端口 |
| admin.user | admin | 管理員帳號 |
| admin.password | adminadmin | 管理員密碼 (生產環境必須修改) |
| orb.port | 3700 | IIOP/RMI 端口 (EJB 遠端呼叫) |
| imq.port | 7676 | JMS Message Queue 端口 |
修改方式:編輯 setup.xml 對應 <property>,執行 ant -f setup.xml;或安裝後用 asadmin 熱修改。
3. 啟動/停止域
cd glassfish/bin
./asadmin start-domain domain1 # 預設域名
./asadmin stop-domain domain1
# 驗證: 瀏覽器開啟 https://localhost:8080
三、Web 應用部署三種方式
方式 1:自動部署目錄 (開發/測試最快)
cp myapp.war glassfish/domains/domain1/autodeploy/
# GlassFish 掃描到 .war/.ear 即自動部署,刪除檔案即解除部署
⚠ 僅適用開發環境,生產環境不建議 (無版本控制、無滾動更新、掃描間隔不可控)。
方式 2:asadmin 命令列 (腳本自動化/ CI/CD 首選)
# 部署
asadmin deploy --name myapp --contextroot /myapp /path/to/myapp.war
# 解除部署
asadmin undeploy myapp
# 列出已部署
asadmin list-applications
# 幫助
asadmin deploy --help
支援遠端部署:asadmin --host prod-server --port 4848 --user admin deploy ...
方式 3:管理主控台 GUI (圖形化、遠端操作、生產環境推薦)
- 開啟
https://localhost:4848 (接受自簽憑證)
- 登入 admin / adminadmin
- 左側選單:Applications → Web Applications → Deploy
- 選擇本機
.war,填寫 Context Root (如 /myapp),勾選「預編譯 JSP」、「啟用」等選項
- 點 OK,即時顯示部署結果日誌
優勢:遠端部署零 SSH、視覺化狀態、支援 EAR/EJB/JAR 多模組、可調整部署參數 (虛擬伺服器、類別載入器策略、Session 持久化)。
四、JDBC 連線池與資料源配置 (JNDI 註冊)
Java EE 應用透過 @Resource 或 web.xml 註入 DataSource,容器必須預先配置好 JNDI 名稱。
步驟 1:建立連線池 (Connection Pool)
- 主控台:Resources → JDBC → Connection Pools → New
- 名稱:
MySqlPool
- Resource Type:
javax.sql.ConnectionPoolDataSource (或 XADataSource 分散式事務)
- Database Vendor:
MySQL (下拉選單自動帶入驅動類別)
- 下一步 → Additional Properties 關鍵屬性:
| Property | 範例值 |
| URL | jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC |
| User | app_user |
| Password | ******** |
| driverClass | com.mysql.cj.jdbc.Driver |
| maxPoolSize | 50 |
| idleTimeout | 300 |
點「Finish」→ 點「Ping」驗證連線成功 (綠勾)。
步驟 2:建立 JDBC 資料源 (JNDI Name)
- Resources → JDBC → JDBC Resources → New
- JNDI Name:
jdbc/MyAppDS (必須與 persistence.xml / @Resource 完全一致)
- Pool Name:選
MySqlPool
- 啟用:勾選
步驟 3:應用程式引用
// persistence.xml
<jta-data-source>jdbc/MyAppDS</jta-data-source>
// 或 @Resource 注入
@Resource(lookup = "jdbc/MyAppDS")
private DataSource ds;
重新部署應用,NameNotFoundException 即解決。
五、生產環境加固清單
- 修改預設密碼:
asadmin change-admin-password,啟用安全管理 asadmin enable-secure-admin (需重啟)。
- 啟用 HTTPS:管理主控台 4848 預設 HTTPS,應用端 8181 配置有效憑證 (Let's Encrypt / 企業 CA)。
- JVM 調優:
domain.xml <jvm-options>-Xms2g -Xmx4g -XX:+UseG1GC</jvm-options>。
- 連線池監控:主控台「監控」頁檢視連線洩漏、等待佇列、SQL 執行時間。
- 日誌輪轉:配置
logging.properties 滾動檔案大小/保留天數。
- 叢集/高可用:GlassFish 5+ 支援
asadmin create-cluster、create-instance、enable-http-lb-application 負載平衡。
總結
掌握 asadmin CLI 自動化部署、管理主控台視覺化運維、JDBC 資料源 JNDI 註冊三大核心技能,即可輕鬆駕馭 GlassFish 從開發到生產的全生命週期。隨著 Jakarta EE 10+ 發展,建議遷移至 GlassFish 7+ (支援 JDK 17/21、Jakarta EE 10 規範),享受更現代的配置模型 (MicroProfile Config) 與雲原生就緒特性。
- 上一篇文章: Java 核心運作機制深度解析:JVM、記憶體回收與安全模型
- 下一篇文章: Java 多執行緒經典模式:生產者-消費者模型完整實作與解析
Copyright ©
程式碼之家 All Rights Reserved