23 August 2013

Table of Contents

1. 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