The Spring Blog

News and Events

Reuse your Hibernate/JPA domain model with Grails

It’s a common story. You have an existing database and now you want to add a web application for it with the minimum of fuss. Is Grails up to the task? Of course it is! Even better, if you already have a domain model based on JPA or Hibernate configuration files, you can reuse it and still benefit from the great GORM features you’re used to.

The first step in reusing an existing domain model is to get the class files on the application’s classpath. You can do this either by packaging them up in a JAR file and including it in the application (typically by dropping it in the ‘lib’ directory), or by putting the source files in the ‘src/java’ directory. The JAR file is the better approach when sharing a model between applications, but you then need a multi-project build system to ensure that the JAR is always up to date for all projects. It’s probably worth the extra effort and both Gradle and Maven have plugins for building Grails projects. Alternatively, if your Grails application is the only project using the model going forward, you should keep the source in ‘src/java’ instead.


Spring Roo 1.1.0.M3 Released

Update: SpringSource Tool Suite 3.5.0.M3 is now available for download. It includes the latest Spring Roo 1.1.0.M3 and GWT 2.1.0.M3 support.

Many members of the community have been eagerly awaiting Spring Roo 1.1.0.M3, and I’m pleased to announce it is now available (download here). This release incorporates more than 150 new features, enhancements and other improvements since Milestone 2, bringing the cumulative total in the 1.1.0 milestone series to some 500 issues. Many of the improvements in Spring Roo 1.1.0.M3 reflect our continued close collaboration with the Spring Framework, Google Web Toolkit, AspectJ and SpringSource Tool Suite teams, and you can see the results in some of the major new features:


RabbitMQ Plugin for Grails - Early Access

RabbitMQ is a lightweight, reliable, scalable and portable message broker based on the Advanced Message Queueing Protocol (AMQP). It’s ideal for heterogeneous systems and cloud platforms, but it can be used for pretty much any messaging requirements, big or small. You don’t (typically) access it via the JMS API, and in fact the JMS plugin won’t help, but a new plugin is now available that’s dedicated to making it easy to use RabbitMQ from Grails applications.

The current version of the plugin (0.2) is relatively limited, but you can already send and receive messages. I encourage you to try it out and provide feedback - you have the opportunity to influence its development!


(Secure) File Transfer, the Only Way to Fly…err Copy

There are many ways to skin a cat. Many applications today rely on messaging (AMQP, JMS) to bridge the gap between disparate systems and data. Others rely on RPC (typically web-services, or REST). For a great many applications, however, file transfer is very much a way of life! There are several common ways of supporting it, but three of the most common are using a shared mount or folder, using a FTP server, and - for more secure exchanges - using SSH (or SFTP). While it’s common knowledge that Spring has always provided first-class support for messaging (JMS, AMQP) and RPC (there are far too many remoting options to list!), many might be surprised at the many robust options for file transfer that the Spring Integration project has. In this post, I’ll be building against some of the exciting support found in the upcoming Spring Integration 2.0 framework that lets you hook into events when new files arrive and also to send files to remote endpoints like an FTP or SFTP server, or a shared mount.


Spring 3.0.4 is Now Available

Arjen Poutsma has just announced that Spring 3.0.4 is now available. This release addresses over 80 minor issues and updates Spring’s support for some recent third-party releases including Hibernate Core 3.6, Hibernate Validator 4.1, EclipseLink 2.1, and EHCache 2.2.

Download | Documentation | Javadoc API | Change Log | JIRA

All the latest features for Spring as well as advanced technical sessions and roadmap discussion will be happening at SpringOne 2GX 2010 in Chicago, October 19th-21st. Be sure to register now to lock in an early registration discount.


Building RabbitMQ apps using Python

RabbitMQ is a powerful messaging broker based on the Advanced Message Queueing Protocol (AMQP). Thanks to the neutral nature of the AMQP spec, it is easy to connect to it from many platforms, including Python. In this blog entry, we will:

  • Create a simple stock ticker Python application

  • Create a brokerage Python application that decides when to buy and sell.

  • Compare pika, an AMQP library created by the RabbitMQ team, with py-amqplib. instructions for your platform

Simplified Spring Security with Grails

Spring Security is a powerful library for securing your applications that comes with a bewildering number of options. Based on Spring, it can be readily integrated into a Grails application. But why not save the hassle and use the new improved Grails plugin?

The plugin has gone through several evolutionary stages that started with the Acegi plugin. Its most recent incarnation is a complete rewrite for Spring Security 3 and Spring 3. One of the results of this is that the plugin will only work with Grails 1.2.2 and above. Another significant change is that there is no longer just one Spring Security plugin: some features have been broken out into optional plugins. So now you only include the features you need in your application.


Virgo Milestone M03 Ships

Virgo 2.1.0.M03-incubator is available from the Virgo website. The changes include:

  • Further performance improvements, especially for Windows users.
  • Update the version of Logback to 0.9.24 and SLF4J to 1.6.1
  • Minor bug fixes

The performance improvement was achieved by adjusting the log level of entry exit tracing.

As a result of the new version of Logback the syntax of the configuration file ‘serviceability.xml’ has changed slightly. More information can be found here.

We have now published a plan outline for the future of Virgo so you have a better idea of where we are going.


Hyperic Broadens vSphere Support through vCenter APIs in Version 4.4

SpringSource Hyperic 4.4 was released earlier this week that brings enhanced management of VMware virtualized environments through integration with VMware vCenter.  While Hyperic has long had support for VMware technologies (a.k.a. VMware Infrastructure or VI), the availability of the VI Java API ( made our jobs much easier, because the power SDK streamlined how a Java application can interact with VI back then.  By adopting the VI Java API, we were able to keep up with VMware’s evolution easily from VI to VMware vSphere, as it is known today.  This also allowed us to communicate directly with both ESX and ESXi servers without differentiation or modification as those technologies evolved.  As VMware became an increasingly larger component of the datacenter infrastructure, it began to seem incomplete to manage each ESX and ESXi server as a separate entity while it is a member of a larger infrastructure.  In fact, VMware moved forward with overlaying technologies over the physical hardware resources to bind them together in a holistic environment called vSphere.  The management of VMware vSphere is handled by a software initially named VirtualCenter, and is now dubbed vCenter.  Being part of the VMware family, we began to realize that our VMware support needed to evolve beyond simply leveraging an easy-to-use SDK.  As we learned more about the latest vSphere technology from our new VMware colleagues, we realized that we needed to rethink how we support the monitoring and performance management of vSphere environments.  Hyperic 4.4 is the result of that re-architecture of Hyperic’s VIM plugin, which has been deprecated in favor of a new vSphere plugin.  It makes much more sense to use VI Java to invoke the vCenter APIs, which provided much more functionalities than ESX or ESXi and can query for the data aggregated at the vCenter server.  Certainly, there is an obvious benefit to consolidating the number of vSphere connections to a single one.  Furthermore, there is the newer ability to perform and track vMotion in vCenter that you would not be able to do elsewhere.  The new level of vSphere integration through vCenter yields many new benefits and features in Hyperic 4.4, some of which include: