Java 開發 2.0 核心:開源框架 + 租用基礎設施。本文示範:Grails (Spring+Hibernate) + MySQL + Tomcat 部署至 EC2,全程成本極低、彈性極高。
# 1. 建立專案
grails create-app mytri
cd mytri
# 2. 建立領域類別
grails create-domain-class Triathlon
# 編輯 grails-app/domain/Triathlon.groovy
class Triathlon {
static constraints = {
classification(inList:["Sprint","Olympic","1/2 Iron Man","Iron Man"])
}
String name, location
Date eventDate
String classification
}
# 3. 生成完整 MVC(Controller + Views)
grails generate-all Triathlon
# 4. 本地測試(內嵌 HSQLDB)
grails run-app
# 訪問 https://localhost:8080/mytri 驗證 CRUD 功能
需求:Java + Tomcat + MySQL。推薦 Java Web Apps in a Box 社群 AMI:ami-aa5abac3(已預裝 Tomcat 6、MySQL、JDK)。
使用 Eclipse AWS 插件:
EC2 Management 透視圖 → AMIs 視圖。ami-aa5abac3 → 右鍵 Launch。running,複製 Public DNS。# SSH 進入實例
mysql -u root --password=root
# 建立 Grails 專用用戶與資料庫
CREATE USER 'grails'@'localhost' IDENTIFIED BY 'groovy';
GRANT ALL ON *.* TO 'grails'@'localhost';
CREATE DATABASE mytri;
USE mytri;
# 執行 schema-export 生成的 DDL
CREATE TABLE triathlon (
id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL,
classification VARCHAR(12) NOT NULL,
event_date DATETIME NOT NULL,
location VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
# grails-app/conf/DataSource.groovy
production {
dataSource {
driverClassName = "com.mysql.jdbc.Driver"
username = "grails"
password = "groovy"
dialect = org.hibernate.dialect.MySQLDialect
url = "jdbc:mysql://localhost/mytri"
}
}
將 MySQL JDBC 驅動 (mysql-connector-java.jar) 放入 mytri/lib。
# 本地打包生產 WAR
grails -Dgrails.env=prod war mytri.war
# 方式一:Tomcat Manager 部署(推薦)
# 1. 配置 AMI 上 Tomcat 的 tomcat-users.xml 新增 manager 角色用戶
# 2. 重啟 Tomcat
# 3. 瀏覽器訪問 https://:8080/manager/html
# 4. 上傳 mytri.war → Deploy
# 方式二:SCP 直傳 webapps 目錄
scp -i mykey.pem mytri.war ec2-user@:/usr/local/tomcat/webapps/
https://:8080/mytri ,功能應與本地一致,數據持久化於 EC2 內部 MySQL。Terminate 實例,避免持續計費。| 方案 | 硬體成本 | 部署時間 | 擴展性 |
|---|---|---|---|
| 自建伺服器 | 數萬~數十萬 | 數週 | 受限 |
| EC2 按需實例 | ~$0.10/小時 | 數分鐘 | 彈性無限 |