我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用SAP云平台 + JNDI访问Internet Service

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用SAP云平台 + JNDI访问Internet Service

如何使用SAP云平台 + JNDI访问Internet Service,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

如何使用SAP云平台 + JNDI访问Internet Service

以Internet Service http://maps.googleapis.com/maps/api/distancematrix/xml?origins=Walldorf&destinations=Berlin为例,

在浏览器里访问这个url,得到输出:从Walldorf到Berlin的距离。

如何使用SAP云平台 + JNDI访问Internet Service

如何让一个部署到SAP云平台的Java应用也能访问到该internet service呢?

首先在SAP云平台里创建一个destination,维护service的end point:

如何使用SAP云平台 + JNDI访问Internet Service

在Java代码里使用SAP云平台里创建的destination:

如何使用SAP云平台 + JNDI访问Internet Service

然后使用JNDI service读取destination里配置的url:

如何使用SAP云平台 + JNDI访问Internet Service

部署到SAP云平台之后,在Eclipse里看到preview结果:

如何使用SAP云平台 + JNDI访问Internet Service

SAP云平台Cockpit显示如下:

如何使用SAP云平台 + JNDI访问Internet Service

浏览器访问如下:

如何使用SAP云平台 + JNDI访问Internet Service

web.xml:

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <!-- Main sample servlet mapped to / so that the integration test harness can detect readiness (generic for all samples) --> <servlet> <servlet-name>ConnectivityServlet</servlet-name> <servlet-class>com.sap.cloud.sample.connectivity.ConnectivityServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ConnectivityServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- Declare the JNDI lookup of destination --> <resource-ref> <res-ref-name>connectivityConfiguration</res-ref-name> <res-type>com.sap.core.connectivity.api.configuration.ConnectivityConfiguration</res-type> </resource-ref> </web-app>
package com.sap.cloud.sample.connectivity; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; import javax.annotation.Resource; import javax.naming.Context; import javax.naming.InitialContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.sap.cloud.account.TenantContext; import com.sap.core.connectivity.api.configuration.ConnectivityConfiguration; import com.sap.core.connectivity.api.configuration.DestinationConfiguration; public class ConnectivityServlet extends HttpServlet { @Resource private TenantContext  tenantContext; private static final long serialVersionUID = 1L; private static final int COPY_CONTENT_BUFFER_SIZE = 1024; private static final Logger LOGGER = LoggerFactory.getLogger(ConnectivityServlet.class); private static final String ON_PREMISE_PROXY = "OnPremise"; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        HttpURLConnection urlConnection = null;        String destinationName = request.getParameter("destname"); if (destinationName == null) {            destinationName = "google_map";        } try {            Context ctx = new InitialContext();            ConnectivityConfiguration configuration = (ConnectivityConfiguration) ctx.lookup("java:comp/env/connectivityConfiguration");            DestinationConfiguration destConfiguration = configuration.getConfiguration(destinationName); if (destConfiguration == null) {                response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,                        String.format("Destination %s is not found. Hint:" + " Make sure to have the destination configured.", destinationName)); return;            }            String value = destConfiguration.getProperty("URL");            URL url = new URL(value + "xml?origins=Walldorf&destinations=Paris");            String proxyType = destConfiguration.getProperty("ProxyType");            Proxy proxy = getProxy(proxyType);            urlConnection = (HttpURLConnection) url.openConnection(proxy);            injectHeader(urlConnection, proxyType);            InputStream instream = urlConnection.getInputStream();            OutputStream outstream = response.getOutputStream();            copyStream(instream, outstream);        } catch (Exception e) {            String errorMessage = "Connectivity operation failed with reason: " + e.getMessage()                    + ". See " + "logs for details. Hint: Make sure to have an HTTP proxy configured in your " + "local environment in case your environment uses " + "an HTTP proxy for the outbound Internet " + "communication.";            LOGGER.error("Connectivity operation failed", e);            response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,                    errorMessage);        }    } private Proxy getProxy(String proxyType) {        Proxy proxy = Proxy.NO_PROXY;        String proxyHost = null;        String proxyPort = null; if (ON_PREMISE_PROXY.equals(proxyType)) { // Get proxy for on-premise destinations proxyHost = System.getenv("HC_OP_HTTP_PROXY_HOST");            proxyPort = System.getenv("HC_OP_HTTP_PROXY_PORT");        } else { // Get proxy for internet destinations proxyHost = System.getProperty("https.proxyHost");            proxyPort = System.getProperty("https.proxyPort");        } if (proxyPort != null && proxyHost != null) { int proxyPortNumber = Integer.parseInt(proxyPort);            proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPortNumber));        } return proxy;    } private void injectHeader(HttpURLConnection urlConnection, String proxyType) { if (ON_PREMISE_PROXY.equals(proxyType)) { // Insert header for on-premise connectivity with the consumer account name urlConnection.setRequestProperty("SAP-Connectivity-ConsumerAccount",                    tenantContext.getTenant().getAccount().getId());        }    } private void copyStream(InputStream inStream, OutputStream outStream) throws IOException { byte[] buffer = new byte[COPY_CONTENT_BUFFER_SIZE]; int len; while ((len = inStream.read(buffer)) != -1) {            outStream.write(buffer, 0, len);        }    }}

关于如何使用SAP云平台 + JNDI访问Internet Service问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用SAP云平台 + JNDI访问Internet Service

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用SAP云平台 + JNDI访问Internet Service

如何使用SAP云平台 + JNDI访问Internet Service,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。以Internet Service http://map
2023-06-04

如何使用SAP云平台的destination消费Internet上的OData service

如何使用SAP云平台的destination消费Internet上的OData service,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。通过SAP云平台上的
2023-06-04

如何使用SAP云平台Mobile Service开发移动应用

本篇文章给大家分享的是有关如何使用SAP云平台Mobile Service开发移动应用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。今天要介绍的是SAP推出的另一种移动应用开发
2023-06-03

如何在SAP云平台的Cloud Foundry环境下添加新的Service

这期内容当中小编将会给大家带来有关如何在SAP云平台的Cloud Foundry环境下添加新的Service,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我想在SAP云平台的Cloud Foundry环境
2023-06-04

如何使用SAP云平台Android SDK创建Mobile应用

本篇内容主要讲解“如何使用SAP云平台Android SDK创建Mobile应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用SAP云平台Android SDK创建Mobile应用”吧!
2023-06-03

如何使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数

小编给大家分享一下如何使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!为了确保Internet应用能够访问Cor
2023-06-04

SAP云平台CloudFoundry中的用户如何自定义变量

SAP云平台CloudFoundry中的用户如何自定义变量,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。CloudFoundry应用的manifest.xml里的env区域
2023-06-04

如何在Java代码中使用SAP云平台CloudFoundry环境的环境变量

本文使用的例子源代码在我的github上。在我的公众号文章在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务介绍了如何通过Cloud Connector连接ABAP On-Premise系统。
2023-06-04

如何上传HTML5应用到SAP云平台的Cloud Foundry环境下

先使用WebIDE创建一个HTML5应用。New->Project from Template:
2023-06-02

如何通过使用JDBC操作部署在SAP云平台上的HANA数据库

如何通过使用JDBC操作部署在SAP云平台上的HANA数据库,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我介绍了如何通过JPA和EclipseLink操作部署
2023-06-02

如何使用Go语言和Redis开发在线问答平台

如何使用Go语言和Redis开发在线问答平台简介在线问答平台是一种非常常见的社交平台,它允许用户发布问题并获取其他用户的回答。在本文中,我们将使用Go语言和Redis数据库来开发一个简单的在线问答平台。Go语言是一种高效、可靠的编程语言,而
2023-10-27

如何使用阿里云服务器搭建刷课平台

随着互联网的普及和科技的发展,越来越多的网络课程被开发出来,为广大学生和成人提供了方便快捷的学习方式。然而,许多在线课程的资源却需要付费才能获取,这无疑增加了学习的难度和成本。因此,许多学习者开始寻求免费获取课程资源的方法。其中,刷课已经成为一种非常流行的获取免费资源的方式。本文将详细说明如何使用阿里云服务器搭建
如何使用阿里云服务器搭建刷课平台
2023-10-31

云服务器如何使用外网IP访问

通过以下步骤,您可以使用外网IP访问云服务器:申请外网IP绑定外网IP到弹性网卡配置安全组允许入方向访问设置防火墙允许访问验证访问确保弹性网卡与云服务器在同一可用区,验证访问时目标端口已开启。具体操作步骤可能因云服务提供商而异。
云服务器如何使用外网IP访问
2024-04-10

云服务器如何使用外网IP访问

要使用云服务器的外网IP访问,您可以按照以下步骤操作:1. 获取云服务器的外网IP地址:登录到云服务提供商的管理控制台,找到您的云服务器实例,查看其外网IP地址。2. 确保云服务器的安全组配置允许对所需端口的外部访问:安全组是云服务提供商用
2023-09-27

如何使用本机访问阿里云数据库

阿里云数据库是一个强大、可靠的云数据库服务,它能够帮助企业和个人轻松地管理和使用数据。然而,有些用户可能想要使用本机访问阿里云数据库,以便更好地控制和管理他们的数据。本篇文章将详细介绍如何使用本机访问阿里云数据库。如何使用本机访问阿里云数据库:创建阿里云数据库实例首先,你需要在阿里云上创建一个数据库实例。你可以在
如何使用本机访问阿里云数据库
2023-12-09

如何使用阿里云数据库访问外网

随着互联网技术的发展,数据已经成为企业的重要资产,对于数据库的访问也成为企业日常操作的一部分。而阿里云数据库作为一种强大的数据库服务,其访问外网的功能更是受到许多企业的青睐。然而,许多用户可能会遇到阿里云数据库无法访问外网的问题。这篇文章将详细介绍如何使用阿里云数据库访问外网,希望能帮助到需要的用户。一、设置数据
如何使用阿里云数据库访问外网
2023-11-08

如何使用境外访问阿里云服务器

在现代社会,越来越多的企业和个人开始将业务迁移到云端,阿里云作为国内领先的云计算服务提供商之一,也吸引了众多用户的关注。然而,由于一些政策和地理因素,有些用户可能无法直接从境内访问阿里云服务器,这就需要我们学习如何使用境外访问阿里云服务器的方法。本文将为您介绍几种常见的方法,帮助您解决境外访问阿里云服务器的问题。
如何使用境外访问阿里云服务器
2024-01-17

如何使用IP地址访问阿里云服务器

本文将介绍如何在阿里云服务器上设置IP地址,以便通过IP地址来访问服务器。我们将从设置安全组规则、配置弹性公网IP和修改实例属性三个方面展开讲解。设置安全组规则要使IP地址能够访问阿里云服务器,首先需要设置安全组规则。安全组是阿里云服务器的一种网络安全控制手段,它允许或拒绝来自特定IP地址范围的流量通过防火墙。登
如何使用IP地址访问阿里云服务器
2024-01-18

如何使用阿里云服务器挂域名访问

本文介绍如何使用阿里云服务器挂域名访问。简介:阿里云服务器是一种高性能、可扩展的计算资源,可以用来搭建网站、部署应用程序等。本文将详细介绍如何使用阿里云服务器挂域名访问,包括如何购买服务器、设置域名解析、配置网站目录等步骤。购买阿里云服务器在阿里云官方网站上选择合适的服务器类型和配置,然后按照提示完成购买流程。在购买过
如何使用阿里云服务器挂域名访问
2024-01-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录