The Spring Blog

Engineering
Releases
News and Events

Using Yourkit to Find a Memory Leak

I had such a great experience today with Yourkit that I thought I’d write a quick plug. It’s been a couple of years since I used it in anger, and even then it was the best tool I could find, but now it really is ultra slick. I haven’t done an exhaustive survey of the marketplace, and that wasn’t the object of the exercise: I just wanted a tool to solve a problem.

Here’s the story of my day; frustration, then irritation, then finally satisfaction. I had a suspected memory leak in Spring Batch and I needed to track it down quickly. The back story to this is I’ve seen plenty of memory leaks, but I haven’t had to deal with one at the coal face for quite some time. I live in STS these days (sometimes dream in it as well), so I needed a tool that worked well in the IDE. I tried two tools, but only because the first choice didn’t work. The two I tried were TPTP and Yourkit.

Read more...

Maven PAR Plugin 1.0.0.M1

Shortly after the introduction of SpringSource dm Server (Application Platform at the time), Thorsten Maus created a Maven plugin for creating PAR files. This was a great community contribution and we even used it in the Getting Started Guide for dm Server 1.0.x.

As dm Server’s 2.0 milestones have progressed we’ve been adding new functionality to the PAR file. The most interesting feature is that now a PAR file can contain more than just JAR files. With the introduction of OSGi RFC 66, the dm Server has deprecated Web Modules in favor of the standard Web Container files using a .war extension.  Because of this, the PAR plugin needed to be updated to support these different types as dependencies.  Thorsten graciously agreed to donate his code to SpringSource and I’m pleased to announce the 1.0.0.M1 release of the Apache Licensed Maven PAR Plugin.

Read more...

Installing STS into Eclipse 3.5

Today marks a big day for Eclipse and for everybody involved with the Eclipse ecosystem: Congratulations to the Eclipse folks for releasing Eclipse 3.5 aka Galileo. You can read more about the release at http://www.eclipse.org/galileo/. I encourage everybody to download Eclipse 3.5 today and try it out.

Since SpringSource is strongly committed to Eclipse and we are building our SpringSource Tool Suite on top of the Eclipse technology stack, I’m excited to report that STS can be installed and used with 3.5. Here are some instructions to get started:

Read more...

OSGi Test Stubs 1.0.0.M1

I’m pleased to announce the 1.0.0.M1 release of SpringSource’s OSGi Test Stubs.  These stubs offer a way to unit test complex OSGi Framework interactions without needing a full OSGi container.

The Problem

As the dm Server team has been developing, we found that one of the biggest problem areas for testing for us was in BundleActivators.  Our BundleActivators do quite a bit of publishing services to the service registry as well as consuming services using ServiceTrackers.  These kinds of tasks involve many interwoven calls to BundleContexts, Bundles, ServiceRegistrations, and ServiceReferences.  In the beginning, these activators were simple enough that not much unit testing was done on them, and we depended on integration tests to catch any bugs that were introduced.  As time went on though, the activators became more complex and unit testing became a more pressing need.  We started using EasyMock for these tests, but found that they were very complex, hard to maintain, and most importantly hard to understand.

Read more...

Messaging meets OSGi at OSGi DevCon Europe

Yesterday I was speaking at OSGi DevCon Europe about using Spring Integration and dm Server to tackle common problems in large applications in a pragmatic way. Before and after my session I talked to various people that liked to have a little more information about these ideas. This blog will give an overview of what I talked about.

I’ll jump right in with a summary of the presentation.

Any project will grow during its lifetime of active development. Usually developers add features and fix problems raised by the product owners by adding code. This process will naturally grow the code base. While the source grows the maintenance and fixing bugs typically gets harder. If not dealt with this process will ultimately lead to something I call Code Supernova. This uncontrolled growth, and eventual collapse, can be countered by proper modularization, and OSGi is one of the more compelling medicines currently available.

Read more...

Modular Web Applications with SpringSource Slices

Updated: added sub module instructions for Git.

I’ve talked in the past about providing support for truly modular applications, and I’m pleased to announce that you can now access the early prototype code of SpringSource Slices.

Building and Installing

You can access the source code from our Git repository:

git clone git://git.springsource.org/slices/slices.git
git submodule init
git submodule update

To build a packaged version of Slices simply run ant clean jar package from the build-slices directory:

Read more...

dm Server Repository Content via JMX

In the dm Server 2.0.0.M1 release we added support for shared repositories. As a followup to this new functionality, we’ve added support for browsing those repositories via JMX.

Connecting to a running dm Server instance with a JMX client now shows you a Repository group. Under this group, each configured repository (with the exception of chained repositories) has a bean that returns synopses of all of the artifacts contained inside. The bean also exposes a method for returning the entire, detailed ArtifactDescriptor for a given bean based on it’s type, name, and version.

Read more...

Exploring Roo's Architecture

Last month we discovered how easy it is to build a fully-fledged enterprise application in just a few minutes using Spring Roo - our new productivity tool for Java developers. While many Java developers have already started evaluating Roo to help save time on their projects, I’ve received a lot of questions from people curious about how Roo actually works. In this blog entry I will explore Roo’s architecture in depth, including its goals, alternatives prototyped, design rationale and implementation details. By the end you’ll have a good understanding of what makes Roo tick and why its approach works well for Java projects.

Read more...

Deploying WARs to the OSGi Web Container is now even easier

As Rob mentioned in his introduction to the OSGi Web Container, dm Server automatically imports system packages into Web bundles. This has proved very useful, especially when deploying existing WAR files into an OSGi environment. I’ve recently spent some time moving this functionality from dm Server’s Web subsystem into the OSGi Web Container RI. This blog describes the new functionality, and how to make use of it.

Enabling import of the system packages

There are two ways in which you can instruct the RI to import all of the exported system packages.

Read more...

Using Spring BlazeDS Integration 1.0

Today we announced the public availability of the 1.0 GA release of the newest member of the open source Spring project portfolio, Spring BlazeDS Integration. Corresponding with this event, I thought it time to bring my previous getting started post up to date. To recap:

This project's purpose is to make it easier to build Spring-powered Rich Internet Applications using Adobe Flex as the front-end client. It aims to achieve this purpose by providing first-class support for using the open source Adobe BlazeDS project and its powerful remoting and messaging facilities in combination with the familiar Spring programming model.
Read more...