commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bill Lear <r...@zopyra.com>
Subject [HiveMind] Suggestion for Bootstrap documentation addition
Date Tue, 16 Sep 2003 14:53:35 GMT
I've just added my first interceptor.  Neat stuff.  I suggest we add
a section to the example (Bootstrap) to show how to do this and
how to configure the log4j properties (this was a bit confusing
for me).

Here is a sketch:

Debugging the Example Using a Logging Interceptor

Logging interceptors can be used to print out method invocation,
including parameters passed and results returned.  Adding a logging
interceptor to a service is easy: add an interceptor clause to your
HiveMind module, and set the log4j debug property on this interceptor
to print out the information when the application is run.

So, for our example, first add a logging interceptor to the HiveMind
module:

<?xml version="1.0"?>

<module id="hivemind.examples" version="1.0.0">
    <service id="Adder" interface="hivemind.examples.Adder">
        <create-instance class="hivemind.examples.impl.AdderImpl2"/>

        <interceptor service-id="hivemind.LoggingInterceptor"/>
    </service>
</module>

This interceptor will use the ID of the service within which it is
operating, in this case 'hivemind.examples.Adder'.

Next, set the debug level in the log4j.properties file by
catenating 'log4j.category.' with the service id:

log4j.category.hivemind.examples.Adder=debug

The complete log4j file now looks something like this:

log4j.rootCategory=WARN, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%r %c{1} [%p] %m%n
log4j.category.hivemind.examples.Adder=debug

Now type in 'ant run' from the top-level directory and you should see
the interceptor at work, printing out parameter values on entry, and
the result upon exit:

% ant run
     ...
     [java] 0 Adder [DEBUG] BEGIN add(11, 23)
     [java] 5 Adder [DEBUG] END add() [34]
     ...

You can also get rough execution times for the methods by setting
the pattern for the layout to include millisecond time values:

log4j.appender.A1.layout.ConversionPattern=<%p %d{ISO8601} %c{1}> %m%n

% ant run
     ...
     [java] <DEBUG 2003-09-16 09:46:02,034 Adder> BEGIN add(11, 23)
     [java] <DEBUG 2003-09-16 09:46:02,054 Adder> END add() [34]
     ...

This shows that the Adder add method took about 20 milliseconds to
run.  [Q: is this time at all accurate?  Does it include any
interceptor overhead, or is it mostly the method invocation?].

In any case, just a suggestion.

Next, I'm going to work on understanding extensions to services.
Not sure I like the terms, "extension" or "extension-point".
Configuring seems much less involved than extending, and HiveMind
extensions seem to be all about configuring.  Since I don't fully
understand it, though, once I get through the doc and work through
a few examples, I may change my view.


Bill

Mime
View raw message