Java 執行階段生命週期管理

Java 程式實際執行生命週期管理包括:

  • 安裝並設定 Java 程式實際執行
  • 刪除 Java 程式實際執行
  • 管理部署規則集

安裝並設定 Java 程式實際執行

JMS 可讓您在機組內任何選取的或所有受管理執行處理上安裝任何 Oracle JDK。此外,您可以使用後續安裝動作進一步設定新的 Java 程式實際執行。

對於每個支援的平台,您可以選擇是否要將 Java 程式實際執行安裝為一般存檔 (將擷取至檔案系統上的所選位置),或 JMS 會執行所選平台的官方 Oracle JDK 安裝程式來安裝 Oracle JDK。

OCI 雲端主控台

  1. 以管理員身分登入 OCI 主控台。
  2. 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組
  3. 選取您的機組。
  4. 按一下動作,然後從功能表選取安裝 Java 程式實際執行
  5. 選取您要安裝的版本。
  6. 按一下下一步
  7. 您可以選擇透過平台特定的 JDK 安裝程式來安裝 Java,或下載 Java 存檔並將它解壓縮至指定的路徑,然後按下一步繼續。
  8. 按一下安裝 Java Runtime

OCI CLI

  1. 使用下列指令產生要安裝的有效負載:
    oci jms installation-site-summary add --generate-param-json-input installation-sites
  2. 編輯有效負載 json 檔案,例如:
    [
      {
        "artifactContentType": "JDK",
        "managedInstanceId": "$MANAGED_INSTANCE_OCID",
        "releaseVersion": "21"
      }
    ]
  3. 執行下列命令:
    oci jms installation-site-summary add --fleet-id $FLEET_OCID --installation-sites file://installation-sites.json

設定新的 Java 程式實際執行

每次安裝的 Java 程式實際執行都可以設定數個選項,以增強安全性、網路組態或記錄日誌。如需所有組態選項的詳細描述,請參閱 Java 安裝後動作。例如,您可以使用此功能來設定環境中 Java 程式實際執行的全域代理主機組態。

您可以從 OCI 雲端主控台或 OCI CLI 執行此動作。

OCI 雲端主控台

  1. 以管理員身分登入 OCI 主控台。
  2. 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組
  3. 選取您的機組。
  4. 按一下動作,然後從功能表中選取設定 Java 程式實際執行生命週期管理設定值
  5. Java 後續安裝動作區段底下,設定您的需求。
  6. 按一下儲存
  7. 現在,您可以啟動上述的 Java 程式實際執行安裝處理作業,並在對話方塊的第二個步驟中確認您新設定的後續安裝動作。

OCI CLI

  1. 使用下列命令產生機組的 LCM 組態:
    oci jms fleet-advanced-feature-configuration update --generate-param-json-input lcm
  2. 以您的變更更新檔案,例如:
    {
        "isEnabled": true,
        "postInstallationActions": {
          "proxies": {
            "httpProxyHost": "my-awesome-company-proxy",
            "httpProxyPort": 8080,
            "httpsProxyHost": "my-awesome-company-proxy",
            "httpsProxyPort": 8080,
            "useSystemProxies": false
          }
        }
    }
  3. 上傳機組組態:
    oci jms fleet-advanced-feature-configuration update --lcm file://lcm-update.json --fleet-id $FLEET_OCID
  4. 更新您的安裝有效負載檔案,例如:
    [
      {
        "artifactContentType": "JDK",
        "managedInstanceId": "$MANAGED_INSTANCE_OCID",
        "releaseVersion": "21"
      }
    ]
  5. 執行安裝命令檔:
    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 雲端主控台

  1. 以管理員身分登入 OCI 主控台。
  2. 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組
  3. 選取您的機組。
  4. 按一下 Java 程式實際執行段落,然後選取 Oracle Java 程式實際執行
  5. 按一下刪除
  6. 再按一下刪除 (Delete) 來確認。

OCI CLI

  1. 使用下列命令產生要刪除的有效負載:
    oci jms installation-site-summary remove --generate-param-json-input installation-sites
  2. 取得指定機組和 Java 版本的安裝金鑰:
    oci jms installation-usage summarize --fleet-id $FLEET_OCID --jre-version
          $ORACLE_JDK_VERSION
  3. 取得已安裝 Java 版本之指定機組的受管理執行處理 OCID:
    oci jms managed-instance-usage summarize --fleet-id $FLEET_OCID --jre-version
          $ORACLE_JDK_VERSION

    附註:

    您只能針對具有其他參數 --os-family 的特定平台尋找受管理執行處理。
  4. 將安裝金鑰與受管理的執行處理結合,安裝金鑰與受管理的執行處理則是平台特定的執行處理,例如:
    [
      {
        "installationKey": "$JAVA_RUNTIME_INSTALL_KEY_LINUX",
        "managedInstanceId": "$LINUX_MANAGED_INSTANCE_OCID"
      },
      {
        "installationKey": "$JAVA_RUNTIME_INSTALL_KEY_WINDOWS",
        "managedInstanceId": "$WINDOWS_MANAGED_INSTANCE_OCID"
      }
    ]
  5. 完成安裝金鑰清單和受管理執行處理組之後,請將 installation-sites 組態儲存成名為 installation-sites.json 的檔案。
  6. 執行下列命令:
    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 雲端主控台

  1. 以管理員身分登入 OCI 主控台。
  2. 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組
  3. 選取您的機組。
  4. 按一下動作,然後選取設定 Java 程式實際執行生命週期管理設定值
  5. 部署規則集檔案區段中,上傳您的部署規則集 jar 檔案。
  6. 按一下上傳

管理部署規則集

  1. 以管理員身分登入 OCI 主控台。
  2. 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組
  3. 選取您的機組。
  4. 按一下動作,然後選取管理部署規則集
  5. 按一下分送或移除 DRS 面板
  6. 按一下送出

OCI CLI

  1. 使用下列命令上傳 DRS 檔案:
    oci os object put --namespace $NAMESPACE --bucket-name $BUCKET_NAME --file
          DeploymentRuleSet.jar
  2. 使用 JMS 驗證:
    oci jms fleet create-drs-file --namespace $NAMESPACE --bucket-name $BUCKET_NAME
          --drs-file-name DeploymentRuleSet.jar --fleet-id $FLEET_OCID
  3. 分配 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