Hi Balazs,

you might be interested in this discussion:
http://www.mail-archive.com/[email protected]/msg02999.html

I asked about a standardized way to get diagnostics in a common way for various dependency injection frameworks. We decided to start an RFP for this. You are welcome to participate. David Bosschaert offered to mentor this effort.

I created an initial version of the RFP. I think currently Jean Baptiste Onofré is revising it. If you are interested I can send you my initial version. So you can see how far it applies to your problem. Your idea of basing the diagnostics on Requirements and Capabilities sounds like a good idea to me.

Christian

On 14.01.2014 16:12, Balázs Zsoldos wrote:
Just thinking loudly.

Why would be a DS specific monitoring solution necessary at all? There could be a solution based on org.osgi.resource.Resource and org.osgi.core.Capability classes. If there was a solution where the missing constraints could be defined in a standard way, it could be used by any technology (Declarative Services, Blueprint, etc..)

In case of Declarative Services, a Component would be a Resource with Capabilities and Requirements. A project like XRay could draw a graph that would show every runtime wirings (not just Bundle but Component wiring) with the missing constraints as well. Problem solving would be way much faster.

In case someone wants to register a new OSGi service inside the Activate method of the of a component, he/she wanted to add a new Capability for the Component(Resource). In case someone started a ServiceTracker, BundleTracker or WhateverTracker in the Activate method of the Component, they would add a Requirement so the graph could be shown.

This would mean that a component could be in ACTIVE state and yet have unsatisfied Requirement (added in the activate method programmatically).

If you do not agree with the last part (accessing the monitoring part programmatically from within the component), I think it is still worthy to think about the first part (Component-Resource and Capability-Requirement) before releasing something.



Balazs Zsoldos
Software Architect
Mobile: +36-70/594-92-34

Everit Kft.
https://www.everit.biz <https://www.everit.biz/>

Everit OpenSource
http://everit.org


On Tue, Jan 14, 2014 at 3:31 PM, Balázs Zsoldos <[email protected] <mailto:[email protected]>> wrote:

    Hi,

    thanks for the info. I have not checked it yet. I will do now.

    BTW.: Would it be possible to take the title of the RFC into the
    name of the folder at
    https://github.com/osgi/design/tree/master/rfcs ? It is really
    hard to keep in mind what-is-what based on number codes. Also, if
    there was a commit on a folder, the commit message does not say
    what the RFC is about.

    Thanks and regards,

    Balazs Zsoldos
    Software Architect
    Mobile: +36-70/594-92-34 <tel:%2B36-70%2F594-92-34>

    Everit Kft.
    https://www.everit.biz <https://www.everit.biz/>

    Everit OpenSource
    http://everit.org


    On Tue, Jan 14, 2014 at 1:45 PM, BJ Hargrave <[email protected]
    <mailto:[email protected]>> wrote:

        Have you looked at RFC 190 and the proposed
        ServiceComponentRuntime introspective service? This is the
        direction we are going.

        I am not sure I see that adding API to the component space is
        the best thing for a declarative services model especially
        since most people should be using it in a POJO manner (and not
        even using the DS API directly).
--
        *BJ Hargrave*
        Senior Technical Staff Member, IBM
        OSGi Fellow and CTO of the _OSGi Alliance_ <http://www.osgi.org/>_
        [email protected]_ <mailto:[email protected]>       

        office: +1 386 848 1781 <tel:%2B1%20386%20848%201781>
        mobile: +1 386 848 3788 <tel:%2B1%20386%20848%203788>





        From: Balázs Zsoldos <[email protected]
        <mailto:[email protected]>>
        To: OSGi Developer Mail List <[email protected]
        <mailto:[email protected]>>
        Date: 2014/01/14 03:09
        Subject: [osgi-dev] Adding more monitoring capabilities to
        Declarative      Services
        Sent by: [email protected]
        <mailto:[email protected]>

        ------------------------------------------------------------------------



        Hi,

        we switched to OSGi 2-3 years ago. My colleagues (especially
        the ones who has just got started with OSGi) suffer a lot due
        to the reason that it is hard to find out why the application
        is not started. The log is filled with many information and it
        is hard to find the part that tells the cause.

        Using the ds and xray plugin for WebConsole it is easier to
        find out the cause of the problem but in many cases it is not
        enough. When a Component works in the way that it registers
        service(s) programmatically, when it uses a Service- or
        BundleTracker inside to wait for satisfaction, it cannot be
        shown on any screen.

        I think it would be very useful to extend the Declarative
        Services spec. to have functions on the ComponentContext that
        allows the programmer to push information to the monitoring
        tools. I was thinking something like the following:

        /**
         * Retrieving a Monitor Context that makes it possible to add more
         * information about the Component for administrators and
        developers.
         **/
         MonitorContext getMonitorContext();

        The MonitorContext interface would have the following functions:

        /**
         * Setting a message provides information about the current
        state of
         * the Component.
         */
         void setMessage(String message);

         /**
          * Adding a service reference that is used by the Component
        with a
          * short description in what use-case it is used.
          */
          void addServiceUsage(ServiceReference<?> reference, String
        description);

         /**
          * Removing a service usage.
          */
          void removeServiceUsage(ServiceReference<?> reference);


         /**
          * Adding a Bundle Capability that is used by the Component
        with a
          * short description in what use-case it is used.
          */
          void addServiceUsage(BundleCapability capability, String
        description);

         /**
          * Removing a capability usage.
          */
          void removeServiceUsage(BundleCapability capability);

          /**
           * Add cause why the component is still unsatisfied.
           */
        UnsatisfactionCause addUnsatisfactionCause(String cause);

        The UnsatisfactionCause object would make it possible to
        remove it from the MonitorContext.

        The MonitorContext would inherit from the interface
        ComponentMonitor that would contain the
        getters. The ComponentMonitor could be retrieved from the
        ComponentInstance.

        What do you think? In my opinion, a solution like this would
        speed up development a lot. This is a draft idea. In case you
        find it useful, I will spend a bit more time to prepare a
        complete plan (that could be a base of an RFC).

        Regards,
        Balazs Zsoldos
        Software Architect
        Mobile: +36-70/594-92-34 <tel:%2B36-70%2F594-92-34>

        Everit Kft.
        _https://www.everit.biz_ <https://www.everit.biz/>

        Everit OpenSource
        _http://everit.org_
        <http://everit.org/>_______________________________________________
        OSGi Developer Mail List
        [email protected] <mailto:[email protected]>
        https://mail.osgi.org/mailman/listinfo/osgi-dev

        _______________________________________________
        OSGi Developer Mail List
        [email protected] <mailto:[email protected]>
        https://mail.osgi.org/mailman/listinfo/osgi-dev





_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev


--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com

_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to