Sorry for noticing this mail this late.

On Tue, Aug 21, 2012 at 12:41 AM, Anjana Fernando <[email protected]> wrote:

> Hi,
>
> I've added a new interface
> "org.wso2.carbon.core.init.CarbonStartupListener", and a static method
> "CarbonServerManager#addCarbonStartupListener(CarbonStartupListener
> listener)", to get notifications when the Carbon server is fully
> initialized. This is done from the class
> "StartupFinalizerServiceComponent", where it keeps the list of registered
> CarbonStartupListener objects, and at the end of the Carbon server init,
> all the CarbonStartupListeners are notified. And, if the server is already
> initialized when a addCarbonStartupListener is called, it will be
> immediately called back, without it being stored.
>

Adding such static methods is VERY wrong when you are living within an OSGi
container. Besides, this is bad OOP . CarbonServerManager is an
instantiated class, and it is wrong to statically inject objects into such
classes. The proper way to do this would be through OSGi services. This may
be working now and make everybody happy temporarily, but we have to design
& develop our components as much as possible keeping in mind that OSGi
bundles can be independently stopped & started. All sorts off issues such
as stale references etc. show up when bad practices like this are followed.
Please fix this in the proper way, before this API starts to pollute other
code.

Thanks
Azeez


> This functionality was basically required for the ntask implementation,
> where the server has to be fully initialized before the scheduled tasks are
> run, for example, this is a required by BAM tasks and also data services
> scheduled tasks, where the fully required resources are only available
> after the Carbon server is fully initialized.
>
> The changed code can be found in the following locations:
>
> *
> https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.0.0/core/org.wso2.carbon.core/4.0.1/src/main/java/org/wso2/carbon/core/init/CarbonServerManager.java
> *
> https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.0.0/core/org.wso2.carbon.core/4.0.1/src/main/java/org/wso2/carbon/core/init/CarbonStartupListener.java
> *
> https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.0.0/core/org.wso2.carbon.core/4.0.1/src/main/java/org/wso2/carbon/core/internal/StartupFinalizerServiceComponent.java
>
> And the usage of the above functionality in ntask can be found at:
>
> *
> https://svn.wso2.org/repos/wso2/carbon/platform/branches/4.0.0/components/ntask/org.wso2.carbon.ntask.core/4.0.1/src/main/java/org/wso2/carbon/ntask/core/service/impl/TaskServiceImpl.java
>
> Cheers,
> Anjana.
> --
> *Anjana Fernando*
> Associate Technical Lead
> WSO2 Inc. | http://wso2.com
> lean . enterprise . middleware
>
> _______________________________________________
> Dev mailing list
> [email protected]
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
*Afkham Azeez*
Director of Architecture; WSO2, Inc.; http://wso2.com
Member; Apache Software Foundation; http://www.apache.org/
* <http://www.apache.org/>**
email: **[email protected]* <[email protected]>* cell: +94 77 3320919
blog: **http://blog.afkham.org* <http://blog.afkham.org>*
twitter: **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
*
linked-in: **http://lk.linkedin.com/in/afkhamazeez*
*
*
*Lean . Enterprise . Middleware*
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to