Version Warning
The content below is for Apache Syncope <= 1.2 - for later versions the Reference Guide is available.
Provided as a JAR file, a ConnId connector bundle implements a consistent generic layer between Syncope and external resources.
The specific connector bundle is always a pre-requisite to link a particular external resource. There is a connector bundle for each linkable external resource type. Obviously, a single connector bundle can be used to link more than one resources of the same type.
Here is the complete list of ready-to-use ConnId bundles; if needed, new connector bundles can also be developed on-purpose.
Connector bundles can be added or replaced:
- only when creating new project from archetype, in project sources;
- for all deployment options, at run-time.
Add or replace connector bundles in project sources
Set different version for predefined bundles
First of all, verify which connector bundles are predefined in your project; check an URL like as
https://repo1.maven.org/maven2/org/apache/syncope/syncope/<syncope.version>/syncope-<syncope.version>.pom
where <syncope.version>
is the Syncope version of your project, so for example https://repo1.maven.org/maven2/org/apache/syncope/syncope/1.2.5/syncope-1.2.5.pom for Syncope 1.2.5.
In that file, find maven-dependency-plugin
's configuration - as example, here it follows the content for Syncope 1.2.5:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <configuration> <outputDirectory>${bundles.directory}</outputDirectory> <artifactItems> <artifactItem> <groupId>net.tirasa.connid.bundles.soap</groupId> <artifactId>net.tirasa.connid.bundles.soap</artifactId> <version>${connid.soap.version}</version> </artifactItem> <artifactItem> <groupId>net.tirasa.connid.bundles</groupId> <artifactId>net.tirasa.connid.bundles.csvdir</artifactId> <version>${connid.csvdir.version}</version> </artifactItem> <artifactItem> <groupId>net.tirasa.connid.bundles.db</groupId> <artifactId>net.tirasa.connid.bundles.db.table</artifactId> <version>${connid.db.table.version}</version> </artifactItem> <artifactItem> <groupId>net.tirasa.connid.bundles</groupId> <artifactId>net.tirasa.connid.bundles.ldap</artifactId> <version>${connid.ldap.version}</version> </artifactItem> <artifactItem> <groupId>net.tirasa.connid.bundles</groupId> <artifactId>net.tirasa.connid.bundles.ad</artifactId> <version>${connid.ad.version}</version> </artifactItem> </artifactItems> </configuration> </plugin>
As you can see, there are several Maven properties controlling the related connector bundle's version.
If you want your own project to use a different version of the same connector bundle, all you need to do is to override the related property in your own project's root pom.xml
.
With reference to Syncope 1.2.5, supposing that you would like to use net.tirasa.connid.bundles.db.table
version 2.2.3-SNAPSHOT
rather than 2.2.2
shipped with Syncope 1.2.5, add the following property to your own project's root pom.xml:
<properties> ... <connid.db.table.version>2.2.3-SNAPSHOT</connid.db.table.version> </properties>
Add non-predefined connector bundle
If the needed connector bundle is not in the predefined set as shown above, you need to
Add a new property into your own project's root
pom.xml
:<properties> ... <my.new.connector.version>1.0.0</my.new.connector.version> </properties>
Change maven-dependency-plugin's configuration both in
core/pom.xml
andconsole/pom.xml
from<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <inherited>true</inherited> <executions> <execution> <id>set-bundles</id> <phase>process-test-resources</phase> <goals> <goal>copy</goal> </goals> </execution> </executions> </plugin>
to
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <inherited>true</inherited> <configuration> <artifactItems> <artifactItem> <groupId>my.new.connector.groupId</groupId> <artifactId>my.new.connector.artifactId</artifactId> <version>${my.new.connector.version}</version> </artifactItem> </artifactItems> </configuration> <executions> <execution> <id>set-bundles</id> <phase>process-test-resources</phase> <goals> <goal>copy</goal> </goals> </execution> </executions> </plugin>
Add or replace connector bundles at run-time
Connector bundles can be added or replaced at run-time by just performing the following two steps:
- Download the required connector bundle JAR file;
- Copy the downloaded JAR file into one of configured ConnId locations, e.g. a directory where the other connector bundles are already located in.
4 Comments
James Flemer
This needs updates for 1.1.0.
vs
Francesco Chicchiriccò
Actually, not.
You can, of course use
connid.location
in 1.1.0, butbundles.directory
is working as well, since the parent 1.1.0 POM defines theconnid.location
property asJesse van Bekkum
Francesco. Could you verify if the part about adding on run-time is correct, and perhaps expand a bit on this?
I tried that, but it kept trying to find my bundles in /home/ilgrosso/work/syncope/1_1_X/target/checkout/core/target/bundles/. I also searched the source and I could not find a single instance of "bundles.directory" in the core or the common projects, so I fail to see how this could work.
Francesco Chicchiriccò
bundles.directory
is a Maven property defined in the parent POM of the Syncope version you are running; see examples for 1.0.X and 1.1.X (look under <properties>).The root POM of your own project has the POM referenced above as parent POM: this means that all properties defined in the former are available in the latter, including
bundles.directory
.When you run embedded mode,
bundles.directory
is${project.build.directory}/bundles
, e.g. normallycore/target/bundles
.When you build your own project via
you are just overriding the default value for
bundles.directory
- e.g. the one defined in the parent POM.Actually, the path reported by you above (
/home/ilgrosso/work/syncope/1_1_X/target/checkout/core/target/bundles/
) is generated during the archetype deployment and is ignored; if you generated your own project before 1.1.0 was released, you are probably missing some files undercore/src/main/resources
: I'd suggest to start with a new project and to compare with your current.