OSGi

novomind iAGENT uses an OSGi framework to dynamically load plugins. In case your plugins don't use external dependencies you can simply package your plugins into the app container as simple jar files. Your plugins will be converted to OSGi bundles during the app installation.

If you use external dependencies in your plugins, you will need to package your plugins as OSGi bundles with embedded external dependencies via the Bundle-Classpath instruction. Take a look at the Hello World Supervisor Top Header App for an example.

The following external dependencies are provided by default and don't need to be packaged:

  • Jakarta Activation 1.2 (com.sun.activation:jakarta.activation)
  • Jakarta Annotation API 1.3 (jakarta.annotation:jakarta.annotation-api)
  • Jakarta Inject API 1 (jakarta.inject:jakarta.inject-api)
  • Jakarta Mail API 1.6 (com.sun.mail:jakarta.mail) (Reference implementation including SMTP/IMAP/POP3 providers)
  • Java Servlet API 4.0 (javax.servlet:javax.servlet-api)
  • SFL4J 1.7 (org.slf4j:slf4j-api)