如何使用SAP云平台 + JNDI访问Internet Service
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,如何使用SAP云平台 + JNDI访问Internet Service,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。以Interne
千家信息网最后更新 2026年10月31日如何使用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云平台的Java应用也能访问到该internet service呢?
首先在SAP云平台里创建一个destination,维护service的end point:
在Java代码里使用SAP云平台里创建的destination:
然后使用JNDI service读取destination里配置的url:
部署到SAP云平台之后,在Eclipse里看到preview结果:
SAP云平台Cockpit显示如下:
浏览器访问如下:
web.xml:
ConnectivityServlet com.sap.cloud.sample.connectivity.ConnectivityServlet ConnectivityServlet / connectivityConfiguration com.sap.core.connectivity.api.configuration.ConnectivityConfiguration
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问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
平台
问题
更多
浏览器
帮助
浏览
解答
易行
简单易行
代码
内容
小伙
小伙伴
方法
知识
篇文章
结果
行业
资讯
资讯频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司排名
博彦科技互联网金融
西安纸贵互联网科技有限公司
深圳科技互联网
金融科技 互联网金融
科技服务与互联网
安徽鑫晟辉互联网科技
华中科技大学互联网
友谊互联网络科技
互联网金融监管科技
互联网科技类展会
哈尔滨新华互联网科技
互联网科技股午盘股票涨跌
华夏互联网科技业
互联网公司高科技产品
互联网企业科技类企业如何做账
张召忠谈中国互联网科技
互联网科技融合创新
黑龙江互联网科技公司
互联网科技创业计划的风险分析
互联网是第几次科技革命的成果
青岛互联网科技公司
嘟嘟瓜互联网科技
融势互联网科技
互联网科技股有哪些
互联网 科技服务平台
现代互联网科技股
江苏互联网智能科技产品出厂价
求路客互联网科技电话
互联网的黑科技实验室