Java 使用S/4HANA Cloud SDK执行OData查询时发生DestinationAccess异常>;=2.0.0
我正在尝试使用OData服务,使用VDM从S/4HANA Cloud 1805系统中读取数据,如中所述。目标使用基本身份验证 电话示例:Java 使用S/4HANA Cloud SDK执行OData查询时发生DestinationAccess异常>;=2.0.0,java,s4sdk,Java,S4sdk,我正在尝试使用OData服务,使用VDM从S/4HANA Cloud 1805系统中读取数据,如中所述。目标使用基本身份验证 电话示例: final ErpConfigContext context = new ErpConfigContext("..."); return new DefaultQualityInspectionDataService().getAllInspectionLot().select(...).execute(context); 这至少在S/4HANA Cloud
final ErpConfigContext context = new ErpConfigContext("...");
return new DefaultQualityInspectionDataService().getAllInspectionLot().select(...).execute(context);
这至少在S/4HANA Cloud SDK 1.9.4版之前一直有效。由于更新到2.0.0,由于以下异常,无法再使用目标:
2018 06 18 12:43:55#+00#ERROR#org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/app-application].[com.sap.cloud...Servlet]##anonymous#https-jsse-nio-8041-exec-3#na#a078260ed#app#web#a078260ed#na#na#na#na#Allocate exception for servlet [com.sap.cloud...Servlet] com.sap.cloud.sdk.cloudplatform.connectivity.exception.DestinationAccessException: Failed to get ConnectivityConfiguration: no RequestContext available. Have you correctly configured a RequestContextFactory or have you wrapped your logic in a RequestContextExecutor when executing background tasks that are not triggered by a request?
at com.sap.cloud.sdk.cloudplatform.connectivity.ScpNeoDestinationFacade.getConnectivityConfiguration(ScpNeoDestinationFacade.java:60)
at com.sap.cloud.sdk.cloudplatform.connectivity.ScpNeoDestinationFacade.getDestinationConfiguration(ScpNeoDestinationFacade.java:108)
at com.sap.cloud.sdk.cloudplatform.connectivity.ScpNeoDestinationFacade.getGenericDestination(ScpNeoDestinationFacade.java:183)
at com.sap.cloud.sdk.cloudplatform.connectivity.DestinationAccessor.getGenericDestination(DestinationAccessor.java:136)
at com.sap.cloud.sdk.s4hana.connectivity.ErpConfigContext.<init>(ErpConfigContext.java:218)
at com.sap.cloud.sdk.s4hana.connectivity.ErpConfigContext.<init>(ErpConfigContext.java:367)
at com.sap.cloud.sdk.s4hana.connectivity.ErpConfigContext.<init>(ErpConfigContext.java:442)
at com.sap.cloud...Servlet.<init>(...Servlet.java:31)
...
at java.lang.Thread.run(Thread.java:808)
2018年6月18日代码>2018年6 6月18 18 18 18 18 18:43:2018 2018 2018年6月18日18 18:18 18:45:45码码>2018年6月18日18 18.18 18 18 18 18 18 18 18.18 18码码码>2018年6月18日18 18:18 18:18:45 45周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五com.sap.cloud.sdk.cloudplatform.connectivity.exception.DestinationAccessException:无法获取连接配置:没有可用的RequestContext。在执行非请求触发的后台任务时,您是否正确配置了RequestContextFactory,或者是否将逻辑包装在RequestContextExecutor中?
位于com.sap.cloud.sdk.cloudplatform.connectivity.ScpNeoDestinationFacade.getConnectivityConfiguration(ScpNeoDestinationFacade.java:60)
位于com.sap.cloud.sdk.cloudplatform.connectivity.ScpNeoDestinationFacade.getDestinationConfiguration(ScpNeoDestinationFacade.java:108)
位于com.sap.cloud.sdk.cloudplatform.connectivity.ScpNeoDestinationFacade.getGenericDestination(ScpNeoDestinationFacade.java:183)
位于com.sap.cloud.sdk.cloudplatform.connectivity.DestinationAccessor.getGenericDestination(DestinationAccessor.java:136)
位于com.sap.cloud.sdk.s4hana.connectivity.ErpConfigContext.(ErpConfigContext.java:218)
位于com.sap.cloud.sdk.s4hana.connectivity.ErpConfigContext.(ErpConfigContext.java:367)
位于com.sap.cloud.sdk.s4hana.connectivity.ErpConfigContext.(ErpConfigContext.java:442)
位于com.sap.cloud…Servlet.(…Servlet.java:31)
...
运行(Thread.java:808)
调用HTTP servlet时,即使目标尚未使用,也会立即发生异常。ErpConfigContext似乎有问题。自2.0.0以来,必须使用ErpConfigContext而不是ErpEndpoint来配置目标。我已经阅读了关于ErpConfigContext和RequestContext处理的迁移指南(),但该解决方案不适用于我的应用程序,因为我从未使用过RequestContextListener,而且它仍然有效
此外,在使用1.9.4时,使用ErpConfigContext使用相同的编码,因此问题似乎是更新到2.x.x。更新到2.1.0也没有解决问题
我在几个OData服务中遇到了这个问题
除了等待新的SDK更新之外,还有其他解决方案吗?您是否可以在servlet的构造函数中初始化
ErpConfigContext
?
您是否可以尝试在servlet的
doGet()
方法中调用新的ErpConfigContext(“…”
?这里的问题可能是,RequestContext
的初始化只发生在servlet的过滤器链中。您能分享一下您的servlet是什么样子的吗?这确实有效,谢谢!我最初将ErpConfigContext
初始化为一个全局变量。通过将其移动到Servlet的doGet()
方法中,它工作正常。