Java JCo v3自定义数据提供程序在注册和使用后"缺失"

2020-08-26 03:33发布

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

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


我们的应用程序使用网络上安装的代理程序组件。 这些代理组件是使用Java构建的,并且可以在各种操作系统平台上运行。 客户可以拥有数千个这样的代理,并且他们可以执行许多不同的功能。 这些功能之一是在SAP服务器上调用作业。 无论执行什么特定功能,每个执行的任务都在其自己的线程中执行。 任何特定于应用程序的配置数据都存储在中央服务器中,并在初始化时发送到代理。 用户可以通过客户端应用程序从网络上的任何位置管理此数据。

我们的代理组件一直在使用JCo v2,连接到SAP服务器的过程很简单:获取配置数据,创建客户端连接对象并连接到服务器。 但是,对于JCo v3,事实证明这更加困难。 我创建了一个自定义类,该类继承自DestinationDataProvider并根据该代理的特定于应用程序的数据设置所有必需的连接信息。 使用 Environment.registerDestinationDataProvider()将此对象注册为数据提供者。 代理在初始化代理时与SAP服务器进行测试连接,并且一切正常。 但是,对于某些客户,代理程序收到运行SAP作业任务的请求后,便无法获取目标提供程序。 JCo跟踪显示 JCoDestinationManager.getDestination()调用返回一个空对象。 出现错误时,代理将尝试重新注册提供者,并且该调用也将失败,似乎表明提供者已被注册。

稍后在应用程序的运行处理中需要时,会导致已注册且正在运行的目标提供程序丢失的原因是什么? (对SAP作业运行代码的所有处理都包装在 JCoContext.begin()和 JCoContext.end()调用中,并且已通过JCo跟踪进行了验证。)即使 尝试检索目的地时找不到目的地,为什么尝试重新注册也失败?

有人对可能发生的事情有任何想法吗?

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

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


我们的应用程序使用网络上安装的代理程序组件。 这些代理组件是使用Java构建的,并且可以在各种操作系统平台上运行。 客户可以拥有数千个这样的代理,并且他们可以执行许多不同的功能。 这些功能之一是在SAP服务器上调用作业。 无论执行什么特定功能,每个执行的任务都在其自己的线程中执行。 任何特定于应用程序的配置数据都存储在中央服务器中,并在初始化时发送到代理。 用户可以通过客户端应用程序从网络上的任何位置管理此数据。

我们的代理组件一直在使用JCo v2,连接到SAP服务器的过程很简单:获取配置数据,创建客户端连接对象并连接到服务器。 但是,对于JCo v3,事实证明这更加困难。 我创建了一个自定义类,该类继承自DestinationDataProvider并根据该代理的特定于应用程序的数据设置所有必需的连接信息。 使用 Environment.registerDestinationDataProvider()将此对象注册为数据提供者。 代理在初始化代理时与SAP服务器进行测试连接,并且一切正常。 但是,对于某些客户,代理程序收到运行SAP作业任务的请求后,便无法获取目标提供程序。 JCo跟踪显示 JCoDestinationManager.getDestination()调用返回一个空对象。 出现错误时,代理将尝试重新注册提供者,并且该调用也将失败,似乎表明提供者已被注册。

稍后在应用程序的运行处理中需要时,会导致已注册且正在运行的目标提供程序丢失的原因是什么? (对SAP作业运行代码的所有处理都包装在 JCoContext.begin()和 JCoContext.end()调用中,并且已通过JCo跟踪进行了验证。)即使 尝试检索目的地时找不到目的地,为什么尝试重新注册也失败?

有人对可能发生的事情有任何想法吗?

付费偷看设置
发送
1条回答
亦是此间程序员
1楼-- · 2020-08-26 04:32

嗨,格伦,

只有通过注销原始实例才能删除DestinationDataProvider。 如果DestinationManager返回null,则意味着DestinationDataProvider不提供该名称的目的地。 您可以使用JCoTrace来检查使用的DestinationDataProvider实现。 实际上,您不应该尝试在应用程序代码中注册DestinationDataProvider,而应该在单独的位置进行注册,并且只有一次。

最诚挚的问候,
Markus

一周热门 更多>