Java 애플리케이션 업데이트 및 검증

다음은 Oracle Java Cloud Service - SaaS Extension에서 현재 실행 중인 Java EE 앱을 준비하기 위한 상위 레벨 단계로, OCI용 Oracle WebLogic Server에서 실행됩니다.

다음과 같은 응용 프로그램 환경 변경 사항을 적어 둡니다. 두 환경 간에 호환되는 다른 버전을 고려하도록 애플리케이션 코드를 업데이트해야 합니다. 각 제품 버전의 차이에 대한 자세한 내용은 제품 설명서를 참조하십시오.

영역 Oracle Java Cloud Service - SaaS Extension OCI용 Oracle WebLogic Server
Oracle Java Standard Edition JDK 7 JDK 8
Oracle Java Enterprise Edition Java EE 5 Java EE 7
Oracle WebLogic Server WebLogic Server 11g(10.3.6) WebLogic Server 12c
Oracle Fusion Middleware Oracle Fusion Middleware 11g 릴리스 1(11.1.1.7.1 또는 11.1.1.9.1) Oracle Fusion Middleware 12c 릴리스 2(12.2.1.x)
Oracle JDeveloper Oracle JDeveloper 11g Oracle JDeveloper 12c

Oracle WebLogic Server 업그레이드에는 Java EE(WebLogic) 웹 서비스(JAX-RS 및 JAX-WS) 업그레이드가 포함됩니다.

필수 업데이트 및 검증 단계 수행

새 환경에 대해 Java 응용 프로그램을 다시 계수한 후 테스트합니다.

다음 각 단계에서는 애플리케이션을 업데이트하고 검증하기 위해 수행해야 하는 프로세스를 자세히 설명합니다.

  1. 기존 애플리케이션에서 보안 및 익명 페이지를 식별합니다. 일반적으로 응용 프로그램 페이지는 web.xmlCLIENT-CERT 구성을 사용하여 보안됩니다.
  2. 현재 애플리케이션에 사용된 롤을 식별합니다. ADF 응용 프로그램은 jazn-data.xml 파일을 사용하여 롤을 정의하는 반면, Java EE 응용 프로그램은 web.xml 파일 또는 응용 프로그램 코드의 응용 프로그램 배치 기술자 내에 응용 프로그램 롤 및 보안 제약 조건을 지정할 수 있습니다.
  3. 기존 애플리케이션의 웹 서비스 보안에 사용되는 정책을 식별합니다.
    SOAP 클라이언트 응용 프로그램에 대한 클라이언트 보안 정책은 응용 프로그램 코드에 있으며 일반적으로 다음을 포함합니다.
    • oracle/wss11_saml_token_with_message_protection_client_policy
    • oracle/wss_saml_token_bearer_over_ssl_client_policy
    REST 클라이언트 애플리케이션에 대한 기본 정책은 oracle/http_saml20_token_bearer_over_ssl_client_policy 입니다.
  4. 애플리케이션이 Fusion 기반 Oracle 애플리케이션과 통합되는지 여부 또는 통합 방법을 식별합니다.
    공통 패턴은 다음과 같습니다:
    • Application Composer, 페이지 통합 또는 페이지 편집기 툴을 사용하여 페이지 또는 링크 포함
    • 구조 도구를 사용한 스프링보드
    • 네비게이터 구성을 사용하여 탐색
  5. 애플리케이션 종속성을 식별합니다.
    예를 들어, 다음 종속성 중 하나를 식별합니다:
    • 라이브러리
    • SSL 인증서
    • 웹 서비스 보안 인증서
    • 시스템 속성입니다.
    • 애플리케이션에 필요한 파일 시스템 구조
    • OPSS 인증서 저장소의 인증서 항목
    • 전자메일 통지 사용
  6. 데이터베이스 스키마에서 데이터를 익스포트하여 Oracle Cloud Infrastructure의 새 데이터베이스 서비스로 임포트합니다. Oracle Cloud Infrastructure Database Systems의 경우 APEX(Oracle Application Express) 를 설치하고 애플리케이션을 이전해야 합니다.
    자세한 내용은 Oracle Database Cloud - Database Schema Service 설명서를 참조하십시오.
  7. Oracle WebLogic Server for OCI 설명서에 설명된 대로 Oracle Identity Cloud Service를 사용하여 보호된 애플리케이션 리소스를 업데이트하는 웹 계층 보안을 구성합니다.
  8. 역할 권한 부여를 구성합니다. OCI용 Oracle WebLogic Server 설명서에 설명된 대로 Oracle Identity Cloud Service와 MQ 사용자 및 그룹 API를 통합합니다.
  9. Oracle JDeveloper 12c를 다운로드하고 설치합니다. 이 버전은 이전에 선택한 Oracle WebLogic Server 버전과 정렬됩니다.
  10. Oracle JDeveloper 12c에서 기존 Java EE 애플리케이션을 엽니다. JDeveloper는 ADF 종속성을 포함하여 프로젝트를 12c로 자동으로 이전합니다. 자세한 내용은 Oracle JDeveloper 설명서를 확인하십시오.
  11. OCI용 Oracle WebLogic Server에 애플리케이션을 배포하고 검증합니다.
    1. Oracle JDeveloper에서 WAR 또는 EAR 파일을 생성합니다.
    2. Oracle WebLogic Server 관리 콘솔에 로그인합니다.
    3. WAR 또는 EAR 파일을 WebLogic 도메인의 클러스터 또는 관리 서버에 배치합니다.
  12. 페이지 통합의 경우 특정 응용 프로그램에 적합한 Application Composer 또는 Page Composer를 사용하여 Oracle Fusion 기반 응용 프로그램에서 응용 프로그램 URL을 업데이트합니다.
  13. 테스트 또는 개발 환경에서 테스트를 수행하여 애플리케이션을 검증합니다.
    다음 문서에 설명된 대로 응용 프로그램 검증을 완료하려면 먼저 웹 계층 보안 및 롤 권한 부여를 구성해야 할 수도 있습니다.
