How to display Extensions in the Lucee Admin?

This is only about Lucee 5 and will not affect Lucee 4.5.
With Lucee 5 we have 3 types of Extensions:

  • Extensions you can install only in the Server Context
  • Extensions you can install only in the Web Context
  • Extensions you can install in the Server and Web Context

This thread is not really about questioning this 3 types (we can of course do that in an other thread), but for Lucee 5.0 it is to late.

Question is only about display extensions in general and how to handle the 3rd type (possible to install in web and server context).
An example for the 3rd type, are JDBC drivers, you can for example install MySQL 5.1.20 in the server context and then install 5.1.38 in one of the web contexts.
Question is how to display this in the Admin the right way, take as example Datasource definitions, you can define datasources in the server admin and then in the web admin you can see them as “Global readonly datasources”, so you are aware in the web context of this datasources. THn in the web admin you can overwrite them.

With extensions this is not the case, when you install MySQL in the server admin, in the web admin that extension is still only listed as not installed and you have no clue that the extension was already installed in the server admin. So you can “overwrite” the extension for this web context by install it, but you don’t see that in the web context and if it is the same version it also makes no sense.

the simplest solution is to show the extension as installed in the web admin (as gloabl and readonly) and it is no longer listed as “not installed” and cannot be installed in the web admin.
Question is how we handle the situtation that people want to install a different version in the webadmin (newer or older)?
i hope i have made this clear , if not please ask.

How will, for example, multiple version of MySQL data source extension be
displayed (for each version of jdbc driver)?
Will each version be listed, or when MySQL is selected, you then get an
option of versions to choose from?

When veiwing extensions in web admin, in the list of installed extensions,
could it display ‘Server’ on those that are installed on the server level?

And then still have that extension available for installing for web
context; and depending on how first question is answered, remove option to
install same version that is on the server.

To continue with this example, in the web admin, when defining a data
source, will there be an option to which MySQL version to use ( the server
version or web version)?

Use case of the top off my head, if you wanted to migrate data between to
versions of database servers and the latest driver was not backwards
compatible.

I guess you may also want to be able to install 2 (or more) different
versions in the same context - will this be possible? I am thinking, for
the data sources, could only be done if the Data Class were different
between versions - or can OSGi handle this sort of thing. As this can not
be done currently, perhaps it is not something that needs to be addressed??

for the moment i did the following change, in the web admin you can see the extensions installed in the server admin, marked as “Installed in server admin”. but you can still install the extension also in the web admin, if the extension allow to install on that level.
atm you only see the newest extension in the admin to install, but you can put an older version in the deploy folder of your web context, so an installation of an older version is possible, but not in the admin atm. you also can define a specific version of the driver in the application.cfc for one datasource, so lucee will download that version if necessary and load it, this is also possible in the config xml.

Example:

 this.datasource={
    	  		class: 'org.h2.Driver'
                            ,bundleName:"org.h2"
                            ,bundleVersion:"1.3.172"
    			, connectionString: 'jdbc:h2:#getDirectoryFromPath(getCurrentTemplatePath())#/datasource/db;MODE=MySQL'
    		};

Thanks Micha

that answers my questions :slight_smile:

I’d like to see some things with display of extensions:

  1. Grouping by Type (possibly even tabs or links), a list of hotch botch types is useless to me. I can see the list being reasonably long from day one. It would be great to be able to manage what those groups are also. (add/edit/remove + on remove drop into group or their ‘defaults’ - eg : Data, Messaging, Caching, etc)

  2. Forced vendor prefix so that org.spreadsheet and org2.spreadsheet can both be present on same server ( I think this is already done )

  3. Anything created as a server extension, should be available to be configurable at the web level also (aka not global read-only) just as other settings in the admin are. (aka web context can override some, all or none of the config depending on type of plugin), you should be able to see what is installed at a global level as it will effect your context and would assist in debugging.

  4. Be able to disable a global plugin at web context level, aka in a agency setup where all but one customer needs to be one way and one customer another. I think that this should also have a enable/disable switch for shared hosting in sever admin, although they too might find this useful.

  5. sort of OT but would also love to see mail settings brought out of 1980 also… refer my suggestions on messagesource in forums and blog posts (like datasource), and since data providers are plugins, so should message providers such as email, im, sms, etc

1 Like