SuperAPI AI 工具集

connectivity-onpremise

部署与运维

查看项目

更新于 10-16 11:15

技能介绍

用途

该技能用于在 SAP BTP Cloud Foundry 环境中通过 Cloud Connector 启用对本地(On-Premise)系统的连接,主要服务场景为从 SAP Neo 迁移到 Cloud Foundry 的 Java 应用。其核心目标是用 SAP Cloud SDK 对本地连接的自动处理,替代 Neo 时代的手动代理配置(HC_OP_HTTP_PROXY_* 环境变量)。

适用检测条件

当代码中出现以下模式时,该技能适用:

  • Java 源码中读取 System.getenv("HC_OP_HTTP_PROXY_HOST")、System.getenv("HC_OP_HTTP_PROXY_PORT") 等手动代理配置;
  • 对 "OnPremise".equals(proxyType) 的代理类型判断处理;
  • 通过 urlConnection.setRequestProperty("SAP-Connectivity-ConsumerAccount", accountId) 设置消费者账户请求头;
  • 目标配置中出现 ProxyType=OnPremise。

前置条件

  • 工作目录:技能必须在应用由 jakarta-java25-migration 或 neo-to-cf-migration-orchestrator 生成的 -cf-migration 副本目录内运行;若当前目录不以 -cf-migration 结尾,需先切换。
  • 需先执行 sdk-replacement 技能(设置 SAP Cloud SDK,为必需前置)。
  • 需先执行 destinations 技能(配置 Destination 服务,为必需前置)。
  • 需要已安装并配置 Cloud Connector。

主要转换步骤

  1. 从 web.xml 移除 AuthenticationHeaderProvider:删除 authenticationHeaderProvider 的 resource-ref,SAP Cloud SDK 会自动为本地连接处理认证头。
  2. 移除手动代理处理:删除 getProxy 方法、injectHeader 方法等手动代理与请求头注入代码。
  3. 移除资源引用:从 web.xml 移除 connectivityConfiguration(ConnectivityConfiguration)的 resource-ref,以及 TenantContext 的 resource-ref(如存在)。
  4. 更新 MTA 描述文件:在 mtad.yaml 中为模块的 requires 添加 destination 和 connectivity 两项服务,并声明对应的 org.cloudfoundry.managed-service 资源,服务计划均为 lite。
  5. 配置 Cloud Connector:添加子账户(Region、Subaccount、Display Name),添加虚拟主机映射(Back-end Type、协议、内部主机与端口、虚拟主机与端口),并添加资源路径与访问策略(Allow)。
  6. 创建本地目标(Destination):在 BTP Cockpit 创建目标,属性包括 Name、Type(HTTP)、URL、Proxy Type(OnPremise)、Authentication,以及可选的 Location ID(对应 CloudConnectorLocationId)。
  7. 编程方式检查代理类型(如需要):通过 destination.getProxyType() == ProxyType.ON_PREMISE 判断是否使用本地连接,SDK 会自动处理代理。

使用方式(基于 Cloud SDK 的代码形态)

迁移后的代码使用 DestinationAccessor.getDestination(name).asHttp() 获取目标,并通过 HttpClientAccessor.getHttpClient(destination) 获取 HTTP 客户端。SDK 会自动完成:配置本地目标的代理、添加必需请求头(如 SAP-Connectivity-ConsumerAccount)、处理 Cloud Connector 集成。

配置与验证

  • 配置文件:应用内不新增配置文件,Cloud Connector 与目标均在外部配置。
  • CF 服务:destination(lite,用于目标配置)与 connectivity(lite,用于本地连接代理)。
  • 验证方式:mvn clean compile 编译检查;在 Cloud Connector 管理界面确认连接状态为 Connected 并核对虚拟主机映射;部署后通过 curl 访问 /connectivity?destname=on-premise-destination 测试;用 cf logs 过滤 connectivity/proxy 相关日志。

常见问题与限制

  • 连接被拒绝:通常是 Cloud Connector 未连接或配置错误,需检查状态、虚拟主机映射与 Location ID 是否匹配。
  • 本地资源返回 403:Cloud Connector 资源访问策略限制,需将路径加入允许资源。
  • 连接超时:网络问题或 Cloud Connector 防火墙,需确认本地服务器可达性、检查防火墙规则、必要时增加超时。
  • "No connectivity service bound":connectivity 服务未绑定,需确认 mtad.yaml 的 requires 中包含 ${app-name}-connectivity。
  • 该技能面向 SAP BTP Cloud Foundry 与 Cloud Connector 场景,需在指定的 -cf-migration 目录内运行,且依赖 SAP Cloud SDK 与 Destination 服务的前置配置。

架构概览

CF 应用请求经 Connectivity Service 代理转发至 Cloud Connector,再由 Cloud Connector 转发到本地后端系统。SDK 自动识别目标 ProxyType=OnPremise、将请求路由到 connectivity 服务代理并添加必需请求头。

后续步骤

完成本技能后,可继续执行 ../mail-destinations/SKILL.md 以配置本地邮件服务器。