我没有真正找到关于此的正确文档。 JCO com.sap.conn.jco.JCoDestination 和 com.sap.conn.jco.JCoDestinationManager 中有类。我对他们的问题:
答案 0 :(得分:1)
我想我终于找到了它。 http://help.sap.com/saphelp_nwpi711/helpdata/en/48/6437ccbdbc51eee10000000a421937/content.htm
小心 在多线程环境中,必须仔细实现不同线程之间的对象(例如,JCoTable对象)的分发。请注意,不可能为同一个直接连接进行多个并发SAP调用。
所以它不是线程安全的
答案 1 :(得分:1)
对于整个JCo框架,人们不能说它是线程安全的。 它取决于使用的类和实例。
JCo中的数据容器实例(如JCoFunction
,JCoTable
,JCoStructure
和JCoRecord
都不是线程安全的 - 幸运的是,因为通常不会从不同的线程访问它们同时,因此不会自动同步这些实例会带来更好的性能。
但是类和静态方法在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而你还没有实现?