Использование пунктов назначения в Java EE для SAP Cloud Platform - PullRequest
0 голосов
/ 05 ноября 2018

Первая попытка:

HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);

URL является жестко закодированной строкой. Таким образом, приложение работает локально с использованием сервера Tomcat, но не при работе на SAP Cloud Platform. На SCP это приведет к Caused by: java.net.ConnectException: Connection timed out (Connection timed out) (local port 53603 to address 0.0.0.0, remote port 443 to address xxx.xxx.xxx.xxx.

Вторая попытка:

    Context ctx = new InitialContext();
    HttpDestination destination = (HttpDestination) ctx.lookup("java:comp/env/myDestination");
    HttpClient client = destination.createHttpClient();

с использованием web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <display-name>myApp</display-name>
  <resource-ref>
    <res-ref-name>myDestination</res-ref-name>
    <res-type>com.sap.core.connectivity.api.http.HttpDestination</res-type>
</resource-ref>
</web-app>

В этом случае import com.sap.core.connectivity.api.http.HttpDestination;

cannot be resolved and when I run in ton SCP it shows similar errors:
with root cause java.lang.Error: Unresolved compilation problems: 
HttpDestination cannot be resolved to a type
HttpDestination cannot be resolved to a type

К вашему сведению - Использование neo-java-web-sdk-3.66.4.1 в Eclipse Oxygen.

Не можете ли вы использовать жестко закодированные URL для HTTPClient в сервлете? Как решить проблему с справкой com.sap.core.connectivity.api.http.HttpDestination? Можете ли вы по-прежнему тестировать приложение локально, если код использует пункты назначения?

1 Ответ

0 голосов
/ 20 ноября 2018

Я настоятельно рекомендую использовать SAP S / 4HANA Cloud SDK для таких задач. Это SDK, разработанный для упрощения создания приложений для SAP Cloud Platform, предоставляя простые в использовании механизмы для всех механизмов Cloud Platform.

Что касается вашей задачи, есть класс DestinationAccessor, который вы можете использовать следующим образом:

DestinationAccessor.getDestination("MyDestinationName");

Учитывая, что вы настроили пункт назначения в своем пространстве в облачной кабине, это разрешит этот пункт назначения и позволит вам передать его другим частям вашего кода. Это работает как на Neo, так и на Cloud Foundry.

Если это звучит так, как будто это может решить вашу проблему, я рекомендую ознакомиться с этой статьей в блоге , чтобы начать.

Кроме того, вы можете просто добавить следующую зависимость в ваш проект, чтобы начать тестирование SDK:

<dependency>
    <groupId>com.sap.cloud.s4hana.cloudplatform</groupId>
    <artifactId>scp-neo</artifactId>
    <version>2.7.0</version>
</dependency>

Для Cloud Foundry используйте scp-cf вместо scp-neo.

Надеюсь, это поможет!

...