Java 마이그레이션 분석
마지막으로 설명할 기능은 Java 마이그레이션 분석입니다. 이를 통해 애플리케이션 준비 상태에 대한 보고서를 생성하여 최신 버전의 JDK로 마이그레이션할 수 있습니다. 모든 Oracle LTS Java 릴리스는 마지막 릴리스된 Oracle JDK와 함께 지원됩니다. 분석 보고서는 원하는 JDK 주 버전으로 전환하는 것과 관련된 노력과 위험을 제공합니다.
주:
애플리케이션 분석은 관리 인스턴스에서 수행되며 분석 중 추가 리소스가 소비됩니다.OCI 클라우드 콘솔
- OCI 콘솔에 관리자로 사인인합니다.
- 탐색 메뉴를 열고 관찰 가능성 및 관리를 누른 다음 Java 관리에서 플리트를 누릅니다.
- 플리트를 선택합니다.
- 관리 인스턴스를 누른 다음 애플리케이션이 실행 중인 관리 인스턴스를 누릅니다.
- 애플리케이션을 누르고 Java 이전 분석을 시작할 애플리케이션을 선택합니다.
- 작업을 누르고 Java 이전 분석 시작을 선택합니다.
- 시작을 누릅니다.
- 작업 요청이 완료되면 작업 요청을 누르고 세부정보에서 플리트의 버킷에 있는 Java 이전 분석 파일로 이동합니다.
OCI CLI
- 다음 명령을 사용하여 대상 페이로드 템플리트를 생성합니다.
ci jms fleet request-java-migration-analyses --generate-param-json-input targets
- 응용 프로그램에 대한 세부 정보를 찾습니다. 예를 들면 다음과 같습니다.
oci jms application-installation-usage-summary summarize-application-installation-usage --display-name-contains $APP_NAME --fleet-id $FLEET_OCID
- 다음과 같이 페이로드 JSON 파일을 편집합니다.
[ { "applicationInstallationKey": "$APP_INSTALL_KEY", "managedInstanceId": "$MANAGED_INSTANCE_OCID", "sourceJdkVersion": "$CURRENT_MAJOR_JAVA_RUNTIME_VERSION_USED_BY_APP", "targetJdkVersion": "$NEXT_JAVA_VERSION" } ]
- 다음 명령을 실행합니다.
oci jms fleet request-java-migration-analyses --fleet-id $FLEET_OCID --targets file://target.json
예
JMS 이전 분석의 목적은 간단합니다. 즉, 애플리케이션을 최신 Java 버전으로 이전하는 데 도움이 됩니다. 이 예제에서는 간단한 Java 8 응용 프로그램을 사용하며, 응용 프로그램을 Java 21에서 실행하기 위해 어떤 영역에 투자해야 하는지 알고 싶습니다.
#!/usr/bin/env bash
# configuration variables
APP_NAME=JMigrateExampleApp
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
CURRENT_MAJOR_JAVA_RUNTIME_VERSION_USED_BY_APP=1.8
NEXT_JAVA_VERSION=21
# get application installation key
APP_INSTALL_KEY=$(oci jms application-installation-usage-summary summarize-application-installation-usage --display-name-contains $APP_NAME --fleet-id $FLEET_OCID | jq -r '.data.items[]."application-installation-key"')
# JMigrate payload
cat > jmigrate-payload.json << EOF
[
{
"applicationInstallationKey": "$APP_INSTALL_KEY",
"managedInstanceId": "$MANAGED_INSTANCE_OCID",
"sourceJdkVersion": "$CURRENT_MAJOR_JAVA_RUNTIME_VERSION_USED_BY_APP",
"targetJdkVersion": "$NEXT_JAVA_VERSION"
}
]
EOF
# start java migration analysis on specified managed instance
WORK_REQUEST_OCID=$(oci jms fleet request-java-migration-analyses \
--fleet-id "$FLEET_OCID" \
--targets file://jmigrate-payload.json | jq -r '."opc-work-request-id"')
echo $WORK_REQUEST_OCID
rm jmigrate-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
JMigrate 작업 요청이 성공적으로 완료되면 JMS에서 보고서를 찾고 다음 명령문으로 해당 콘텐츠를 표시할 수 있습니다.
#!/usr/bin/env bash
# configuration variables
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
WORK_REQUEST_OCID=ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaapqrtnlvfyltloscefazwuuoyd6pdqpsmaxfnirregqirx3b7jbva
# get the analysis id, there can be multiple ids but, in our example, we expect just one
ANALYSIS_OCID=$(oci jms java-migration-analysis-result list --fleet-id $FLEET_OCID --sort-by timeCreated --sort-order DESC | jq -r ".data.items[] | select(.\"work-request-id\"==\"$WORK_REQUEST_OCID\") | .id")
# See the result
oci jms java-migration-analysis-result get --fleet-id $FLEET_OCID --java-migration-analysis-result-id $ANALYSIS_OCID
{
"data": {
"application-execution-type": "INSTALLED",
"application-key": "38d3d5b89e9e42da00c5be9bdbee216a0e297c2ea942330e5af4051c4951b50a",
"application-name": "JmigrateExample.jar",
"application-path": "/home/opc/JmigrateExample.jar",
"bucket-name": "jms_ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta",
"fleet-id": "ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta",
"host-name": "jms-demo",
"id": "ocid1.jmsreport.oc1.eu-frankfurt-1.amaaaaaalzyjypyaa4puer7qtjn2s3zih55ir5jzma4lyiulxpy7qn3xtbhq",
"managed-instance-id": "ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq",
"metadata": null,
"namespace": "frmss8xk2qta",
"object-list": [
"diagsbyapi-summary-counts.json",
"diagsbyclass-p3.json",
"diagsbyapi-p1.json",
"diagsbyclass-p4.json",
"JmigrateExample.jar.zip",
"diagsbyclass-p1.json",
"diagsbyapi-p4.json",
"diagsbyapi-p4-summary.json",
"execsummary.json",
"diagsbyapi-p3-summary.json",
"diagsbyapi-p1-summary.json",
"diagsbyapi-p2-summary.json",
"diagsbyapi-p2.json",
"jarsummaries-without-classsummaries.json",
"diagsbyapi-p3.json",
"diagsbyclass-summary-counts.json",
"diagsbyclass-p2.json"
],
"object-storage-upload-dir-path": "JMS/JAVA_MIGRATION/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/2025-07-09T14:33:49.750Z_ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaapqrtnlvfyltloscefazwuuoyd6pdqpsmaxfnirregqirx3b7jbva_JmigrateExample.jar/7adcab9b-1556-443d-9a86-a41f3e5bbb45/",
"source-jdk-version": "1.8",
"target-jdk-version": "21",
"time-created": "2025-07-09T14:41:16.353000+00:00",
"work-request-id": "ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaapqrtnlvfyltloscefazwuuoyd6pdqpsmaxfnirregqirx3b7jbva"
}
}
분석 데이터는 오브젝트 스토리지 서비스에 저장되며 분석 결과에서 데이터를 가져와 도달할 수 있습니다(예: 네임스페이스, bucket-name
가 제공됨). 그런 다음 object-list
내에 정의된 파일 목록이 있으며 각 파일에 대해 object-storage-upload-dir-path
와 object-list
의 항목을 연결하여 경로를 가져올 수 있습니다.
oci os object get --bucket-name jms_ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta --name JMS/JAVA_MIGRATION/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/2025-07-09T14:33:49.750Z_ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaapqrtnlvfyltloscefazwuuoyd6pdqpsmaxfnirregqirx3b7jbva_JmigrateExample.jar/7adcab9b-1556-443d-9a86-a41f3e5bbb45/jarsummaries-without-classsummaries.json --file -
[ {
"url" : "jar:file:/home/opc/JmigrateExample.jar",
"archiveType" : "JAR",
"classCount" : 3,
"classesWithDiagnosticsCount" : 3,
"p1Count" : 31,
"totalDiagnosticsCount" : 31
} ]%
더 나은 사용자 환경을 위해 OCI JMS 클라우드 콘솔을 사용하는 것이 좋습니다. 이 콘솔에서는 마이그레이션에 필요한 모든 세부정보를 제공하기 위해 보고서가 멋지게 렌더링됩니다.