Ruminations on high-octane Java.
Functional requirements for mission critical applications often include software service level agreements (SLAs), which specify the maximum allowable latency for specific operations. Such requirements necessitate the monitoring of application performance, either at system testing stage or post deployment. This article will demonstrate how real-time performance tracing/monitoring can be achieved for spring applications using the functionality provided in Spring AOP and the Apache Log4j toolkit.
Read more ...
Epsilon is a lightweight tool for monitoring and tracking the performance of Java applications in real time. It supports integration and configuration via Spring, including Spring AOP. Download from: http://www.obix-labs.com
Read more ...
In the
previous instalment of this three part series, I examined
the 'Worker Aggregation' anti-pattern. I also listed
a number of ways to modify it so as to reduce the
probability of its implementations leading to deadlock.
Code samples were provided to demonstrate the pattern in
both its raw and modified form, with the latter serving
as practical demonstration of the deadlock avoidance
modifications discussed.
Read more ...
In the first installment of this three part series, I described the problem of deadlock; focusing on the logical conditions that are necessary for a deadlock to occur. I also introduced the deadlock-prone No Arbitration anti-pattern which is evident in applications where interdependent processes are allowed to contend for resources without effective arbitration to determine priority of access at critical junctures.
Read more ...
Starvation occurs when one or more threads of execution are prevented from proceeding beyond a given point due to a predicate that will never be satisfied. Deadlock is a special form of starvation where threads of execution are prevented from making progress due to predicate conditions that are directly dependent on them. To illustrate, consider threads A and B, with shared resources R1 and R2. If thread A holds resource R1, and thread B holds resource R2; a deadlock will occur if thread A needs resource R2 to proceed and thread B is waiting on thread A to release resource R1.
Read more ...
It goes without saying that annotations have been something of a massive boon to enterprise Java developers. In fact, we can safely say that it is one of the key weapons in a developer's arsenal when battling the complexity of various deployment descriptor and mapping specifications.
Read more ...