TIF ENOVIA/3DExperience Connector - Class Loading

How the class loading mechanism in TIF is working is important to understand if you will add customized code into TIF.

Below is a diagram showing the hierarchy:

image
Figure 1. Classloader Hierarchy

The top level class loader contains the classes found from JAR files inside ${TIF_ROOT}/lib. These classes are visible for all modules in TIF.

The ENOVIA/3DEXPERIENCE connector has it’s own class loader, with the TIF-core class-loader as parent. This class-loader loads classes from the lib and lib/custom directories of that module by default as well as (if configured via start-script) the web-application resources (WEB-INF/lib, WEB-INF/classes).

Within the ENOVIA/3DEXPERIENCE connector, there exists web-applications supporting SOAP, REST and Apache CXF based web services. Each of these is placed in a separate web-app using their own class loader. The folders WEB-INF/classes and WEB-INF/lib beneath each webapp is then part of the classpath.

The table below explains where to place custom classes:

Folder What to place

${TIF_ROOT}/lib/custom

Custom classes related to TIF core, such as custom destinations.

${TIF_ROOT}/modules/enovia/lib/custom

Custom classes that customize behavior of ENOVIA/3DEXPERIENCE connector related actions.

${TIF_ROOT}/modules/enovia/webapps/jaxrs/WEB-INF/lib

Custom classes related to REST based web services

${TIF_ROOT}/modules/enovia/webapps/jaxws/WEB-INF/lib

Custom classes related to SOAP based web services

${TIF_ROOT}/modules/enovia/webapps/cxf/WEB-INF/lib

Custom classes related to Apache CXF based web services