Posts Tagged ‘Spring’
In a previous blog post we introduced the Spring Insight module that's part of SpringSource's tc Server developer edition and gives you, well, insight into what's taking up the time to process requests in your applications. Insight does this by instrumenting your application at load time using AspectJ: a single call to your application will result in a so-called trace consisting of various operations, and for each of these operations it's measured how long it takes to execute. An operation can provide additional details: for example, when sending a query to a database using a JDBC Connection the actual SQL statement including prepared statement bindings will be stored in the operation.
Spring Insight is not a profiler: it doesn't create operations for each and every little thing that happens, but only for 'significant' events, like a Spring-MVC controller invocation, the start of a transaction or communication with a database. These events are called 'operations'. It does allow assigning operations to so-called endpoints. An endpoint could be a controller method, or a method on a class annotated with one of Spring's stereotype annotations like @Service or @Repository for example. For these endpoints Insight can provide statistics across traces, so that you can measure the health of these endpoints during the lifespan of your application based on configurable thresholds.
Insight's plugin model
Spring Insight consists of a core plus a set of plugins that are shipped with the tool. These plugins define the actual operations and endpoints that Insight knows about and exposes. One of the nice things about Spring Insight is that the plugins use a public API that's not restricted to the built-in plugins: you can build your own plugins to teach the tool new tricks.
Although you could do this on a per-application basis to expose metrics relevant to your particular app, you wouldn't usually write a dedicated plugin for that. Insight already exposes several application-level methods as operations if they're part of your stereotype-annotated Spring beans, and you can use their set of annotations to expose additional application-specific operations and endpoints easily .
Plugins are much more useful for framework developers: their framework might contain several methods that would be interesting to expose as Insight operations or even endpoints to show users what the framework is doing and how long that takes. Earlier this year, that's exactly what we did for the Axon CQRS framework that's being developed within Trifork.
This blog briefly discusses the plugin's implementation. All source code has been added to the Axon Framework itself and is available on Github.
After publishing this blog entry, VMware has contacted us to host the source code for this plugin in their public GitHub repository, so that the plugin can be shipped out-of-the-box with the Spring Insight distribution. That means that the plugin sources are no longer found under the Axon repository. The link above has been updated to reflect this change.
Orange11 is proud to present at the Magnolia Conference in Basel on September 4 and 5, 2012. This conference for web developers, marketing / business users and CMS editors / authors is all about the Magnolia CMS. With over 20 sessions on different aspects of real-life usages of Magnolia CMS this conference is the go-to event if you're interested in using Magnolia or are already using it.
Orange11's Erik Alphenaar will present a session on using Magnolia Modules to integrate custom (Spring-based) software into a Magnolia website.
Check out the details of his talk: Bridging the Gap; Magnolia Modules and Spring Configured Custom Software.
If you are interested in going:
Register now! and we hope to see you there!
About a year ago I developed an Android app for my website, but as not everybody has an Android device I wanted to create a mobile version of my website. In the mobile version I want to present slightly different data to make it look more like the app. In this post I will show you how I have used Spring mobile to determine which version of the site the user wants to visit and how I used Sitemesh to select the correct decorator.
The next major release of Spring Framework, 3.1, brings a new feature called bean definition profiles. This is a great add-on which makes the definition of the application context even easier, both in xml and Java-based style. With this new functionality it is possible to group beans into profiles which can be activated at runtime. I will show in this blog post how to leverage bean definition profiles, based on a monitoring use case.
Spring offers many namespaces for the XML Application Context configuration to make your life a lot easier. Although not often needed, it is easy to create your own namespaces and provide custom elements. It makes configuration easier. However, I noticed that the some of the IDE support is lost. By chance, I found an undocumented feature that resolves this issue.
As Android is really hot at the moment (and I have an Android phone), I wanted to create an Android app for my website. In this blog post I will explain the changes I had to make on the part of my web application and how I used Spring Android to interact from Android to my web application.
About a week a go I wrote a blog post on gridshore about the NOS open data API. Most of the technical items are explained in that post. In this post I want to tell you about the small library I have created around the NOS open data REST based API. With this client it is easy to create your own application that connects to the NOS servers and obtains news items, videos or audio fragments.
In this post you can find information about the Spring REST template, jackson mapping of JSON to java beans, and some spring tricks to make an easy web application.
For a project we are using Hippo to manage our content. We have a few components that interact with the repository using the connection pool as provided by hippo. I have modified the connection pool to increase the amount of logs and I have added statistics to the pool which can be exposed using JMX. Our custom components use this altered connection pool, but I the site did not. Our site makes use of the Hippo Site Toolkit, and I want to have this monitoring available as well.
In this blogpost I will explain the changes I made to the connection pool. After that I'll show what to do to make this changed connection pool available to a site created with the HST and I'll show a groovy script that reads the data from the remote servers using the JMX connection.