애플리케이션을 프로덕션 환경에 배포하기 전에 다음 문서에 설명된 대로 Oracle Identity Cloud Service에서 웹 계층 보안 및 역할 권한 부여를 구성합니다.

권한 문제 진단 및 해결

일부 Java 응용 프로그램 코드는 새 환경에서 AccessControlException 오류를 발생시킬 수 있습니다. 로그에서 세부 정보를 확인한 다음 Oracle Enterprise Manager Fusion Middleware Control을 사용하여 권한 부여를 구성하여 이러한 권한 문제를 진단하고 해결할 수 있습니다.

권한을 부여하도록 codeBase를 정의할 때(다음 절차의 2단계) 다음 환경 변수가 유용할 수 있습니다:

  • oracle.deployed.app.dir=/u01/data/domains/wls_domain/servers/wls_adminserver/tmp/_WL_user
  • oracle.deployed.app.ext=/-
  • common.components.home=/u01/app/oracle/middleware/oracle_common
  • domain.home=/u01/data/domains/wls_domain

권한 문제를 진단하고 해결하려면 다음과 같이 하십시오:

  1. JPS 로깅을 사용으로 설정합니다. 기본 로깅 레벨은 일반적으로 AccessControlException 오류의 소스를 검색하는 데 충분하지 않습니다. 로그에 대한 세부 정보를 사용하면 인증되지 않은 작업을 실행 중인 정확한 코드 베이스를 확인할 수 있습니다.
    1. Oracle WebLogic Server 관리 콘솔을 열고 도메인 구조 트리에서 환경 을 확장합니다. 서버 를 선택한 다음 관리 서버 이름을 누릅니다.
    2. 서버 시작 탭을 선택하고 잠금 및 편집 을 누른 후 인수 목록 끝에 다음 인수를 추가합니다:
      -Djps.auth.debug=true
      Djps.auth.debug.verbose=true
    3. 저장 을 누른 다음 변경사항 활성화 를 누릅니다. 그런 다음 관리 서버를 다시 시작합니다.
    4. AccessControlException의 원인이 되는 사용 사례를 복제한 다음 관리 서버 . out 로그 파일에서 기록 중인 항목을 검색합니다. FAILED 문자열을 검색합니다. 예를 들면 다음과 같습니다.
      [OpsAuth] Check Permission
      	  PolicyContext:        [oauth-client]
      	  Resource/Target:      [context=SYSTEM,mapName=user.public.map,keyName=SaaSSystemAccount]
      	  Action:	        [read]
      	  Permission Class:     [oracle.security.jps.service.credstore.CredentialAccessPermission]
      	  Result:	        [FAILED]
      	  Evaluater:	     [ACC]
      	  Failed ProtectionDomain:ClassLoader-weblogic.utils.classloaders.GenericClassLoader@5Da796tt...
      PolicyContext, Resource/Target, ActionPermission Class가 예외사항에 표시된 것과 일치하는지 확인하십시오.
    5. 이전 단계의 로그 조각 바로 아래에 표시된 CodeSource 블록을 확인합니다. 나열된 파일은 권한이 누락된 코드를 실행하는 jar입니다. 예를 들면 다음과 같습니다.
      CodeSource-file:/u01/data/domains/wls_domain/servers/wls_server_1/tmp/_WL_user/oauth-client/kk4bjg/lib/PublicReportServiceWSClient-1.0.11.jar
  2. 이 코드 베이스에 대한 권한을 부여합니다. WLST 명령행 툴을 사용하거나 Oracle Enterprise Manager Fusion Middleware Control을 사용하여 이 작업을 수행할 수 있습니다. 다음 단계에서는 Oracle Enterprise Manager를 사용하여 권한을 부여하는 방법을 보여줍니다.
    WLST 사용에 대한 자세한 내용을 보려면 My Oracle Support에 로그인하고 Doc ID 1327577.1 문서를 검색하십시오.
    1. Oracle Enterprise Manager Fusion Middleware Control에 로그인하고 WebLogic 도메인 드롭다운 메뉴에서 보안, 시스템 정책 을 차례로 선택합니다. 새 보안 권한 부여 생성 을 누릅니다.
    2. [시스템 권한 부여 생성] 페이지의 CodeBase에서 로그 파일에 있는 codeSource 파일을 추가합니다.
      실제 파일 경로를 사용하지 않도록 환경 변수를 대체합니다. 예를 들어, 변수 oracle.deployed.app.dir는 이전 단계의 예제 로그 오류 jar 파일에서 제공된 예제 파일 경로에 있는 _WL_user 폴더를 가리킵니다. 환경 변수 oracle.deployed.app.ext를 사용하여 현재 경로 아래의 모든 항목에 권한을 적용할 수도 있습니다.
      예를 들어, 다음과 같습니다:
      file:${oracle.deployed.app.dir}/MassItem28B${oracle.deployed.app.ext}
    3. 추가 를 누릅니다. 새 권한에 대한 세부정보를 입력하려면 여기를 선택하십시오 옵션을 선택하고 세부정보를 입력합니다.
      • 권한 클래스: oracle.security.jps.service.credstore. CredentialAccessPermission
      • 리소스 이름: context = SYSTEM, mapName = user.public.map, keyName = SaaSSystemAccount
      • 권한 작업: 읽기
    4. 확인을 누릅니다. 정보를 검토하고 확인 을 눌러 변경 사항을 저장합니다.
권한을 부여한 후 일반적으로 재시작이 필요하지 않지만 문제가 계속 발생하면 서버를 재시작하면 해결할 수 있습니다. 하나의 액세스 거부 오류를 해결한 후 더 많은 Java 코드를 실행할 수 있으므로 이제 다른 codeSource에 새 오류가 표시될 수 있습니다. 따라서 이 로그 검토 프로세스를 반복하여 다른 jar 파일에 새 권한을 부여한 다음 모든 권한 문제가 해결될 때까지 여러 번 다시 테스트해야 할 수 있습니다.