ok, from the discussions so far this is how I see it ..

There are two aspects we are discussing here,

1. How the management mechanism is implemented
2. How the management interface is extracted from managed components

On the first aspect this is how I see it,

1. ManagementService in SPI will define the technology-agnostic abstraction for management 2. All runtimes will have an instance of ManagementService, which ever implementation they choose, in the system.scdl
3. This instance is auto-wired into any CompositeComponent instance
4. When register is called on CompositeComponent, it calls ManagementService.registerComponent
5. TuscanyServer will use JMX for management
6. TuscanyServer will have startRuntime and stopRuntime as the management ops 7. When TuscanyServer is started it will create an MBeanServer and makes it available through a protocol specific adaptor, RMI for example. 8. When a runtime is started through the management interface, TuscanyServer will create a which will have a reference to the hosted MBeanServer 9. JMXRuntimeInfo be auto-wired into the newly started runtime's ManagementService if it is a JMXManagementService 10. JMXManagedService will use the MBeanServer from JMXRuntimeInfo whenever registerComponent is called in step 5.

On extracting the management information ..

All of the below three would use dynamic MBean in the JMX implementation of ManagementService.

1. We can't use the reflection one that is available, as ManagementService.registerComponent takes and spi.model.Component, which is not the real instance and cannot be reflectively introspected, as far as I know from my limitted understanding of core. 2. The JMX annotations we discussed earlier may not be a possibility depending on whether they will get adopted as part of the osoa annotations or not. We don't want the application services littered with Tuscany annotations. 3. Extend the current spi model so that Component can bridge between the instance for setting/getting properties and invoking ops. This is something that is not available in the core yet. Also, functionally we are not sure whether we want to expose application service ops for management. For writable ops, there are also concerns regarding instance scopes, thread safety etc. That leaves us with read-only props. To support this we can have getProperty(String name) and getPropertyMetada() on the Component interface. Since both composite and atomic components support props, i suggest a common abstraction called AbstractComponent that will implement these methods and the information reqd for realising these operations may be passed in from the builder.

Ta
Meeraj




From: Jeremy Boynes <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: [email protected]
Subject: Re: Standalone server
Date: Thu, 28 Dec 2006 15:10:56 -0800

Hang on guys, there's a difference between the "Server" part that clients talk to and the ManagementService that bridges components into the management space.

The TuscanyServer can start the "agent" for the management client. With JMX, this would be the MBeanServer that we are using for all the managed objects. It registers itself with that to provide clients with a means to start/stop runtimes. It is performing the "host" role for the different runtimes it spins up.

The system scdl for each runtime can define what implementation of ManagementService it wants to use - it just defines a system component that implements that service. A basic implementation could reuse the MBeanServer from the TuscanyServer (getting it from the RuntimeInfo for example) - a more complex implementation could do WSDM for example (which probably prereqs a WS stack).

The important thing is that the containers do not know what management protocol is being used - hence the need for an abstraction like ManagementService rather than hooking them to JMX directly.

--
Jeremy

On Dec 28, 2006, at 2:34 PM, Meeraj Kunnumpurath wrote:

Joel,

This is what I am thinking as well, maybe tuscany server is started as part of a bootstrap runtime that includes the management service and it is made available to any other runtimes that is spawned there of.

Anyway, to start with I have added some stuff into core and spi org.apache.tuscany.core.services.management.jmx and org.apache.tuscany.spi.services.management respectively. Once we decide on the management annotations, we can add meat into the AnnotationDrivenDynamicMBean class. Also, we can look at how we can make the ManagementService implementation available as a system service.

Ta
Meeraj


From: "Hawkins, Joel" <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: <[email protected]>
Subject: RE: Standalone server
Date: Thu, 28 Dec 2006 16:27:00 -0500

Meeraj,

>I think it would be fairly straightforward to write a generic JMX
dynamic
>MBean based on introspecting the annotated members (ops, properties
etc),
>quite similar to the reflection one already in the source tree. I think
one
>key question is would these annotations be specific to tuscany, or
would
>they be pushed into the core SCA spec some time. If they are tuscany
>specific, what are the implications on portability of service  classes
>across different SCA implementations?
You'd hope they'd make it into the SCA spec. If not there, then at  least
into org.apache.ws.commons. :-)


>Also, regarding what Jeremy mentioned about CompositeComponent having a

>ManagementService injected in, which in turn is defined as a system
service,
>do we have a 'chicken-and-egg' situation here. Currently, tuscany
server
>exposes the management service for remote management. Management
clients >use this service to start and stop runtimes. All system
services are >associated with a runtime. However, if the management
service is defined as >a system service, we will have to start a  runtime
to make the management >service available. However to start a  runtime we
need a management >service :)

Oh dear, this does sound grim. So the bootstrap runtime is no more?
Perhaps the system service of the management service running  inside the
individual runtimes could be 'spun off' of an already running  instance?

Cheers,
Joel

The contents of this e-mail are intended for the named addressee only. It contains information that may be confidential. Unless you are the named addressee or an authorized designee, you may not copy or use it, or disclose it to anyone else. If you received it in error please notify us immediately and then destroy it.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


_________________________________________________________________
MSN Hotmail is evolving – check out the new Windows Live Mail http://ideas.live.com


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


_________________________________________________________________
MSN Hotmail is evolving – check out the new Windows Live Mail http://ideas.live.com


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to