Java 執行階段生命週期管理
Java 程式實際執行生命週期管理包括:
- 安裝並設定 Java 程式實際執行
- 刪除 Java 程式實際執行
- 管理部署規則集
安裝並設定 Java 程式實際執行
JMS 可讓您在機組內任何選取的或所有受管理執行處理上安裝任何 Oracle JDK。此外,您可以使用後續安裝動作進一步設定新的 Java 程式實際執行。
對於每個支援的平台,您可以選擇是否要將 Java 程式實際執行安裝為一般存檔 (將擷取至檔案系統上的所選位置),或 JMS 會執行所選平台的官方 Oracle JDK 安裝程式來安裝 Oracle JDK。
OCI 雲端主控台
- 以管理員身分登入 OCI 主控台。
- 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組。
- 選取您的機組。
- 按一下動作,然後從功能表選取安裝 Java 程式實際執行。
- 選取您要安裝的版本。
- 按一下下一步。
- 您可以選擇透過平台特定的 JDK 安裝程式來安裝 Java,或下載 Java 存檔並將它解壓縮至指定的路徑,然後按下一步繼續。
- 按一下安裝 Java Runtime 。
OCI CLI
- 使用下列指令產生要安裝的有效負載:
oci jms installation-site-summary add --generate-param-json-input installation-sites
- 編輯有效負載 json 檔案,例如:
[ { "artifactContentType": "JDK", "managedInstanceId": "$MANAGED_INSTANCE_OCID", "releaseVersion": "21" } ]
- 執行下列命令:
oci jms installation-site-summary add --fleet-id $FLEET_OCID --installation-sites file://installation-sites.json
設定新的 Java 程式實際執行
每次安裝的 Java 程式實際執行都可以設定數個選項,以增強安全性、網路組態或記錄日誌。如需所有組態選項的詳細描述,請參閱 Java 安裝後動作。例如,您可以使用此功能來設定環境中 Java 程式實際執行的全域代理主機組態。
您可以從 OCI 雲端主控台或 OCI CLI 執行此動作。
OCI 雲端主控台
- 以管理員身分登入 OCI 主控台。
- 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組。
- 選取您的機組。
- 按一下動作,然後從功能表中選取設定 Java 程式實際執行生命週期管理設定值。
- 在 Java 後續安裝動作區段底下,設定您的需求。
- 按一下儲存。
- 現在,您可以啟動上述的 Java 程式實際執行安裝處理作業,並在對話方塊的第二個步驟中確認您新設定的後續安裝動作。
OCI CLI
- 使用下列命令產生機組的 LCM 組態:
oci jms fleet-advanced-feature-configuration update --generate-param-json-input lcm
- 以您的變更更新檔案,例如:
{ "isEnabled": true, "postInstallationActions": { "proxies": { "httpProxyHost": "my-awesome-company-proxy", "httpProxyPort": 8080, "httpsProxyHost": "my-awesome-company-proxy", "httpsProxyPort": 8080, "useSystemProxies": false } } }
- 上傳機組組態:
oci jms fleet-advanced-feature-configuration update --lcm file://lcm-update.json --fleet-id $FLEET_OCID
- 更新您的安裝有效負載檔案,例如:
[ { "artifactContentType": "JDK", "managedInstanceId": "$MANAGED_INSTANCE_OCID", "releaseVersion": "21" } ]
- 執行安裝命令檔:
oci jms installation-site-summary add \ --fleet-id "$FLEET_OCID" \ --installation-sites file://installation-sites.json \ --post-installation-actions '["SETUP_HTTP_PROXY","SETUP_HTTPS_PROXY"]'
刪除 Java 程式實際執行
JMS 提供此機組中發現之所有受管理執行處理的 Java 程式實際執行清單。機組管理員可以選擇從選取的受管理執行處理,或從 JMS 機組內的所有受管理執行處理移除任何 Oracle Java 程式實際執行。
OCI 雲端主控台
- 以管理員身分登入 OCI 主控台。
- 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組。
- 選取您的機組。
- 按一下 Java 程式實際執行段落,然後選取 Oracle Java 程式實際執行。
- 按一下刪除。
- 再按一下刪除 (Delete) 來確認。
OCI CLI
- 使用下列命令產生要刪除的有效負載:
oci jms installation-site-summary remove --generate-param-json-input installation-sites
- 取得指定機組和 Java 版本的安裝金鑰:
oci jms installation-usage summarize --fleet-id $FLEET_OCID --jre-version $ORACLE_JDK_VERSION
- 取得已安裝 Java 版本之指定機組的受管理執行處理 OCID:
oci jms managed-instance-usage summarize --fleet-id $FLEET_OCID --jre-version $ORACLE_JDK_VERSION
附註:
您只能針對具有其他參數--os-family
的特定平台尋找受管理執行處理。 - 將安裝金鑰與受管理的執行處理結合,安裝金鑰與受管理的執行處理則是平台特定的執行處理,例如:
[ { "installationKey": "$JAVA_RUNTIME_INSTALL_KEY_LINUX", "managedInstanceId": "$LINUX_MANAGED_INSTANCE_OCID" }, { "installationKey": "$JAVA_RUNTIME_INSTALL_KEY_WINDOWS", "managedInstanceId": "$WINDOWS_MANAGED_INSTANCE_OCID" } ]
- 完成安裝金鑰清單和受管理執行處理組之後,請將
installation-sites
組態儲存成名為installation-sites.json
的檔案。 - 執行下列命令:
oci jms installation-site-summary remove --fleet-id $FLEET_OCID --installation-sites file://installation-sites.json
管理部署規則集
「部署規則集」是一組規則和原則,用於以安全且可自訂的方式控制和管理 Java Applet 和 Web 應用程式的執行。
透過 JMS 管理「部署規則集」Jar 是簡單的工作。機組管理員將上傳包含部署規則的已簽署 jar 來進行設定,然後 JMS 會將 DRS 檔案分送至機組中適用的所有受管理執行處理。
附註:
「管理建置規則集」功能僅限於 Java 8 程式實際執行。OCI 雲端主控台
- 以管理員身分登入 OCI 主控台。
- 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組。
- 選取您的機組。
- 按一下動作,然後選取設定 Java 程式實際執行生命週期管理設定值。
- 在部署規則集檔案區段中,上傳您的部署規則集 jar 檔案。
- 按一下上傳。
管理部署規則集
- 以管理員身分登入 OCI 主控台。
- 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組。
- 選取您的機組。
- 按一下動作,然後選取管理部署規則集。
- 按一下分送或移除 DRS 面板。
- 按一下送出。
OCI CLI
- 使用下列命令上傳 DRS 檔案:
oci os object put --namespace $NAMESPACE --bucket-name $BUCKET_NAME --file DeploymentRuleSet.jar
- 使用 JMS 驗證:
oci jms fleet create-drs-file --namespace $NAMESPACE --bucket-name $BUCKET_NAME --drs-file-name DeploymentRuleSet.jar --fleet-id $FLEET_OCID
- 分配 DRS 檔案:
oci jms fleet enable-drs --fleet-id $FLEET_OCID
DRS 進階功能取決於將受管理執行處理的 DRS 相關有效負載傳送至 OCI 產品目錄日誌物件。以下是 DRS 有效負載範例:
{
"datetime": 1749559306604,
"logContent": {
"id": "117dffe5-defd-4d62-8d4c-b4b3b5ace029",
"time": "2025-06-10T12:41:46.604Z",
"oracle": {
"compartmentid": "ocid1.compartment.oc1..compartment-id",
"ingestedtime": "2025-06-10T12:41:46.604Z",
"loggroupid": "ocid1.loggroup.oc1.eu-frankfurt-1.log-group-id",
"logid": "ocid1.loggroup.oc1.eu-frankfurt-1.log-id",
"tenantid": "ocid1.tenancy.oc1..tenant-id"
},
"source": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"specversion": "1.0",
"subject": "Oracle JMS Plugin",
"type": "jms.drs.scan.log",
"data": {
"data": {
"checksum": "405ca339f3e394a5cee7f618074f752a7c341bae2d9841155a23858d96d7696a",
"fleetId": "ocid1.jmsfleet.oc1.eu-frankfurt-1.fleet-id",
"managedInstanceId": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"osArch": "amd64",
"osName": "Linux",
"osVersion": "5.15.0-306.177.4.el9uek.x86_64"
},
"datacontenttype": "application/json",
"dataschema": "1.0",
"id": "117dffe5-defd-4d62-8d4c-b4b3b5ace029",
"source": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"specversion": "1.0",
"time": "2025-06-10T12:41:46.601Z",
"type": "jms.drs.scan.log"
}
},
"regionId": "eu-frankfurt-1"
}
範例
假設您要使用特定的 http/https 代理主機組態自動安裝 Oracle JDK 21。以下為使用 JMS 實現此自動化的實際範例。
首先,讓我們檢查簡單的命令檔,並在組態變數區段中定義必要的參數。
#!/usr/bin/env bash
# configuration variables
JAVA_VERSION=21
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
PROXY_HOST=my-awesome-company-proxy
PROXY_PORT=8080
# check LCM configuration
FLEET_LCM_CONFIGURED=$(oci jms fleet-advanced-feature-configuration get --fleet-id $FLEET_OCID | jq '.data.lcm."is-enabled"')
# enable LCM configuration if needed
if [ "$FLEET_LCM_CONFIGURED" == "false" ]; then
cat > lcm-proxy.json << EOF
{
"isEnabled": true,
"postInstallationActions": {
"proxies": {
"httpProxyHost": "$PROXY_HOST",
"httpProxyPort": $PROXY_PORT,
"httpsProxyHost": "$PROXY_HOST",
"httpsProxyPort": $PROXY_PORT,
"useSystemProxies": false
}
}
}
EOF
echo Uploading new LCM configuration for fleet $FLEET_OCID
cat lcm-proxy.json
# upload the LCM configuration to JMS without confirmation
oci jms fleet-advanced-feature-configuration update --force --lcm file://lcm-proxy.json --fleet-id $FLEET_OCID
rm lcm-proxy.json
fi
# JDK installation payload
cat > jdk-install-payload.json << EOF
[
{
"artifactContentType": "JDK",
"releaseVersion": "$JAVA_VERSION",
"managedInstanceId": "$MANAGED_INSTANCE_OCID",
}
]
EOF
# initiate installation on specified managed instance
WORK_REQUEST_OCID=$(oci jms installation-site-summary add \
--fleet-id "$FLEET_OCID" \
--installation-sites file://jdk-install-payload.json \
--post-installation-actions '["SETUP_HTTP_PROXY","SETUP_HTTPS_PROXY"]' | jq -r '."opc-work-request-id"')
echo Installation work request OCID: $WORK_REQUEST_OCID
rm jdk-install-payload.json
# additionally you can add your own logic to check if work request is finished
# sleep 600
# oci jms work-request get --work-request-id "$WORK_REQUEST_OCID" | jq .data.status
在下一個步驟中,我們執行上面的命令檔,然後等待完成。安裝工作要求完成後,我們可以使用需要的組態來驗證新安裝之 JDK 21 的代理主機組態是否已設定:
oci jms work-request-log-entry list-work-request-logs --work-request-id "$WORK_REQUEST_OCID" | jq -r '.data.items[].message'
{"artifactType":"JDK","code":"COMMAND_COMPLETED_WITHOUT_ERRORS","jrePath":"/usr/lib/jvm/jdk-21-oracle-x64/","jreVersion":"21","managedInstance":"jms-demo","metadata":{"attempt":1,"maximumAttempts":3},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"POST_INSTALL_ACTIONS_SUCCESS","jrePath":"/usr/lib/jvm/jdk-21-oracle-x64/","jreVersion":"21","managedInstance":"jms-demo","metadata":{},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"POST_INSTALL_ACTIONS_EXECUTING","jrePath":"/usr/lib/jvm/jdk-21-oracle-x64/","jreVersion":"21","managedInstance":"jms-demo","metadata":{},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"POST_INSTALL_ACTIONS_PRESENT","jrePath":"/usr/lib/jvm/jdk-21-oracle-x64/","jreVersion":"21","managedInstance":"jms-demo","metadata":{},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"INSTALL_SUCCESS","jrePath":"/usr/lib/jvm/jdk-21-oracle-x64/","jreVersion":"21","managedInstance":"jms-demo","metadata":{},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"COMMAND_RUNNING","jrePath":null,"jreVersion":"21","managedInstance":"jms-demo","metadata":{"attempt":1,"maximumAttempts":3},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"COMMAND_CREATED","jrePath":null,"jreVersion":"21","managedInstance":"jms-demo","metadata":{},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
# verification on the managed instance:
[root@jms-demo ~]# egrep '^https?\.proxy' /usr/lib/jvm/jdk-21-oracle-x64/conf/net.properties
http.proxyHost=my-awesome-company-proxy
http.proxyPort=8080
https.proxyHost=my-awesome-company-proxy
https.proxyPort=8080