Определение и оформление пункта назначения для вызова BAPI локально и на SCP с помощью SAP Cloud SDK 3.0 + - PullRequest
0 голосов
/ 07 апреля 2020

Я ищу способ вызова BAPI S4HANA на месте и на SAP Cloud Platform с помощью Cloud SDK.

Проблема заключается в том, как определить назначения RF C точно так же, как и HTTP. Я также встретился с классом JCO, не обнаружившим исключение, и не смог найти подходящий обходной путь.

Локально

В HTTP-назначении я могу предоставить переменные среды, подобные следующим:

set destinations=[{name: "destName", url: "URL", username: "username", password: "password"}]

Но не ясно, как определить назначение RF C, какие свойства являются обязательными, например свойства jco.

SCP Cloud Foun dry

Я создал пункт назначения RF C в SAP Cloud Platform. enter image description here Но я не смог найти способ украсить это место назначения, чтобы задействовать дополнительные свойства в Cloud SDK точно так же, как назначение HTTP.

Destination destination = DestinationAccessor.getDestination(destName);
destination.asHttp().decorate(DefaultErpHttpDestination::new);  

Обратите внимание, что когда я выполняю вызов bapi, RfcDestination не является приемлемым, требуется только тип Destination. RfcDestination не является классом реализации интерфейса Destination.

enter image description here

JCO Class Не найдено исключение

java .lang.NoClassDefFoundError: com / sap / conn / jco / JCo

Существует известная проблема при использовании SAP Java Build Pack с загрузкой Spring. Я добавил файл jar sapjco3.jar вручную в classpath проекта. Но это все равно не сработало.

https://answers.sap.com/questions/12935437/call-op-bapi-using-cloud-sdk.html

Обновление

Исключение JCO класса не найдено во время выполнения

  1. Вы правы. Я развернул приложение на SCP и затем вызвал остальные API, которые я предоставил, чтобы вызвать BAPI локальной системы S4HANA. Затем я получил это исключение во время выполнения.
  2. Я использую приложение Spring Boot.
  3. Загрузочный проект Spring создается весенним архетипом SAP Cloud SDK.
  4. Пожалуйста, см. трассировка стека ошибок ниже.
  5. Щелкните правой кнопкой мыши мой проект -> путь сборки -> настроить путь сборки -> выберите вкладку библиотеки -> добавить внешние файлы jar
  6. Я развернул свое приложение в виде файла Jar.

Трассировка стека исключений

2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: com/sap/conn/jco/JCoException
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.servlet.RequestAccessorFilter.lambda$doFilter$1(RequestAccessorFilter.java:71)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.thread.AbstractThreadContextExecutor.lambda$execute$0(AbstractThreadContextExecutor.java:317)
2020-04-09T01:55:46.220+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.thread.ThreadContextCallable.call(ThreadContextCallable.java:247)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.thread.AbstractThreadContextExecutor.execute(AbstractThreadContextExecutor.java:319)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.servlet.RequestAccessorFilter.doFilter(RequestAccessorFilter.java:71)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
2020-04-09T01:55:46.221+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1579)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at java.lang.Thread.run(Thread.java:836)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR Caused by: java.lang.NoClassDefFoundError: com/sap/conn/jco/JCoException
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.s4hana.connectivity.rfc.BapiTransactionFactory.createJCoTransaction(BapiTransactionFactory.java:33)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.s4hana.connectivity.rfc.AbstractTransactionFactory.createTransaction(AbstractTransactionFactory.java:39)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.s4hana.connectivity.rfc.RemoteFunctionRequestExecutor.execute(RemoteFunctionRequestExecutor.java:41)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.s4hana.connectivity.rfc.BapiRequest.execute(BapiRequest.java:79)
2020-04-09T01:55:46.222+0000 [APP/PROC/WEB/0] ERR   at com.bosch.test.service.CostCenterBapiService.getCostCenters(CostCenterBapiService.java:48)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at com.bosch.test.controllers.CostCenterBapiController.getCostCenterBapi(CostCenterBapiController.java:23)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at java.lang.reflect.Method.invoke(Method.java:498)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   ... 47 more
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR Caused by: java.lang.ClassNotFoundException: com.sap.conn.jco.JCoException
2020-04-09T01:55:46.223+0000 [APP/PROC/WEB/0] ERR   at java.net.URLClassLoader.findClass(URLClassLoader.java:444)
2020-04-09T01:55:46.224+0000 [APP/PROC/WEB/0] ERR   at java.lang.ClassLoader.loadClass(ClassLoader.java:480)
2020-04-09T01:55:46.224+0000 [APP/PROC/WEB/0] ERR   at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:92)
2020-04-09T01:55:46.224+0000 [APP/PROC/WEB/0] ERR   at java.lang.ClassLoader.loadClass(ClassLoader.java:413)
2020-04-09T01:55:46.224+0000 [APP/PROC/WEB/0] ERR   ... 64 more

