在Java EE中为SAP Cloud Platform使用目标

时间:2018-11-05 15:27:13

标签: java servlets sap-cloud-platform

第一次尝试:

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

FYI-在Eclipse Oxygen中使用neo-java-web-sdk-3.66.4.1。

您不能在Servlet中为HTTPClient使用硬编码的URL吗? 如何解决com.sap.core.connectivity.api.http.HttpDestination参考问题? 如果代码正在使用目标,您还能在本地测试应用程序吗?

1 个答案:

答案 0 :(得分:1)

我强烈建议将SAP S/4HANA Cloud SDK用于此类任务。它是通过为所有Cloud Platform机制提供易于使用的机制而开发的,可简化SAP Cloud Platform应用程序的开发。

关于手头的任务,您可以像这样使用DestinationAccessor类:

DestinationAccessor.getDestination("MyDestinationName");

鉴于您已经在云计算座舱中的空间中配置了一个目的地,这将解析该目的地并将其传递给代码的其他部分。这适用于Neo和Cloud Foundry。

如果这听起来可以解决您的问题,我建议您检出this blog post series来开始使用。

或者,您也可以简单地将以下依赖项添加到项目中,以开始测试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

希望这会有所帮助!