0

介绍

我有一个 SAP HANA 云平台帐户。我还为该帐户部署了一个 Java 应用程序并创建了一个测试 servlet,它返回虚拟数据。

另一方面,我有一个在 WebIDE 上开发的 SAP UI5 应用程序。我还创建了两个目的地:

  • 目标“virtualTEST”连接到 SAP 后端系统(HANA 云连接器)
  • 目标“javaTEST”已连接到我的 Java servlet 应用程序

neo-app.json 配置良好,可以从测试 servlet(虚拟数据)和 SAP 后端系统(OData Gateway)中获取数据。

问题

现在我想将变量传递给 SAP 后端系统(virtualTEST)目标,该目标在前端不可见以避免 javascript 操作。

我的第一个想法

我的第一个想法是我创建一个充当代理的新 servlet。在 SAPUI5 中,我从 javaTEST 目标调用 servlet 并传递“隐藏变量” /testServlet?targetUrl=https://webide-xxx.hana.ondemand.com/sap/opu/odata/TEST_SRV/TEST?$filter=Var eq '{{MYVAR}}',Java 应用程序将 {{MYVAR}} 替换为我的真实变量。然后将加载目标(这也是我的 SAPUI5 应用程序的目标 url)。这不起作用,我不知道为什么,但我认为代理无法从应用程序的目的地获取数据。

另外,我认为这不是最好的解决方案。如何解决?有什么想法或最佳实践吗?目的地可以在Java应用程序中使用吗?:)

4

1 回答 1

0

我不太清楚你想要达到什么目标。当然,您可以从 Java 调用目的地。

<resource-ref>
    <res-ref-name>myBackend</res-ref-name>
    <res-type>com.sap.core.connectivity.api.http.HttpDestination</res-type>
</resource-ref>

import javax.naming.Context;
import javax.naming.InitialContext;
import com.sap.core.connectivity.api.http.HttpDestination;
...

// coding to lookup the destination "myBackend"
Context ctx = new InitialContext();
HttpDestination destination = (HttpDestination) 
ctx.lookup("java:comp/env/myBackend");


    // coding to call service "myService" on the system configured in the given destination
    HttpClient createHttpClient = destination.createHttpClient();
    HttpGet get = new HttpGet("myService");
    HttpResponse resp = createHttpClient.execute(get);

来自官方文档。如果您愿意,可以在 HttpGet 中设置 Params。在我看来,您的后端应该如此节省,您不必担心 Javascript 操作,尤其是对于暴露的 OData 服务

问候马蒂亚斯

于 2017-04-07T12:15:57.073 回答