Одна вещь, которую я хочу выделить, - это официальная документация, предоставленная SAP: « Невозможно использовать SAP Java Connector с Приложения Spring Boot".

https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/3cee866c27ec4492b789b10c5d52d94b.html

SAP Java Разъем с приложением без пружинной загрузки

Я создал новый проект на основе архетипов SAP Cloud SDK scp-cf-tomee и попытался вызвать bapi. Проблема JCo исчезла, я думаю, но я получил новое исключение «Информация о пользователе не установлена» при вызове Bapi. У кого-то есть похожая проблема, но, похоже, решения пока нет.

https://answers.sap.com/questions/12969692/getting-access-to-the-sap-java-connector-in-cloud.html

2020-04-09T02:25:37.146+0000 [APP/PROC/WEB/0] ERR java.lang.IllegalStateException: User information is not set.
2020-04-09T02:25:37.146+0000 [APP/PROC/WEB/0] ERR   at com.sap.xs.security.UserInfoHolder.getUserInfo(UserInfoHolder.java:48)
2020-04-09T02:25:37.146+0000 [APP/PROC/WEB/0] ERR   at com.sap.core.connectivity.jco.kotyo.cf.auth.CFTenantProvider.getCurrentTenant(CFTenantProvider.java:21)
2020-04-09T02:25:37.146+0000 [APP/PROC/WEB/0] ERR   at com.sap.conn.jco.rt.TenantContextManager.getTenantContext(TenantContextManager.java:36)
2020-04-09T02:25:37.146+0000 [APP/PROC/WEB/0] ERR   at com.sap.conn.jco.rt.DefaultDestinationManager.searchDestination(DefaultDestinationManager.java:376)
2020-04-09T02:25:37.146+0000 [APP/PROC/WEB/0] ERR   at com.sap.conn.jco.rt.DefaultDestinationManager.getDestinationInstance(DefaultDestinationManager.java:109)
2020-04-09T02:25:37.146+0000 [APP/PROC/WEB/0] ERR   at com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:56)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.s4hana.connectivity.rfc.JCoTransaction.<init>(JCoTransaction.java:99)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.s4hana.connectivity.rfc.BapiTransactionFactory.createJCoTransaction(BapiTransactionFactory.java:33)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.s4hana.connectivity.rfc.AbstractTransactionFactory.createTransaction(AbstractTransactionFactory.java:39)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.s4hana.connectivity.rfc.RemoteFunctionRequestExecutor.execute(RemoteFunctionRequestExecutor.java:41)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.s4hana.connectivity.rfc.BapiRequest.execute(BapiRequest.java:79)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.bosch.bapi.service.CostCenterBapiService.getCostCenters(CostCenterBapiService.java:44)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.bosch.bapi.CostCenterBapiServlet.doGet(CostCenterBapiServlet.java:30)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:65)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.servlet.RequestAccessorFilter.lambda$doFilter$1(RequestAccessorFilter.java:71)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.thread.AbstractThreadContextExecutor.lambda$execute$0(AbstractThreadContextExecutor.java:317)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.thread.ThreadContextCallable.call(ThreadContextCallable.java:247)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.thread.AbstractThreadContextExecutor.execute(AbstractThreadContextExecutor.java:319)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.servlet.RequestAccessorFilter.doFilter(RequestAccessorFilter.java:71)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.security.servlet.HttpCachingHeaderFilter.doFilter(HttpCachingHeaderFilter.java:83)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at com.sap.cloud.sdk.cloudplatform.security.servlet.HttpSecurityHeadersFilter.doFilter(HttpSecurityHeadersFilter.java:41)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.filters.RestCsrfPreventionFilter.doFilter(RestCsrfPreventionFilter.java:125)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
2020-04-09T02:25:37.147+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at com.sap.xs.java.valves.ErrorReportValve.invoke(ErrorReportValve.java:66)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:256)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at com.sap.xs.security.TenantIdValve.invoke(TenantIdValve.java:33)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at com.sap.xs.security.UserInfoValve.invoke(UserInfoValve.java:19)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at com.sap.xs.statistics.tomcat.valve.RequestTracingValve.invoke(RequestTracingValve.java:43)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at com.sap.xs.logging.catalina.RuntimeInfoValve.invoke(RuntimeInfoValve.java:40)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:609)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1623)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
2020-04-09T02:25:37.148+0000 [APP/PROC/WEB/0] ERR   at java.lang.Thread.run(Thread.java:836)

