更新並驗證您的 Java 應用程式

以下是準備目前在 Oracle Java Cloud Service - SaaS Extension 執行之 Java EE App 的高階步驟,以在 Oracle WebLogic Server for OCI 上執行。

記下下列應用程式環境變更。您需要更新應用程式碼,以說明兩個環境之間的不同相容版本。如需每個產品版本差異的詳細資料,請參閱產品文件。

面積 Oracle Java Cloud Service - SaaS Extension 適用於 OCI 的 Oracle WebLogic Server
Oracle Java 標準版 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 包括升級 WebLogic (Java EE) Web 服務 (JAX-RS 和 JAX-WS)。

執行必要的更新與驗證步驟

重新計算索引,然後測試新環境的 Java 應用程式。

下列每個步驟都會在高層次強調顯示您需要執行以更新和驗證應用程式的程序。

  1. 識別您現有應用程式中的受保護和匿名頁面。通常使用 web.xml 中的 CLIENT-CERT 組態來保護應用程式頁面
  2. 指定目前應用程式中使用的角色。ADF 應用程式會使用 jazn-data.xml 檔案來定義角色,而 Java EE 應用程式可以在 web.xml 檔案的應用程式建置描述區或應用程式程式碼中指定應用程式角色和安全限制條件。
  3. 識別用於現有應用程式之 Web 服務安全的原則。
    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-based Oracle 應用程式整合。
    常見的樣式包括:
    • 使用「應用程式編寫器」、「頁面整合」或「頁面編寫器」工具來內嵌頁面或連結
    • Springboard (使用「結構」工具)
    • 使用導覽器組態進行導覽
  5. 指定應用程式相依性。
    例如,識別下列任一相依性:
    • 程式庫
    • SSL 憑證
    • Web 服務安全憑證
    • 系統屬性
    • 應用程式預期的檔案系統結構
    • OPSS 證明資料存放區中的證明資料項目
    • 電子郵件通知用途
  6. 從「資料庫綱要」匯出資料並匯入 Oracle Cloud Infrastructure 上的新資料庫服務。請注意,對 Oracle Cloud Infrastructure Database 系統,您需要安裝 Oracle Application Express (APEX) 並移轉應用程式。
    如需詳細資訊,請參閱 Oracle Database Cloud - Database Schema Service 文件。
  7. 使用 Oracle Identity Cloud Service 來更新受保護的應用程式資源,如 Oracle WebLogic Server for OCI 文件中所述。
  8. 設定角色授權。將 OPSS 使用者與群組 API 與 Oracle Identity Cloud Service 整合,如 Oracle WebLogic Server for OCI 文件中所述。
  9. 下載並安裝 Oracle JDeveloper 12c。此版本與先前選取的 Oracle WebLogic Server 版本一致。
  10. Oracle JDeveloper 12c 中開啟您現有的 Java EE 應用程式。JDeveloper 會自動將專案移轉至 12c,包括 ADF 相依性。如需詳細資訊,請參閱 Oracle JDeveloper 文件
  11. 將應用程式部署並驗證至 Oracle WebLogic Server for OCI
    1. Oracle JDeveloper 產生您的 WAR 或 EAR 檔案。
    2. 登入「Oracle WebLogic Server 管理主控台」。
    3. 將您的 WAR 或 EAR 檔案部署到「WebLogic 網域」的叢集或受管理伺服器。
  12. 若為頁面整合,請使用適合特定應用程式的「應用程式編寫器」或「頁面編寫器」來更新您 Oracle Fusion 應用程式中的應用程式 URL。
  13. 在測試或開發環境上執行測試來驗證您的應用程式。
    請注意,您可能需要先設定 Web 層安全與角色授權,才能完成應用程式驗證,如以下文章所述。
依照下一篇文章所述,在您將應用程式建置到實際執行環境之前,設定 Oracle Identity Cloud Service 中的 Web 層安全與角色授權。

診斷及解決權限問題

您可能會發現部分 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...
      確定 PolicyContextResource/TargetAction 以及 Permission 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. 按一下定。複查資訊,然後按一下「定」儲存變更。
授與權限之後,通常不需要重新啟動,但是如果問題仍然發生,重新啟動伺服器可能會解決問題。解決一個存取被拒的錯誤之後,您現在可能會在另一個 codeSource 上看到新的錯誤,因為您的 Java 程式碼已經可以執行。因此,您可能需要重複此處理作業來複查日誌、將新權限授與其他 Jar 檔案,然後重新測試多次,直到解決所有權限問題為止。