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.
Read more

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.

Read more

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.

Read more

Spring Security Kerberos/SPNEGO Extension

We’re pleased to announce that the first milestone of the Spring Security Kerberos Extension is now available for download. The release is also available through the Maven milestone repository at With the Spring Security Kerberos Extension, your users are authenticated against your web application just by opening the URL. There is no need to enter a username/password and no need to install additional software.

Before going deeper into Kerberos, I would like to introduce Spring Security Extensions, a new Spring Extension project dedicated to provide extension modules for the core Spring Security project. Currently we have two extensions developed there: A SAML2 integration and a Kerberos/SPNEGO integration. Every module will have its own release cycle, so that people can benefit from these extensions as soon as they are ready and don’t have to wait for the next Spring Security release. If you have any ideas or even some code for further extensions, please tell us!

Read more

Bundlor Adds Support for the Blueprint Service

I’m pleased to announce that beginning with its newly released 1.0.0.M6 version, Bundlor now supports OSGi Blueprint Service files.

As with the support for Spring-DM contexts, Bundlor scans for Blueprint Service configuration files in both the default location (OSGI-INF/blueprint/*.xml) and in locations specified with the custom Bundle-Blueprint manifest header. When these files are found, they are scanned for class and interface names and the packages for those types are added to the OSGi manifest that Bundlor creates.

Read more

Spring BlazeDS Integration 1.0.1 Released

Dear Spring Community,

I'm pleased to announce that the 1.0.1 maintenance release of Spring BlazeDS Integration, the open source solution for building Spring-powered RIAs with Adobe Flex, is now available.

Download | Reference Documentation | JavaDocs | Changelog

Along with a number of minor bug fixes and enhancements, we have done some restructuring of the popular Spring BlazeDS Test Drive bundled sample application to make it even easier to get up and running in a variety of different environments, and to bring some of the configuration elements further in line with what you might see in the near future in a SpringSource Tool Suite project creation template for Spring BlazeDS Integration projects. Also, we've enhanced the security example further to really show how having Spring Security so tightly integrated sets this solution apart from alternate approaches to securing Flex applications.

Read more

Hyperic + SpringSource + VMware = Goodness

The last 100 days have been extraordinary for Hyperic. The events over the last three months place Hyperic in the unique position to be part of defining the future of application deployment and management. First, we announced in May that we were joining forces with SpringSource to build the next great full lifecycle enterprise software company. Judging by the response from our community, customers, partners, and the press, our combined “Build – Run ‑ Manage” strategy was the right choice and something the market has been waiting for.  Next, just a few weeks ago in August and barely 90 days into our SpringSource acquisition, we announced that SpringSource was itself being acquired by VMware (already arguably the next great enterprise software company).  In the process, Hyperic, SpringSource and VMware are defining a platform for computing that we all believe will revolutionize the way companies deploy and manage business applications and drive significant efficiencies for IT operators and developers.  Hyperic’s management software products are a key part of that vision.  We have heard from many journalists and analysts who greeted the announcement and vision with great interest not only because of the tremendous value of the Spring technologies, but also because of the potential this might have to the Hyperic management software products.

Read more

Configuration Properties Screencast

In Rob’s dm Server Roadmap blog entry, last April, we introduced two new artefact types: “plan” and “configuration file”.

Here is a short screencast demonstrating configuration files, in particular we show how to reference them from a plan.

First, a small web application picks up properties from a configuration properties file—deployed separately from the application. Second, the application and the properties are placed in the repository and a plan is constructed and deployed which installs and starts both the web application and its properties in one step.

Read more

Update on Groovy and Grails Tools

Since Andy’s announcement of the early alpha version of a new and improved Groovy Eclipse plugin, we have received very good feedback from early adopters out of the Groovy and Grails community. Judging from comments and twitter buzz there really is a big interest in good quality Groovy language support on the Eclipse platform. Andy and Andrew made good progress during the last weeks and are heading towards an M1 release which is not far off; check out JIRA for more details on when to expect it.

We’d like to thank everybody who tried out the early version and took time to report problems and submit feature requests. At this early stage user feedback is immensely important; not only to fix issues but also to understand what is important to Groovy users so that we can focus on the relevant features and problems.

Read more