The Spring Blog

Engineering
Releases
News and Events

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 ‘./startup.sh -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 ‘:> ’.

Read more...

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

Regions

(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.

Read more...

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.

Read more...

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 http://maven.springframework.org/milestone. 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...