[ 
https://issues.apache.org/jira/browse/FELIX-2246?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Felix Meschberger updated FELIX-2246:
-------------------------------------

    Attachment: SimpleWebConsoleFactory.java

Variation of Valentin's SimpleWebConsoleFactory.java class:

  * Moved to a different package to allow embedding in the client bundle for 
truly lazy loading and wiring
  * Copied the WebConsoleConstants for label and title (again for lazy wiring 
to the Web Console API)
  * Changed createPlugin return type to Object (for lazy wiring at service 
creation time)
  * Added disposePlugin method to allow for plugin disposal (supporting lazy 
wiring)

WDYT ?

> Lazy initialization of plugins
> ------------------------------
>
>                 Key: FELIX-2246
>                 URL: https://issues.apache.org/jira/browse/FELIX-2246
>             Project: Felix
>          Issue Type: Improvement
>          Components: Web Console
>    Affects Versions: webconsole-3.0.0
>            Reporter: Valentin Valchev
>            Assignee: Felix Meschberger
>         Attachments: FELIX-2246.patch, lazy-webconsole-plugins.jude, 
> lazy-webconsole-plugins.png, lazyloading.patch, SimpleWebConsoleFactory.java, 
> SimpleWebConsoleFactory.java
>
>
> Here at ProSyst we use a small trick to delay initialization of our services:
> When the service is quite big, and loads many resources (incl. too many 
> classes), we register not a service, but a ServiceFactory instead. With that 
> factory we delay the instantiation of the service, when it is actually needed 
> and obtained by other bundle.
> Yes, this makes the code a little bit more complex, but it greatly improves 
> the start-up time and the overall memory usage.
> This can be applied to webconsole plugins too. My idea is that Web Console 
> should only track Service Reference without actually obtaining the service 
> itself [not getService()].
> When the user makes request the WebConsole calls the factory to create 
> instance. Instance is created and returned to the Web Console, which uses it 
> to generate content for the request.
> This way a plugin is actually not initialized until it is really used. Only 
> small portion of classes, from the bundle are initialized.
> Unfortunately the ServiceTracker, when notified for added service obtains the 
> real service object. So it might be better to use directly ServiceListener 
> for the plugins.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to