SAP HCP Java代理servlet用于屏蔽变量

时间:2016-05-31 14:07:49

标签: javascript java sap

简介

我有一个SAP HANA Cloud Platform帐户。我还在帐户中部署了一个Java应用程序,并创建了一个测试servlet,它返回虚拟数据。

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

  • 目的地" 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应用程序中使用目标吗? :)

1 个答案:

答案 0 :(得分: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服务

此致 的Mathias