Прокси-сервлет SAP HCP Java для маскировки переменной

Вступление

У меня есть учетная запись SAP HANA Cloud Platform. Я также развернул приложение Java для учетной записи и создал тестовый сервлет, который возвращает фиктивные данные.

С другой стороны, у меня есть приложение SAP UI5, которое я разрабатываю на WebIDE. Я также создал два направления:

  • Пункт назначения virtualTEST подключен к серверной системе SAP (коннектор HANA Cloud).
  • Пункт назначения "javaTEST" подключен к моему сервлетному приложению Java.

Neo-app.json хорошо настроен и может получать данные из тестового сервлета (фиктивные данные) и данные из серверной системы SAP (OData Gateway).

Эта проблема

Теперь я хочу передать переменные в пункт назначения серверной системы SAP (virtualTEST), который должен не отображаться во внешнем интерфейсе, чтобы избежать манипуляций с javascript.

Моя первая мысль

Моей первой мыслью было создание нового сервлета, который действует как прокси. В SAPUI5 я вызываю сервлет из пункта назначения javaTEST и передаю «скрытые переменные», такие как /testServlet?targetUrl=https://webide-xxx.hana.ondemand.com/sap/opu/odata/TEST_SRV/TEST?$filter=Var eq '{{MYVAR}}', и приложение Java заменяет {{MYVAR}} моей реальной переменной. Затем будет загружена цель (это также целевой URL-адрес моего приложения SAPUI5). Это не работает, я не знаю почему, но я думаю, что прокси не может получить данные из места назначения приложения.

Кроме того, я считаю, что это не лучшее решение. Как это можно решить? Есть идеи или лучшие практики? Можно ли использовать назначения в приложении Java? :)


person Matthias Günter    schedule 31.05.2016    source источник


Ответы (1)


Мне не совсем понятно, чего вы хотите достичь. Конечно, вы можете звонить в пункты назначения с 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, если хотите. На мой взгляд, ваш Backend должен быть таким, чтобы вам не приходилось беспокоиться о манипуляциях с Javascript, особенно для открытых служб OData.

С уважением, Матиас

person Mathias Maerker    schedule 07.04.2017