Украсить пункт назначения

I согласен с тем что ты объяснил. Возможно это не требуется, чтобы сделать это как пункт назначения Http. Но я застрял из-за проблемы с SAP Java Connector.

Local RF C Определение пункта назначения

На самом деле я не знал, какие свойства требуются для RF C пункт назначения. Если я просто использую HTTP, я получу статус http 404, и служба не найдет исключение.

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

Спасибо за обновление. Ответ на основе вашей обновленной информации внутри исходного вопроса. Снова переходя к каждому отдельному заголовку.

Исключение JCO класса не найдено во время выполнения

Использование коннектора Java возможно только при использовании «традиционного развертывания» Spring, которое включает сборку и развертывание файла war вместо файла jar.

SAP Java Соединитель с приложением без пружинной загрузки

Для использования соединителя Java требуется наличие защищенной серверной части и приложения маршрутизатор. Я предполагаю, что вы не используете это, что указано в сообщении об ошибке User Information is not set.

Украсить пункт назначения

Отвечено

Локальная RF C Определение пункта назначения

Насколько мне известно, использование коннектора Java из локального развертывания не предусматривается. Для этого вам необходимо развернуть приложение в облачной платформе SAP. Что касается вопроса о том, какие свойства устанавливать в пункте назначения RF C, вы можете обратиться к Javado c класса Java DestinationDataProvider, который можно извлечь из архива JCo после его загрузки из * 1020. *

2 голосов
/ 08 апреля 2020

Спасибо, что подняли этот вопрос здесь. Я могу выделить различные аспекты в вашем вопросе и, следовательно, затронуть их по отдельности в следующем.

Класс JCO Не найдено исключение

Пожалуйста, предоставьте больше информации по следующим вопросам:

  • Я понимаю, что вы получаете java.lang.NoClassDefFoundError: com/sap/conn/jco/JCo во время выполнения после развертывания приложения на SCP. Правильно ли мое понимание?
  • Я понимаю, что вы используете приложение Spring Boot, верно?
  • Использовали ли вы архетип SAP Cloud SDK?
  • Пожалуйста, приложите сюда журнал приложений для дальнейшего использования.
  • Не могли бы вы также уточнить, как именно вы добавили sapjco3.jar в путь к классу проекта?
  • Развертываете ли вы приложение как jar или как war?

Создать RF C назначение через переменную окружения

Я понимаю, что вы боретесь понимание того, как указать назначение RF C в переменной среды. Могу ли я спросить, что вы уже пробовали, соответственно, с какими конкретными проблемами (сообщениями об ошибках и т. Д. c.) Вы сталкиваетесь?

RF C Назначение не может быть украшено для привлечения дополнительных свойств

Вы правильно указывают на то, что SAP Cloud SDK может обогащать заголовки запросов с учетом дополнительных свойств назначения HTTP. Поэтому вам нужно украсить свой экземпляр HttpDestination следующим образом:

Destination destination = DestinationAccessor.getDestination(destName);
destination.asHttp().decorate(DefaultErpHttpDestination::new);  

Я понимаю ваш вопрос, как это работает для пунктов назначения RF C. Насколько я могу судить, библиотека Java Connector (JCO), предоставляемая SAP, в любом случае просматривает свойства назначения. Следовательно, я не вижу необходимости такого в сфере назначения РФ C. Прошу вас обрисовать в общих чертах ваше требование более точно, если вы не согласны.

BapiRequest принимает Destination, а не RfcDestination

Я понимаю ваш вопрос, что вы удивляетесь, что BapiRequest::execute ожидает Destination, не RfcDestination. Это действительно удивительно на первый взгляд, однако это задумано, поскольку SAP Cloud SDK также поддерживает вызов BAPI, обернутых как SOAP API. Это работает через HttpDestination. Для вашего конкретного случая использования достаточно, чтобы вы использовали DestinationAccessor.getDestination("xyz") и передали это возвращаемое значение в метод execute. Вам не нужно беспокоиться ни о чем другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...