主机对同一射频目标的多次注册会导致死锁和不一致

2020-09-22 16:24发布

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

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


你好

我的问题如下:我们有一个注册的RFC目标作为"注册的服务器程序"。 目标已使用类型T向TCP/IP连接注册。

在程序中,我们注册服务器RFC Destination,并借助Jco创建功能存储库。

JCoServer服务器= JCoServerFactory.getServer(serverName);

JCoCustomRepository存储库= JCo.createCustomRepository(serverName);

只要我们的程序只运行一个实例,一切就可以正常工作。 但是,当我们有多个实例时,就会为每个程序实例创建并启动服务器。 反过来,这又导致在网关监视器表(smgw)中出现多个条目。 一旦发生这种情况,对rfc服务器的请求就会偶尔重定向,并且会发生死锁。

解决此问题的最佳方法是什么? 我们不能为每个程序实例注册一个不同的RFC目标吗? 有没有一种方法可以只使用一个服务器,并防止每个程序实例注册和启动其他服务器?

致谢!

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

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


你好

我的问题如下:我们有一个注册的RFC目标作为"注册的服务器程序"。 目标已使用类型T向TCP/IP连接注册。

在程序中,我们注册服务器RFC Destination,并借助Jco创建功能存储库。

JCoServer服务器= JCoServerFactory.getServer(serverName);

JCoCustomRepository存储库= JCo.createCustomRepository(serverName);

只要我们的程序只运行一个实例,一切就可以正常工作。 但是,当我们有多个实例时,就会为每个程序实例创建并启动服务器。 反过来,这又导致在网关监视器表(smgw)中出现多个条目。 一旦发生这种情况,对rfc服务器的请求就会偶尔重定向,并且会发生死锁。

解决此问题的最佳方法是什么? 我们不能为每个程序实例注册一个不同的RFC目标吗? 有没有一种方法可以只使用一个服务器,并防止每个程序实例注册和启动其他服务器?

致谢!

付费偷看设置
发送
3条回答
歪着头看世界
1楼-- · 2020-09-22 16:37

伊娜,

创建具有更多线程的JCo服务器时,每个JCo服务器进程在ABAP网关上注册相同的程序ID,这是预期的行为,请参见JCo文档ServerDataProvider:

jco.server.progid-用于在网关上注册和标识JCoServer的程序ID

jco.server.connection_count-要在网关上注册的服务器连接数

您在哪里遇到僵局?

最诚挚的问候,

Antal

野沐沐
2楼-- · 2020-09-22 17:01

嗨Antal,

问题在于,我们实质上为每个程序实例创建一个新服务器。 并且所有服务器都具有相同的RFC目的地名称和programID。 当我们通过serverProperties.put(ServerDataProvider.JCO_CONNECTION_COUNT," 10")将连接数设置为大于1时,只要创建的服务器中有一个拥有足够的可用连接插槽,则只有其中一个服务器会获得所有RFC调用 。 在上面的示例中,它是10。

我们有点想让每个服务器都收到自己的rfc调用。 但是,只要它们都共享相同的programID,就不会发生这种情况。 这就是为什么我想知道是否存在某种可以使用的解决方法,而该解决方法不涉及使用不同的programID来创建多个RFC目标。 因为我们可以拥有数量不受限制的程序实例。

此致

Ina

Aaron 3364
3楼-- · 2020-09-22 16:41

嗨,

您是否尝试过使用异步RFC(aRFC)进行并行化?

STARTING NEW TASK附加功能使您可以在另一个系统上异步启动功能模块。

此致

一周热门 更多>