更新并验证 Java 应用程序

下面是在 Oracle Java Cloud Service - SaaS Extension 上运行的 Java EE 应用程序准备在 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 的 Oracle 应用程序集成。
    常见模式包括:
    • 使用应用程序编辑器、页集成或页编写器工具嵌入页或链接
    • 使用结构工具跳板
    • 使用导航器配置导航
  5. 标识应用程序相关性。
    例如,标识以下任意依赖项:
    • SSL 证书
    • Web 服务安全证书
    • 系统属性
    • 应用程序需要的文件系统结构
    • OPSS 身份证明存储中的身份证明条目
    • 电子邮件通知使用情况
  6. 从数据库方案导出数据并导入到 Oracle Cloud Infrastructure 上的新数据库服务。请注意,对于 Oracle Cloud Infrastructure Database Systems,您需要安装 Oracle Application Express (APEX) 并迁移应用程序。
    有关详细信息,请参阅 Oracle Database Cloud - Database Schema Service 文档。
  7. 使用 Oracle Identity Cloud Service 配置 Web 层安全性,以更新受保护的应用程序资源,如 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/TargetActionPermission 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. 单击 OK(确定)。复查信息并单击确定保存更改。
授予权限后,通常不需要重新启动,但如果问题仍然存在,重新启动服务器可能会解决此问题。解决一个被拒绝的访问错误后,您现在可能会在另一个 codeSource 上看到一个新错误,因为您的更多 Java 代码能够执行。因此,您可能需要重复此过程,复查日志,向其他 jar 文件授予新权限,然后多次重新测试,直到解决了所有权限问题为止。