Hi,

This is a long post.

I am developing a JMX based component to manage all major components in
the hierarchy including Server, Service, Connector, Engine, Host,
Contexts in a Catalina deployment. And I also want to develop a special
Connector. The architecture of Catalina allows easy customization /
extension. During the development, I found the following Catalina API
enhancement can help the extension / customization of the components.

Here are my two suggestions:

1) In the Lifecycle interface, it should include a method to check
whether a component is started.

    public boolean isStart();

The above method should return true if the component is started.

Without the above method, we cannot check if a component is started. And
starting an already started component in the current implementation will
throw a LifecycleException. This exception will cause confusion about
the current state of the component to others (such as a management
component).


2) Need logging support in other components - as stated in the
STATUS.html.
After browsing the source code of the current Logger implementation, I
think it is not hard to use a Logger instance in the whole server
deployment. Since the components in Catalina forms a tree rooted at a
Server instance, and we can add a new Interface

 /**
  *  The Interface can be implemented by a component
  *  which use the Logger to log its messages
  */
 public interface CatalinaComponent
 {
   /**  get the parent component */
   public CatalinaComponent getParentComponent();

   /**  set the parent component */
   public void setParentComponent(CatalinaComponent comp);

   /**  get the Logger - may be from its parent component */
   public Logger getLogger();

   /**  set the Logger for this component and its child */
   public void setLogger();

   //  the following method provides logging information */
   public String getInfo();
   public String getName();
   public void setName(String name);
 }

If we can implement this interface in all major Catalina Components -
Server, Service, Connector, all levels of Containers (Engine, Host,
Context, Wrapper) and some components used by the Containers (Mapper,
Loader, Manager, etc.), we can provide a flexible logging mechanism:
    a) use only one Logger to log both the server related messages &
application messages, or
    b) use one Logger to log the server related messages & another to
log the application messages.


BTW, it seems the implementation of Catalina do NOT use the verbosity
levels defined in Logger.
And then the implementation of Logger cannot use the verbosity to treat
the log messages differently.


Regards,
Eric

begin:vcard 
n:Yung;Eric
tel;work:+852 2164 8481
x-mozilla-html:TRUE
org:media60X;R&D
adr:;;;;;;
version:2.1
email;internet:[EMAIL PROTECTED]
title:Senior Development Specialist
fn:Eric Yung
end:vcard

Reply via email to