在Cloud Foundry中访问SAP Java Connector

2020-08-22 02:23发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我正在尝试弄清楚访问Cl...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在尝试弄清楚访问Cloud Foundry上的SAP Java Connector所需的资源。 根据文档中的页,需要完成三件事 满意:

  1. 我必须使用SAP Java Buildpack
  2. 我必须将应用程序绑定到连接服务的实例
  3. 我必须将应用程序绑定到目标服务的实例

我创建了一个简单的maven项目,在此我满足了所有这三个条件。 可以在此处找到该项目的代码。

我的主要方法:

公共静态void main(String [] args)
 {
     尝试{
         JCoDestination目的地= JCoDestinationManager.getDestination(" TEST");
         System.out.println("目标存在:" + destination.getDestinationName());
     } catch(JCoException e){
         e.printStackTrace();
     }
 } 

我正在使用此依赖关系来访问JCo类(来自教程):

 
    com.sap.cloud 
    neo-java-web-api 
    [3.71.8,4.0.0)
   提供
  

这是我的清单文件:

-
 应用范围:

   -名称:jco-poc
     构建包:
       -sap_java_buildpack
     服务:
       -jco_poc_connection_service
       -jco_poc_destination_service 

但是,当我推送应用程序时,出现以下错误:

 ERR错误:发生了JNI错误,请检查您的安装并重试
 错误(/bas/sapjvm/81_REL/src/8/jdk/src/share/bin/java.c 1628)
 线程"主"中的ERR异常java.lang.NoClassDefFoundError:com/sap/conn/jco/JCoException
 java.lang.Class.getDeclaredMethods0(本地方法)处的ERR
 java.lang.Class.privateGetDeclaredMethods的ERR(Class.java:2724)
 java.lang.Class.privateGetMethodRecursive的ERR(Class.java:3071)
 java.lang.Class.getMethod0(Class.java:3041)的ERR
 java.lang.Class.getMethod(Class.java:1807)的ERR
 sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:564)的ERR
 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:546)的ERR
 ERR原因:java.lang.ClassNotFoundException:com.sap.conn.jco.JCoException
 java.net.URLClassLoader.findClass(URLClassLoader.java:444)的ERR
 java.lang.ClassLoader.loadClass的ERR(ClassLoader.java:480)
 sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:384)的ERR
 java.lang.ClassLoader.loadClass上的ERR(ClassLoader.java:413)
 ERR ...另外7个
 

如果他们希望使用SAP Java Connector或指出我在示例中做错了什么,您可以详细说明应用程序的要求。

我使用正确的依赖项吗?

非常感谢您的帮助。

6条回答
太Q了
2020-08-22 02:57

Jaeschke Reinhard 我正在 在http请求范围之外调用Java连接器时,也会遇到同样的问题。

迁移博客文章概述了在给定上下文中调用代码的不同方法。 我没有用JCo尝试所有这些方法,因此我怀疑JCo读取用户信息的方式有问题。

但是,我找到了一种解决方法,可以使用该解决方法,直到问题解决为止。 这是使用从客户端凭据生成的XSUAA令牌调用应用程序中的终结点。 在该servlet的上下文中,JCo可以工作。

您可以通过以下方式获取令牌:

 AuthToken令牌= AuthTokenAccessor.getXsuaaServiceToken(); //用于Cloud SDK方法的AuthToken

 字符串bearerToken = token.getJwt()。getToken(); //与授权标头一起使用的字符串令牌
可以通过包含以下依赖项来使用

AuthTokenAccessor:

 
      com.sap.cloud.sdk.cloudplatform 
     安全性
      3.13.0 
  

一周热门 更多>