...
Code Block | ||||
---|---|---|---|---|
| ||||
import org.fabric3.api.annotation.monitor.Severe; import org.fabric3.api.annotation.monitor.Debug; public inteface ComponentMonitor @Severe void error(String message, Throwable t); @Debug ("Received request {0}") void receivedRequest(String id); } |
...
A monitor is injected in a component using the org.fabric3.api.annotation.monitor.Monitor annotation:
Code Block | ||||
---|---|---|---|---|
| ||||
import org.fabric3.api.annotation.monitor.Monitor;
public void TheComponent {
@Monitor
protected ComponentMonitor;
public void call(Message message) {
monitor.receivedRequest(message.getId);
try{
validate(message));
} catch (ValidationException e) {
// bad message
monitor.error("Invalid message", e)
}
// ...
}
|
When an @Monitor annotation is encountered, the Fabric3 runtime will generate a monitor proxy and inject it based on the monitor interface. Depending on the current monitor level, events may be logged or ignored. In the above example, if the monitor level is set to severe, the receivedRequest() event will be dropped.
Event-Based Monitoring
Monitor events are sent to