繁体   English   中英

使用S / 4HANA Cloud SDK> = 2.0.0执行OData查询时的DestinationAccessException

[英]DestinationAccessException while executing OData Query with S/4HANA Cloud SDK >= 2.0.0

我正在尝试使用VDM从使用VDM的S / 4HANA Cloud 1805系统读取数据,如https://blogs.sap.com/2017/05/21/step-4-with-sap-中所述s4hana-cloud-sdk-calling-an-odata-service / 目标使用基本身份验证。

示例电话:

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)

调用HTTP Servlet时会立即发生异常,即使尚未使用Destination也是如此。 ErpConfigContext似乎有问题。 从2.0.0开始,必须使用ErpConfigContext而不是ErpEndpoint配置Destination。 我已阅读迁移指南( https://blogs.sap.com/2018/06/05/migration-guide-moving-to-version-2.0.0-of-the-sap-s4hana-cloud-sdk/ )关于ErpConfigContext和RequestContext Handling,但该解决方案不适用于我的应用程序,因为我从来没有使用RequestContextListener,但它仍然有用。

另外,在使用1.9.4时,使用ErpConfigContext使用相同的编码,因此问题似乎是更新到2.xx更新到2.1.0也没有解决问题。

我用几个OData服务遇到了这个问题。

除了等待新的SDK更新之外,还有解决此问题的方法吗?

你可能在servlet的构造函数中初始化ErpConfigContext吗? 您可以尝试在servlet的doGet()方法中调用new ErpConfigContext("...")吗? 这里的问题可能是RequestContext的初始化只发生在servlet的过滤器链中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM