public class JavaInstanceMain
extends Object
This is the initial class that gets called when starting a Java Function instance.
Multiple class loaders are used to separate function instance dependencies from user code dependencies
This class will create three classloaders:
1. The root classloader that will share interfaces between the function instance
classloader and user code classloader. This classloader will contain the following dependencies
- pulsar-functions-api
- pulsar-client-api
- log4j-slf4j-impl
- slf4j-api
- log4j-core
- log4j-api
2. The Function instance classloader, a child of the root classloader, that loads all pulsar broker/worker dependencies
3. The user code classloader, a child of the root classloader, that loads all user code dependencies
This class should not use any other dependencies!