5

我并没有真正设法找到有关此的适当文档。JCO com.sap.conn.jco.JCoDestinationcom.sap.conn.jco.JCoDestinationManager中有类。我对他们的问题:

  • 它们是线程安全的吗?
  • 如果不是,它们的创建成本高吗?
4

3 回答 3

2

我想我终于找到了。http://help.sap.com/saphelp_nwpi711/helpdata/en/48/6437ccbdbc51eee10000000a421937/content.htm

注意 在多线程环境中,不同线程之间的对象(例如,JCoTable 对象)的分布必须小心实现。请注意,不能为同一个直接连接进行多个并发 SAP 调用。

所以它不是线程安全的

于 2011-11-11T15:12:39.990 回答
1

不能对整个 JCo 框架说它是否是线程安全的。这取决于使用的类和实例。

JCo 中的 ,​​ 和 , 等数据容器实例JCoFunction不是线程JCoTable安全的 - 幸运的是,因为通常它们不会同时从不同的线程访问,因此不自动同步这些实例会带来更好的性能。JCoStructureJCoRecord

但是类和静态方法在 JCo 中是线程安全的。例如,您不需要同步对 的调用JCoDestinationManager

JCoDestination是一个特例。通常你不需要同步你对这个实例的调用,因为它会在内部为每个会话创建和使用不同的 RFC 客户端连接对象。在 JCo 的默认实现中,每个线程都被视为单独的会话,因此您不会在此处遇到线程安全问题。只有当基础设施环境SessionReferenceProvider在 JCo 运行时注册它自己的并且会同时将相同的会话 ID 分配给多个线程时,对于同一个目的地的有状态RFC 调用才可能存在线程安全冲突。在这种情况下,JCo 检测到这种错误情况并抛出一个with error group 。JCoExceptionJCO_ERROR_CONCURRENT_CALL

于 2016-12-25T19:16:21.907 回答
0

你读过连接器的文档吗?

https://websmp105.sap-ag.de/~sapidb/011000358700000730362009D/SAPJCo_Doku_3.0_EN.pdf

我不明白您的问题,您尝试调用 RFC 并没有实现?

于 2011-11-11T15:00:01.057 回答