Packaging the connector
After testing the connector and verifying that it works as expected, you are ready to package the connector code.
Packaging requirements
Verify this information to ensure you are packaging the connector correctly.
| Format and structure | Maximum Size | Java | Required Entries |
|---|---|---|---|
.zip file in this format:• lib/** (One or more implementation JAR files)• META-INF/** (connector-config.xml) | 40 MB | The Runtime runs using the Java 8 JRE, or the Java 11 JDK. Compile your connector with any version but target Java 8. When using Java 11, it must be approved. | You must include in the connector package: • lib\<your_connector_name>.jar (Source files, resource files, etc.)• Connector configuration file • Connector descriptor file |
If your connector exceeds 40 MB, reach out to your Boomi representative to obtain approval for uploading larger connectors.
Recommended Connector Packaging
-
Boomi will require all SDK connectors to run in strict class loading mode eventually. To learn more, refer to Enabling strict class loading mode for connectors. We recommend you ensure all third-party dependencies are packaged in the connector archive file to prevent errors during this transition. If there are missing runtime dependencies, you may see the following error message:
Caused by: \<ThirdPartyClassName\> referenced from a method is not visible from class loader:com.boomi.connector.factory.ConnectorManager$ConnectorClassLoader@1052f423 -
Do not include multiple versions of the same JAR file in the connector package.
-
The connector configuration file's SDK version (@sdkApiVersion attribute) should match the version in your JAR files. Additionally, ensure that the SDK version in your JAR files is the same and does not conflict with the version in Atom's JARs.
-
The recommended packaging is taken care of for you in the latest version of the connector gradle plugin (0.5.1). Opting out of strict mode is possible by providing your own
connector-config.xmlfile instead of the plugin generating one for you, but that is not a recommended configuration at this point.
Strict mode will be enforced when uploading new connectors in the future, so it is highly recommended for new connectors adopt strict mode.
Optional packaging entries
You can optionally include the following in the connector package:
-
connector-sdk-util-<sdkVersion>.jar- This optional JAR file contains utility classes for facilitating connector implementations. Include this JAR if your connector implementation uses it. -
Additional JARs and their license files if you choose to package the connector yourself or if you use Maven. You should package any libraries and jar files you may need at the time of running your connector into the final connector archive file.
As long as your entries do not conflict with the libraries or include any malicious code, you can include them in the connector package. All files uploaded to the platform are scanned for viruses to prevent malicious data from compromising your integrations.
When you package your connector yourself, use SDK version 2.23.2 or later if you plan to utilize strictClassLoading mode. Changes were made to make the packaging experience as seamless as possible and older versions may cause incompatibilities.
- Additional configuration files such as schemas, overrides, etc. The entries you can include are typically part of the resource in the
lib\<your_connector_name>.jarfile in the connector package.
Optional Artifacts and JAR files
It is not necessary to package connector-sdk-api with your connector in any mode, those classes and interfaces are always provided in the classloader running your connector code.
If you haven’t opted into strictClassloading mode yet, please provide an Overrides file for any third party artifacts if you require them in your connector. The following are all the third party artifacts and their current versions provided by the Boomi Atom Runtime environment:
Optional Artifacts and JAR files
bcprov-jdk16
-
groupId:
org.bouncycastle -
Version:
1.4.5 -
Scope: Provided
-
Can be overridden:
yes
com.noelios.restlet.ext.net
-
groupId:
com.noelios.restlet -
Version:
1.0.11 -
Scope: Provided
-
Can be overridden:
yes
rg.restlet
-
groupId:
org.restlet -
Version:
1.0.11 -
Scope: Provided
-
Can be overridden: yes
boomi-json-util
This is dependent on Jackson libraries. If you are using a newer Jackson library, in addition to boomi-json-util, then this needs to be overriden.
-
groupId:
com.boomi.util -
Version:
1.2.4 -
Scope: Provided
-
Can be overridden:
yes
boomi-util
-
groupId:
com.boomi.util -
Version:
3.0.14 -
Scope: Provided
-
Can be overridden:
no
boomi-restlet-util
-
groupId:
com.boomi.restlet.util -
Version:
2.1.17 -
Scope: Provided
-
Can be overridden:
yes
dom4j
-
groupId:
dom4j -
Version:
1.6.1 -
Scope: Provided
-
Can be overridden:
yes
ehcache-core
-
groupId:
net.sf.ehcache -
Version:
2.4.7 -
Scope: Provided
-
Can be overridden:
yes
jackson-annotations
The Runtime provides three jackson artifacts (com.fasterxml.jackson.annotations, com.fasterxml.jackson.core, and com.fasterxml.jackson.databind). You can override all of the Jackson artifacts by overriding the full com.fasterxml.jackson package.
-
groupId:
com.fasterxml.jackson.annotations -
Version:
2.5.3 -
Scope: Provided
-
Can be overridden:
yes
jackson-core
-
groupId:
com.fasterxml.jackson.core -
Version:
2.5.3 -
Scope: Provided
-
Can be overridden:
yes
jackson-databind
-
groupId:
com.fasterxml.jackson.databind -
Version:
2.5.3 -
Scope: Provided
-
Can be overridden:
yes
jdom
-
groupId:
jdom -
Version:
1.0 -
Scope: Provided
-
Can be overridden:
yes
jjwt
-
groupId:
io.jsonwebtoken -
Version:
0.9.0 -
Scope: Provided
-
Can be overridden:
yes
json
-
groupId:
org.json -
Version:
20131018 -
Scope: Provided
-
Can be overridden:
yes
lucene-core
-
groupId:
org.apache.lucene -
Version:
3.5.0-boomi1 -
Scope: Provided
-
Can be overridden:
yes
mail
-
groupId:
javax.mail -
Version:
1.4.7 -
Scope: Provided
-
Can be overridden:
yes
mimepull
-
groupId:
org.jvnet -
Version:
1.3 -
Scope: Provided
-
Can be overridden:
yes
netty
-
groupId:
io.netty -
Version:
3.10.1.Final -
Scope: Provided
-
Can be overridden:
yes
org.apache.oltu.oauth2.client
-
groupId:
org.apache.oltu.oauth2 -
Version:
1.0.0 -
Scope: Provided
-
Can be overridden:
yes
sqlbuilder
-
groupId:
com.healthmarketscience.sqlbuilder -
Version:
2.0.13 -
Scope: Provided
-
Can be overridden:
yes
hsqldbmin
-
groupId:
org.hsqldb -
Version:
2.3.3.boomi1 -
Scope: Provided
-
Can be overridden:
yes
JAXB implementation
Any core XML API or implementation
-
JAR files defining or implementing interfaces in the packages
org.w3c.dom,org.xml.sax,javax.xmlfrom the standard JDK. -
Do not include or use
axis-saaj.jar
connector-sdk-api.jar
java.util.logging
- Built in the Java logging system and is the preferred logging API.
commons logging
slf4j
log4j
Overriding artifacts and JARs provided by the Atom
In a connector, you can selectively override the artifacts, and JAR files previously indicated (Can be overridden: yes) with versions from your distribution. For example, suppose you want to override the configuration for mail.jar. To override the classes, package an Overrides file (a line-delimited text file com.boomi.Overrides) with the package(s) you want to override, and any relevant JARs for the package. As long as you package the Overrides file with the connector, you can also package a JAR containing a new version of mail.jar.
Sample Overrides File
Here is a sample Overrides file illustrating how to override mail.jar with multiple packages (javax.mail, com.sun.mail) and include an Overrides with a connector:
Typically, configuration files provided by are stored in the META-INF/ folder. In this example, the path to the Overrides file is META-INF/com.boomi.Overrides
javax.mail.
com.sun.mail.