我有一个SAP HANA Cloud Platform帐户。我还在帐户中部署了一个Java应用程序,并创建了一个测试servlet,它返回虚拟数据。
另一方面,我有一个SAP UI5应用程序,我在WebIDE上开发。我还创建了两个目的地:
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应用程序中使用目标吗? :)
答案 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