Hello Philippe,

nice to hear from you. It doesn't matter that you wrote late since I am fully 
introduced in heavy work load here at our site, so my contributions to objectweb are 
near to zero at the moment. If you would have written earlier, I just would not have 
had time to read! ;-)

> A) To begin with, I want to say that there is a main difference between
> your approach and our that is that our goal was not to define a general
> services architecture as the Java Platform Service  Layer you are
> proposing.

Yes, I recognized that after I wrote my mail and thought over again what I wrote and 
what you wrote.

> I think that this is a discussion that must occur at the ObjectWeb
> architecture working group level.

Yes, sure, this is a common topic. Do you think it would have any success to discuss 
it?

> All we wanted to do was to extend the existing JOnAS service notion and
> to define new services that can be defined outside JOnAS but launched by
> JOnAS.

ok

> And we wanted to be able to provide this kind of services in the next
> JOnAS version that will be released.

ok

> This explains why our services are member of org.objectweb.jonas.*
> instead of org.objectweb.*

ok

> But, we agree with you when you say that sm is not a clear topic and we
> have changed for a org.objectweb.jonas.service package.

ok

> B) Our documentation seems to say that the implementor must
> extend the AbsServiceImpl, in fact the service provider is not obliged
> to use this AbsServiceImpl and he may implement the Service interface.
> I agree with you that this AbsServiceImpl must be kept internal for the
> use of JOnAS services and we must tell that the service provider must
> implment
> the Service interface. (So the doX methods are not seen anymore...)

ok

It's good that there is no need to extend this abstract class since it would lead the 
intension of the interface-class-paradigm ad absurdum.

> C) The Context that is used in the init method is  not a callback to
> give
> information from the service back to service manager, in fact this
> context is
> only used for passing configuration information to the service.

ok

I just imagined that it would be cool to have a callback to the manager so it could 
react to notifications of the server, like e. g. status of server ("about to stop" 
etc.).

> Jndi Naming Context versus Properties: the choice of Naming Contexts
> have been made within the ObjectWeb consortium, as a way to unify the
> ObjectWeb component initialization. 

Seems to be quite strange to use a class that is not intended for that usage? I mean, 
what does a naming context has to do with the initialization of some component? From 
my view, objectweb did a shortcut since all it needs for initialization is already in 
a naming context and they did not want to copy that properties into a propietary 
structure. :-(

> D) For the definition of the Service interface, I think it is a first
> version and we wanted it simple (start/stop). The reason why there is an
> init
> method
> is that we think that in the future it will be possible to defer the
> starting of a service. So we have to make difference between init where
> the
> service must be initialized (this is at the server run time) and start
> that
> can occurs later. I agree with you that for the moment init and start
> are executed sequentially.

ok

> I am not sure to understand the pause method and as we didn't need it
> we have not included it in the interface.

Assume this situation: A service running under Jonas' service manager exclusively 
locks a ressource. The administrator of the system now needs to do some 
administrational tasks with this ressource. For this, the lock has to vanish. He now 
pauses the service, what leads to this specific service unlocks the ressource (maybe 
other services do other things but keep lock the ressources; this is up to the 
implementor of the pause method). The lock is released, he does what he wants to do 
with the ressource, then he fires start agains the service, what leads to the service 
now reallocating the lock. At the moment, there is no pause method, what leads to the 
administrator having to shut down the service completely. But now think of that 
service needs to do very complex checks at shutdown and startup. This checks need lots 
of time, so the admin waits and waits and waits. If there would be pause, these checks 
maybe could be omitted. This is what I mean. JOnAS - at the moment - has no us!
age of it, but other (f
 services would have. One could think of (future version of) JOnAS doing pause by just 
dropping all connections but not admin connection; so at restart only connections are 
re-allowed, but cache is not dropped meanwhile!

> E) Why we need a name for a service? this name is only needed by the
> Service Manager for indentifying services. For the moment there is only
> one case where a service can use this name, it is when a service want to
> get a
> reference to another service.
> This name may be used also in traces if for example  there are multiple
> instances of the same service running.

I understand that you have a name per service instance in the service manager. But why 
does the service itself needs it's name? I mean, in my classic definition of a 
service, this process does not need to have interaction with the user, so there is no 
need to know it's own name. If UI is needed, the service instance has to use callbacks 
(think of my idea of the ServiceContext's init method above) of the context and the 
service manager then does the UI; and the service manager knows the name of the 
service instance.

> F) We have choosen to put all the properties in the jonas.properties
> file because as I said earlier for us we are handling only jonas
> services.
> The second reason is that we wanted to make the installation and
> configuration of JOnAS easier. I think it is simpler to deal with only
> one
> properties file than multiple properties files.

For current usage this is ok, but if we intend to use the service manager with other 
projects this would be a problem in future.

> G) dbm service is for managing resources that are JDBC DataSource. We
> have the jms service for the JMS resources, and in the next release we
> will
> have the resource service that will manage resources  compliant to the
> J2ee
> Connector Architecture Specification (version 1.0). With this resource
> service it
> will be possible to access JDBC DataSource resource if you have a
> Resource
> Adapter JDBC (Objectweb will provide this kind of RA).
> Furthermore note that the support for pluggability of JMS providers into
> an application server will be added in the future versions of 
> specification.
> So we think it is better to wait before to unify all services related
> to resources as you are suggesting to do.

ok

> H) Currently the Service Manager doesn't start a single thread for each
> every service. I am not sure that creating a thread/service will improve
> performances. It is up to the Service provider to create or not a new
> thread
> when the service starts.

The problem is with MultiThreading vs. MultiTasking. Windows and maybe some other OS 
runs a VM on one specific CPU. If you have many CPUs, but all services running in the 
same VM, this services are all running in the same CPU, so you have no benefit from 
adding CPUs. :-( So if you want to have a service running on another CPU (to improve 
performance etc.) you need a second VM. The point is: The usage of CPUs is in the 
responsibility of the system administrator. In WindowsNT he can assign services to 
CPUs. He has full control. But with your design, he has not, since every service can 
decide itself, if it starts a new VM or not. This leads to unadministrateability of 
the CPUs! This is very bad. To support the administrator, we really should not allow 
services to start VMs but only to have a setting in the service manager if a service 
should be startet in it's own VM or not.

> The class AbsDynamicServiceImpl is currently not used in JOnAS. We have
> kept it when we have merged with the contribution of our partner
> Libelis.
> I am not sure that we must keep it and I think we don't have to speak
> about
> dynamic services in the documentation.

As I wrote above, I would prefer not having that abstract class but only a property in 
the service's description, so that the service manager can start the service in a new 
VM is this is needed.

> I) we agree with you that the documentation must be more clear about
> dependences between the JOnAS services.

ok

Thank you for your explanations. Now some things are more clear to me. I hope that my 
ideas will be remarked since I think that it would be good to have this thing somelike 
less proprietary. :-)

Markusjo

To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]

----
To unsubscribe, send email to [EMAIL PROTECTED] and
include in the body of the message "unsubscribe jonas-users".
For general help, send email to [EMAIL PROTECTED] and
include in the body of the message "help".

Reply via email to