The Spring Blog

News and Events

Introducing tc Server Developer Edition - with Spring Insight

We are proud to present the Spring community with a new tool which helps get their applications to production even faster: tc Server Developer Edition is the standard 100% Tomcat you know and love, plus a new Spring Insight console.

Spring Insight gives deep visibility into your application’s real activity on a request-by-request basis. For any request you can see all the JDBC queries it made, how much time it took to render, or timings for any of your major Spring beans.

This fine grained information is very valuable when you are looking at a specific request in isolation, but it can be difficult to find a specific request in a mountain of millions. Fortunately, Spring Insight also has a 10k foot view and can quickly point you to problem areas.


dm Admin Console Demo Screencast

Here is a screencast showing the dm Admin Console for the dm Server. It gives a brief tour of the dm Admin Console and then shows some of the features by deploying a simple demo application. The application consists of a configuration file, a web bundle and a content bundle. When deployed the application simply shows the contents of the configuration file in a web browser. The application is installed in parts for the purpose of this demo, in reality you would group the application together with either a ‘par’ or a ‘plan’, to see how this is done with a ‘plan’ file another screencast is available here.


dm Kernel

In Milestone M5, for the first time, dm Kernel is available standalone. You can get it from here.

What is dm Kernel?

dm Kernel dm Server Admin Console Splash Tomcat

Essentially, dm Kernel provides you with all that is good about dm Server’s OSGi support, including:

  • scoping

  • hot deployment

  • pars

  • bundles

  • plans

  • configuration properties

  • auto-provisioning

  • repositories

    • all repository types: watched, external and remote

    • chain support (the chain is empty by default)

  • easy configurability

  • the user region

  • full system and application tracing and dump support

  • oh, and of course, Spring beans and Spring DM support as usual,


The dm Shell

The dm Server has a new command line shell. It is currently available along with the existing Equinox shell and will replace it for the 2.0 release. Improvements over the Equinox shell include basic tab completion and a command history.

The dm Shell is available both locally and remotely over ssh. When used locally by starting the server with the ‘./ -shell’ option it will take over the console output once the dm Kernel has started. Console output will still be viewable in the event log. Either way the first thing to be produced is an ASCII art splash image followed by the command prompt ‘:> ’.


Spring Integration 2.0.0.M1 Released

Dear Spring Community,

I am pleased to announce that the Spring Integration 2.0.0 Milestone 1 release is now available.

Download | Reference Documentation | Release Notes

This milestone introduces the following features:

  • Spring EL support for endpoints (router, filter, transformer, etc)
  • Spring EL support for Messaging Mappers including a parameter-level @MessageMapping annotation
  • AOP-based MessagePublishingInterceptor including a method-level @Publisher annotation (using SpEL also)
  • JMS-backed Message Channels as drop-in replacements for any channel elements
  • and more (see the Release Notes for the full list)


(updated 15Oct2009)
Beginning in milestone M5, dm Server 2.0 employs regions to isolate the kernel from users’ applications. This means that the kernel implementation is almost completely invisible to applications and to application management.

Also in milestone M5, support for cloning is completely removed. Region isolation and scoped plans between them offer much simpler and more manageable solutions to the most common problems that cloning was intended to address.

In the following two sections I outline these changes, and the reasons we made them.


dm Server 2.0.0.M5

dm Server 2.0.0.M5 is now available and can be downloaded from here.

We’re getting towards the end of the 2.0.0 release cycle so most of the work in this milestone is focused on locking down the user interaction model. Take a look at the M5 release notes for the full details of what we’ve been working on. Please keep your feedback coming as comments on our blog, in the forums and on JIRA.

Please also watch the blog for detailed posts on many of the new features referenced in this New and Noteworthy.


Drawing Spring into the Blueprint

Last month, almost 4 years after the initial 4.0 release, OSGi Alliance officially approved the OSGi service platform 4.2 release. The announcement headline featured the Blueprint Container Service, a new addition to the Compendium specification based on the programming model promoted by the Spring Dynamic Modules (also known as Spring OSGi) project. To quickly summarize Blueprint, I will just blatantly quote the OSGi spec:

(Blueprint Container) [...] defines a dependency injection framework, specifically for OSGi bundles, that understands the unique dynamic nature of services. It provides an OSGi bundle programming model with minimal implementation dependencies and virtually no accidental complexity in the Java code.

New Cloud Foundry feature: Save deployment blueprints as Templates

When you launch a Java web application on Cloud Foundry, you can specify many aspects of a deployment blueprint including:
•    Single instance vs. Multiple instances topology
•    Virtual instance types
•    Public facing IP address
•    SSL configuration
•    JVM options
•    Database configuration
•    Monitoring and management
•    Self-healing and auto-scaling options
•    And more…

