问题标签 [sap-cloud-sdk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
387 浏览

java - 如何修复 SAP Cloud SDK 在应用程序启动期间引发的 DestinationAccessException

我想用 Spring 应用程序扩展 S/4HANA 云系统。可以无错误地构建应用程序,也可以将其部署到 SAP Cloud Platform。当后端应用程序启动时,它会引发错误。日志中的错误如下:

之后,似乎错误发生在带有DestinationAccessException的ServiceConfiguration.class中。

我已经检查并包含了这个: Creating ErpConfigContext throw exception

不幸的是,错误仍然相同。

以下是受影响部分的实现:

服务类

服务配置类

DestinationHelper.class

服务实现中是否存在错误甚至遗漏?根据错误日志,该服务似乎无法真正建立与目标的正确连接。

0 投票
1 回答
154 浏览

s4sdk - Maven依赖错误

从GitHub导入项目后,得到maven依赖错误

在此之后,只要我们现在打开命令,就会得到这些依赖错误所有的代码,如 google、sdk 等都变红并且无法识别。

0 投票
1 回答
348 浏览

s4sdk - 如何为 SCP 应用程序配置应用程序日志服务

我从 SAP Cloud SDK 原型创建了 hello world 应用程序,并将其推送到云代工环境,将其绑定到应用程序日志服务实例。我的理解是,这应该已经为我提供了分析云平台 Kibana 仪表板中所有日志的能力,并且以前它也以这种方式工作。

但是,这一次 Kibana 仪表板仍然是空的,所以我想知道我是否错过了一个步骤或配置。查看服务的文档和相应的教程博客,我无法确定任何额外的必需步骤。在 SCP 驾驶舱的日志视图中,我绝对可以看到这些条目,但它们不会在后台复制到 ELK 堆栈中。

0 投票
1 回答
113 浏览

java - 如何使用 S4 Cloud SDK Connectivity 访问 RabbitMQ 背后的目标服务

我们正在使用 S4SDK 访问目标服务。它需要在多租户环境中工作。通常,如果应用程序是前端应用程序,则请求上下文由用户请求触发。使用 approuter 和 XUAA 可以访问多租户的目标服务。在我们的例子中,我们的应用程序位于 RabbitMQ 之后,它不是由用户请求(例如 REST API 调用)触发的。目前我们正在使用来自云 SDK 的 com.sap.cloud.sdk.cloudplatform.connectivity.DestinationAccessor 类。我们可以从消息(RabbitMQ/AMQP)中检索租户 ID。问题是我们找不到从 S4SDK 注入租户 ID 或将 JWT 令牌克隆到 DestinationAccessor 的方法。我们寻找如何实现这一目标的方法/指导。我们希望这个交换/克隆令牌由 SDK 提供。

0 投票
1 回答
136 浏览

sap-cloud-sdk - 用于集成测试的 VDM

我曾使用 VDM 来使用外部 ODATA 服务。它运作良好。现在我正在尝试使用 VDM 进行集成测试,以便使用 CAP 模型测试创建的 ODATA 服务。

我在集成测试中使用 restTemplate.exchange() 来测试 ODATA 服务。它运作良好。现在我决定使用 SDK VDM 方法。VDM 文件已成功生成。但是在尝试运行集成测试时,它失败并出现异常

com.sap.cloud.sdk.cloudplatform.exception.ShouldNotHappenException: java.lang.NullPointerException: 尝试调用从局部变量加载的空对象的方法 com.google.gson.JsonObject.get(java.lang.String) 'xsuaaServiceCredentials'

我确实传递了本地 JWT 令牌和环境变量中设置的 VCAP_SERVICES。

堆栈跟踪

0 投票
0 回答
135 浏览

s4sdk - 由 S4 SDK VDM 提供支持的集成测试在 Maven 构建期间失败

我在集成测试中使用了 S4SDK VDM 来测试我的 ODATA 服务。在实施过程中出现了一些问题,Alexander 让我让它发挥作用。(用于集成测试的 VDM

当我在 Eclipse 中执行 JUnit 时,它运行良好。但是,当 JUnit 在管道中的 Maven Build/ 期间运行时,它会失败并出现以下错误

[错误] 错误:[错误] BusinessServiceIT.createBusinessService:132->createLandscapeObject:214 » ErpOData

目标\肯定报告

0 投票
1 回答
6264 浏览

s4sdk - 使用 App-To-App SSO 向 S/4 的主体传播

当来自 App-To-App SSO 请求时,我无法使用 Principal Propagation 调用 S/4。SDK是否支持这种场景?

我们在 SCP Neo 中有一个 HTML5 应用,在同一个子账户中有一个 Java 应用。我们的目的是让 HTML5 应用程序获取 SAML2 令牌(从外部 IdP),然后使用 App-To-App SSO 将令牌转发到 Java 应用程序,并最终使用原始 SAML2 令牌使用 Principal Propagation 调用 S/4(来自 IdP)。

总结一下,请求流程如下:

  1. HTML5 应用从外部 IdP 获取 SAML2 令牌
  2. HTML5 应用通过 App-To-App SSO 的目的地调用 Java 应用
  3. Java 应用程序使用 Principal Propagation 通过目标调用 S/4

我们的预期是,在第 3 步,对 S/4 的请求将使用第 1 步中的 SAML2 令牌。相反,似乎 SCP 在使用 App-To-App SSO 调用目的地时创建了另一个 SAML2 令牌。

使用此配置,S/4 SDK 无法获取元数据,甚至无法到达云连接器。相反,它无法构建 Principal Propagation 标头,引发异常,如下面的堆栈跟踪中所示:

我确定云连接器配置(包括信任配置)是正确的,因为如果我直接调用 Java 应用程序,主体传播可以完美运行。仅当请求来自 HTML5 应用程序时才会出现此问题。

你能帮我理解为什么这种情况不起作用吗?谢谢你。

0 投票
1 回答
3261 浏览

sap-cloud-sdk - Jenkins 的代理配置不适用于 groovy 管道脚本?

目前,我面临的问题是我试图在代理后面设置 S4SDK jenkins 管道。

为此,我相应地调整了 server.cfg 中的配置,它还在 Jenkins 服务器日志中显示,使用了此配置:

然而,在管道执行期间,更具体地说,在最后执行 s4sdkQualityChecks 时,checkHystrix.groovy 脚本使用葡萄来拉取另一个依赖项:

但是,无法解决此依赖关系,并出现以下堆栈跟踪:

代理本身也被配置为在管道中执行 Maven,因此它应该主要工作。不确定我是否错过了另一个配置选项,但到目前为止还没有找到。对此的任何建议将不胜感激。

更新

当前失败的步骤现在是带有以下日志跟踪的 checkServices.groovy 步骤:

0 投票
1 回答
74 浏览

sap-cloud-sdk - 除了最新的依赖版本之外,更新 cloud-s4-sdk-pipeline 的 Npm 依赖审计错误

我们切换到最新版本 (21) 的 cloud-s4-sdk-pipeline。新功能有效,但除了最新的依赖版本外,我们还会遇到npm 依赖审计错误。

调查结果摘要

你有过类似的问题吗?有可用的解决方案吗?

0 投票
1 回答
231 浏览

java - 在 Cloud SDK 中使用 XSTokenRequest 获取令牌

我们使用 xs 安全库根据令牌类型(client_credentials/user_token)获取令牌。如果不使用 xs 安全库,我无法在 Cloud SDK 的安全功能中复制相同的内容。

背景:

  • 我们希望根据令牌的类型使用服务凭证来完成令牌交换。

使用 xs 安全依赖项,我们使用以下代码使用客户端凭据获取技术令牌/用户令牌。

我已使用以下依赖项来试用云 SDK 的安全性。

我找不到任何方法来复制与上述相同的方法。

我只能找到一种基于绑定到应用程序的 xsuaa 实例来获取令牌的方法,如下所述:

Cloud SDK 是否支持此功能?