close

Filter

loading table of contents...

Blueprint Developer Manual / Version 2107

Table Of Contents
4.1.6.2.4 Plugin Discovery

The Studio Client app supports dynamic packages that can be added without rebuilding the app itself. When dynamic packages were introduced, you still had to create an "application overlay" Maven module (packaging type jangaroo-app-overlay) to add dynamic packages. This is how the studio-app module in the Blueprint workspace adds all dynamic packages to studio-base-app.

However, using application overlays is not flexible enough for plugins, so the mechanism to "discover" dynamic packages has been enhanced. To use this enhanced mechanism, you can just use the Maven archetype described in Section 4.1.6.2.2, “Maven Archetype” and the Docker image created by the apps/studio-client workspace, and it will work out of the box. Read on if you'd like a deeper understanding of how plugin (or to be more precise: dynamic package) discovery in Studio Client works, for example for debugging purpose in case your plugin does not load.

The package loading of the studio-app has been extended to look for additional packages at the URL path /additional-packages/. There, it expects a directory listing from the web server. Currently the only supported format is the JSON format of the NGINX autoindex module. The Studio Client Docker image contains an Nginx server with the necessary configuration.

To support multiple additional package directories, the package discovery protocol expects further subdirectories at this level, which then contain the content of all package directories of your plugins. The package loader only uses these paths to find the packages. For the actual loading it expects the packages themselves to be served at the standard path /packages/package-name. This way you can dynamically add packages to your studio-app without rebuilding it, just with some web server magic.

Example: Packages request mapping
Path Description
/packages/dynamic-packages.jsonListing of built-in packages
/packages/additional-packages/Directory listing of further package locations
/packages/additional-packages/plugins/Directory listing of packages from the plugins directory
/packages/additional-packages/plugins/com_acme__mypluginAn additional package from the plugins directory
/packages/additional-packages/more-plugins/Directory listing of packages from the directory more-plugins
/packages/com_coremedia__a_built_in_packageBuilt-in packages are loaded from /packages/
/packages/com_acme__mypluginAdditional packages are also loaded from /packages/; the web server also looks at the plugins directory and will deliver /packages/additional-packages/plugins/com_acme__myplugin

Table 4.1. Packages request mapping


The Studio Client NGINX image configures NGINX to create directory listings for the path /additional-packages/ and /additional-packages/plugins/. Additionally, the /packages/ location is extended to also try the /additional-packages/plugins/ path. This way a Studio Client container will automatically load all packages from the directory mounted at /coremedia/additional-packages/plugins/.

Search Results

Table Of Contents
warning

Your Internet Explorer is no longer supported.

Please use Mozilla Firefox, Google Chrome, or Microsoft Edge.