The wide range of options gives you the ability to configure the optimal deployment blueprint for your application. The bad news was that you had to re-enter those carefully chosen settings each time you deployed your application.


Spring Framework 3.0 RC1 released

I’m pleased to announce that we recently released the first Spring 3.0 release candidate (download page). This release completes the key Spring 3.0 feature set. You certainly remember the original Spring 3.0 themes REST and EL; in the meantime, we have been expanding the list significantly:

  • Fully Java 5 based: This is the first Spring generation which requires Java 5 or above, with Java 5 syntax used in the entire Spring API as well as in the entire implementation codebase. For example, the BeanFactory API returns generically typed bean instances wherever possible, and ApplicationListeners may declare a specific event type using generics now. For a comparison: In Spring 2.5, the actual Spring core was still JDK 1.4 compatible, while a lot of higher-level functionality was built on Java 5.

  • Spring expression language (SpEL): a core expression parser for use in bean definitions, allowing for references to nested bean structures (e.g. properties of other beans) as well as to environmental data structures (e.g. system property values) through a common #{…} syntax in property values. This also serves as a foundation for various expression-based features across the Spring project portfolio.

  • Extended support for annotation-based components: now with the notion of configuration classes and annotated factory methods - the key Java configuration capabilities of the Spring JavaConfig project are finally available in Spring proper! Spring also allows for injecting configuration values through @Value expressions now, referring to configuration settings via dynamic #{…} expressions or static ${…} placeholders.

  • Powerful stereotype model: allows for creating ‘shortcut’ annotations through the use of meta-annotations, e.g. for default scopes and default transactional characteristics on custom stereotypes. Imagine a custom @MyService annotation indicating @Service, @Scope(“request”) and @Transactional(readOnly=true) through a single annotation. This is the Don’t Repeat Yourself principle applied to the use of component annotations!

  • Standardized dependency injection annotations: Spring 3.0 comes with early support for the JSR-330 specification for Dependency Injection in Java - annotation-driven injection via javax.inject.Inject and its associated qualifier and provider model, as an alternative to Spring’s own @Autowired and co. Note that JSR-330 has not been finalized yet; we will be completing Spring’s javax.inject support as the specification itself matures.

  • Declarative model validation based on constraint annotations: Spring-style setup of a JSR-303 Bean Validation provider (such as Hibernate Validator 4.0). Comes with an annotation-driven validation option in Spring MVC, exposing a unified view on constraint violations through Spring’s binding result facility. Note that JSR-303 is near-final but not quite final yet; we will be tracking its ongoing evolution up until GA.

  • Enhanced binding and formatting facilities: stateless Converter and Formatter SPIs as an alternative to standard PropertyEditors, with full Spring container and Spring MVC integration. Separates between converting (core type coercion) and formatting (rendering to and parsing from localized String values). Formatting may be driven by annotations in a style similar to the use of JSR-303 constraint annotations.

  • Comprehensive REST support: native REST capabilities in Spring MVC, such as REST-style request mappings, URI variable extraction through @PathVariable parameters, and view resolution driven by content negotiation. Think about this as Spring MVC 2.5 with first-class REST capabilities built in now - while still focusing on the MVC approach. Client-side REST support is available in the form of a RestTemplate class.

  • Object/XML Mapping (OXM): as known from Spring Web Services, now in Spring Framework core. Marshalling and Unmarshaller abstractions with out-of-the-box support for JAXB 2, Castor, etc. Comes with integration options for XML payload support in Spring MVC and Spring JMS.

  • Portlet 2.0 support: Spring MVC fully supports Portlet 2.0 environments and Portlet 2.0’s new event and resource request model. Includes specialized mapping facilities for typical portlet request characteristics: @ActionMapping, @RenderMapping, @ResourceMapping, @EventMapping.

  • Next-generation scheduling capabilities: new TaskScheduler and Trigger mechanisms with first-class cron support, aligned with Spring’s TaskExecutor mechanism. Spring 3.0 comes with a convenient task namespace and also supports @Async and @Scheduled annotations now. This can be executed on top of native thread pools or server-managed thread pools, with support for all major Java EE application servers.

  • Last but not least, early support for Java EE 6: Spring 3.0 already supports the use of JSF 2.0 and JPA 2.0 in a Spring environment, in addition to JSR-303 and JSR-330 support. Further Java EE 6 related specifications such as Servlet 3.0 will be fully supported as they become available in concrete products; this is scheduled for the Spring 3.1/3.2 timeframe.