JCO(SAP的Java连接器)线程安全吗?

时间:2011-11-10 22:06:32

标签: java thread-safety sap jco

我没有真正找到关于此的正确文档。 JCO com.sap.conn.jco.JCoDestination com.sap.conn.jco.JCoDestinationManager 中有类。我对他们的问题:

  • 他们是安全的吗?
  • 如果没有,创作起来是否昂贵?

3 个答案:

答案 0 :(得分:1)

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

  

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

所以它不是线程安全的

答案 1 :(得分:1)

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

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

但是类和静态方法在JCo中是线程安全的。例如,您无需将呼叫与JCoDestinationManager同步。

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

答案 2 :(得分:0)

您是否阅读过连接器文档?

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

我不明白你的问题,你试图调用RFC而你还没有实现?