Javaランタイム・ライフサイクル管理
Javaランタイムのライフサイクル管理には、次のものが含まれます。
- Javaランタイムのインストールおよび構成
- Javaランタイムの削除
- デプロイメント・ルール・セットの管理
Javaランタイムのインストールおよび構成
JMSでは、フリート内の選択したインスタンスまたはすべての管理対象インスタンスにOracle JDKをインストールできます。さらに、インストール後のアクションを使用して、新しいJavaランタイムをさらに構成できます。
サポートされているプラットフォームごとに、ファイル・システム上の選択した場所に抽出される通常のアーカイブとしてJavaランタイムをインストールするか、選択したプラットフォームに対して正式なOracle JDKインストーラを実行してJMSが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 Cloud ConsoleまたはOCI CLIのいずれかから実行できます。
OCIクラウド・コンソール
- OCIコンソールに管理者としてサインインします。
- ナビゲーション・メニューを開き、「監視および管理」をクリックし、「Java管理」の下の「フリート」をクリックします。
- フリートを選択します。
- 「アクション」をクリックし、メニューから「Javaランタイム・ライフサイクル管理設定の構成」を選択します。
- 「Javaインストール後のアクション」セクションで、要件を構成します。
- 「保存」をクリックします。
- これで、前述したJavaランタイム・インストール・プロセスを起動し、ダイアログの2番目のステップで、新しく構成されたインストール後のアクションを確認できます。
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ランタイム」を選択します。
- 「削除」をクリックします。
- 「削除」を再度クリックして確認します。
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がインストールされているフリートの管理対象インスタンスOCIDsを取得します:
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アプレットおよびWebアプリケーションの実行をセキュアかつカスタマイズ可能な方法で制御および管理するために使用される一連のルールおよびポリシーです。
JMSでは、デプロイメント・ルール・セットjarの管理は単純なタスクです。フリート管理者は、デプロイメント・ルールを含む署名付きjarをアップロードして構成し、JMSは、該当する場合はフリート内のすべての管理対象インスタンスにDRSファイルを分散します。
ノート:
デプロイメント・ルール・セットの管理機能は、Java 8ランタイムに制限されます。OCIクラウド・コンソール
- OCIコンソールに管理者としてサインインします。
- ナビゲーション・メニューを開き、「監視および管理」をクリックし、「Java管理」の下の「フリート」をクリックします。
- フリートを選択します。
- 「アクション」をクリックし、「Javaランタイム・ライフサイクル管理設定の構成」を選択します。
- 「デプロイメント・ルール・セット」ファイル・セクションで、デプロイメント・ルール・セットjarファイルをアップロードします。
- 「アップロード」をクリックします。
デプロイメント・ルール・セットの管理
- OCIコンソールに管理者としてサインインします。
- ナビゲーション・メニューを開き、「監視および管理」をクリックし、「Java管理」の下の「フリート」をクリックします。
- フリートを選択します。
- 「アクション」をクリックし、「デプロイメント・ルール・セットの管理」を選択します。
- 「Distribute or Remove DRS」パネルをクリックします。
- 「Submit」をクリックします。
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拡張機能の機能は、管理対象インスタンスからOCIインベントリ・ログ・オブジェクトへのDRS関連ペイロードの送信に依存します。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