Both sides previous revision Previous revision | |
devel:documentation:systems:dev:supported-connectors [2019/02/26 08:44] – greater part moved to the admin guide section kotisovam | devel:documentation:systems:dev:supported-connectors [2022/08/23 13:49] (current) – deleted old info about memory leak - no longer valid when using pooling apeterova |
---|
====== Connectors: adding new ones====== | ====== Connectors: adding new ones ====== |
{{tag>connector}} | {{tag>connector}} |
| |
| |
===== ConnId connectors ===== | ===== ConnId connectors ===== |
[[http://connid.tirasa.net/|ConnId framework]] was chosen as the basic implementation. It is a direct successor of the OpenICF framework. | [[http://connid.tirasa.net/|ConnId framework]] was chosen as the basic implementation. It is a direct successor of the OpenICF framework. |
| |
| ===== Adding more connectors ===== |
| |
===== Adding more connectors ===== | |
If needed, another ConnId connector can be added into the system by: | If needed, another ConnId connector can be added into the system by: |
* Maven dependency in the **IdM-parent** module (the above mentioned 3 basic connectors are connected in this way). | |
| * Maven dependency in the **IdM-parent** module (the above mentioned 3 basic connectors are connected in this way). |
* Maven dependency in any other module (searching for available modules takes place in all the system modules). | * Maven dependency in any other module (searching for available modules takes place in all the system modules). |
* adding a **jar** distribution of the connector directly into the libraries of the resulting **war**. | * adding a **jar** distribution of the connector directly into the libraries of the resulting **war**. |
| |
Searching for available ConnId connectors is based on the presence of the **@ConnectorClass** annotation. Due to optimization reasons the class path isn't searched completely and the search is performed only on the packages defined in [[https://github.com/bcvsolutions/CzechIdMng/blob/develop/Realization/backend/ic/src/main/resources/module-ic.properties|module-ic.properties]] (in '**ic.localconnector.packages**' property). Only a part of the path can be defined. | |
As default value is set '**net.tirasa.connid**', which should ensure accessibility of all ConnId connectors (the setting supports more values). | |
| |
===== Probable memory leak in Scripted SQL Connector ===== | |
After some implementation scripted SQL connector on our projects, we are meet with probable memory leak in Scripted SQL Connector, (read some discussion about this problem [[https://redmine.czechidm.com/issues/563|#563]] or similar problem on [[https://stackoverflow.com/questions/36407119/groovyshell-in-java8-memory-leak-duplicated-classes-src-code-load-test-pr|stackoverflow.com]]). | |
| |
<note tip>Try don't use Scripted SQL Connector, but if you don't have any another choice use this connector rather on remote connector server than direct on IdM</note> | |
| |
Solution of this problem is fork connector-framework-internal-1.4.2.0.jar and update execute method on [[https://github.com/Evolveum/openicf/blob/release1.4.2.0/framework/java/connector-framework-internal/src/main/java/org/identityconnectors/common/script/groovy/GroovyScriptExecutorFactory.java#L67-L71|GroovyScriptExecutorFactory]] with cache. Similar cache we use in [[https://github.com/bcvsolutions/CzechIdMng/blob/develop/Realization/backend/core/core-impl/src/main/java/eu/bcvsolutions/idm/core/model/service/impl/DefaultGroovyScriptService.java#L71-L77|DefaultGroovyScriptService]] | Searching for available ConnId connectors is based on the presence of the **@ConnectorClass** annotation. Due to optimization reasons the class path isn't searched completely and the search is performed only on the packages defined in [[https://github.com/bcvsolutions/CzechIdMng/blob/develop/Realization/backend/ic/src/main/resources/module-ic.properties|module-ic.properties]] (in '**ic.localconnector.packages**' property). Only a part of the path can be defined. As default value is set '**net.tirasa.connid**', which should ensure accessibility of all ConnId connectors (the setting supports more values). |
| |
| |