Является ли JCO (Java-коннектор SAP) потокобезопасным? - PullRequest
4 голосов
/ 11 ноября 2011

Мне не удалось найти соответствующую документацию по этому поводу. Есть классы в JCO com.sap.conn.jco.JCoDestination и com.sap.conn.jco.JCoDestinationManager . Мои вопросы о них:

  • они безопасны от потоков?
  • если нет, то дорого ли их создавать?

Ответы [ 3 ]

1 голос
/ 11 ноября 2011

Я думаю, что наконец нашел это.http://help.sap.com/saphelp_nwpi711/helpdata/en/48/6437ccbdbc51eee10000000a421937/content.htm

ПРЕДОСТЕРЕЖЕНИЕ В многопоточной среде распределение объектов (например, объектов JCoTable) между различными потоками должно осуществляться тщательно.Обратите внимание, что невозможно сделать несколько одновременных вызовов SAP для одного и того же прямого соединения.

Так что это не потокобезопасно

1 голос
/ 25 декабря 2016

Нельзя сказать, что для всей среды JCo она будет поточно-ориентированной или нетЭто зависит от используемых классов и экземпляров.

Экземпляры контейнера данных в JCo, такие как JCoFunction, JCoTable, JCoStructure и JCoRecord, не являются поточно-ориентированными - к счастью, потому что обычно они не безопасныдоступ к ним осуществляется одновременно из разных потоков, поэтому автоматическая синхронизация этих экземпляров приводит к повышению производительности.

Но классы и статические методы в JCo являются поточно-ориентированными.Например, вам не нужно синхронизировать вызовы с JCoDestinationManager.

А с JCoDestination это особый случай.Обычно вам не нужно синхронизировать ваши вызовы с этим экземпляром, потому что он будет внутренне создавать и использовать отдельные объекты клиентских соединений RFC для каждого сеанса.В реализации JCo по умолчанию каждый поток рассматривается как отдельный сеанс, поэтому вы не можете столкнуться с проблемами безопасности потока.Только если инфраструктурная среда регистрирует свой собственный SessionReferenceProvider во время выполнения JCo и назначит один и тот же идентификатор сеанса нескольким потокам одновременно, тогда может быть конфликтов безопасности потоков для stateful RFC звонит в тот же пункт назначения.В этом случае JCo обнаруживает такую ​​ситуацию с ошибкой и выдает JCoException с группой ошибок JCO_ERROR_CONCURRENT_CALL.

0 голосов
/ 11 ноября 2011

Вы читали документацию по разъему?

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

Я не понимаю ваш вопрос, вы пытаетесь позвонить в RFC, и вы не достигли?

...