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