With the introduction of the security schema in Spring Security 2, it became much easier to get a simple secured application up and running. In older versions, users had to declare and wire-up all the implementation beans individually, resulting in large and complicated Spring application context files which were difficult to understand and maintain. There was a pretty steep learning curve and I can still remember that it took me some time to get my head round it all when I started working on the project (then Acegi Security), back in 2004. On the positive side, this exposure to the basic building blocks of the framework meant that once you had managed to put together a working configuration, it was almost impossible not to have gained at least some awareness of the important classes and how they work together. This knowledge in turn put you in a good position to take advantage of the opportunities for customization that are one of the biggest benefits of using Spring Security.
The Spring Blog
After two months of incorporating valuable feedback, it is my pleasure to announce the first Spring 3.0 maintenance release - addressing more than 170 reported issues. Get it from our download page.
Since quite a few users asked for a dependencies distribution (as an alternative to grabbing dependencies via Maven or Ivy), we are providing a third download now: containing an Ivy repository with common third-party jar files. Note that the core framework is separate from the dependencies; the latter are just provided as an additional convenience and do not constitute an inherent part of the framework distribution. You may of course keep using any supported version of the third-party libraries of your choice.
There are some common concerns of users of Spring Batch and Spring Integration, and we get asked a lot about how they fit together. Spring Batch Admin 1.0.0.M2 was released recently, and it makes heavy use of Spring Integration, so it is a good vehicle for looking at some specific use cases, and that is what we plan to do in this article.
Spring Batch Integration
Part of the 1.0.0.M2 release was the Spring Batch Integration module, recently migrated from Spring Batch and given a new home with Batch Admin. Many of the Batch-Integration cross over use cases are either implemented or demonstrated in Spring Batch Integration. The reason for the new home is that Batch Admin uses a lot of the features of Batch Integration, and so aligning the release cycle of those projects makes more sense.
In my last entry, I walked you through several enhancements in Spring 3 for web application development. A number of you expressed interest in a follow-up entry focused on Ajax remoting. Spring 3 provides a lot in this area to take advantage of. Read on, and I’ll walk you through it.
Spring and Ajax Overview
After our mad dash to the final release of Spring Roo 1.0.0 on New Year’s Eve, many users have asked for an introductory screencast.
In this 5 minute screencast you will see how to:
- Develop a simple “contact manager application” using the Roo shell
- Import and edit the project our free IDE, SpringSource Tool Suite (STS)
- Run the Roo-provided integration tests in STS
- Modify the application and understand ITD round-trip support
- Deploy to your IDE’s web container
- Use the scaffolded web user interface
- “Push-in refactor” to move source code between Java source files and ITDs
- Remove Roo from the project
As Adrian mentioned, today is the day for dm Server 2.0 and I’m delighted to announce that dm Server 2.0 is now available. Thank you for all of the feedback that we’ve had during the development of 2.0, it’s helped to shape it into what we believe is a big step forward for enterprise OSGi. We’re now looking forward to the next steps on the journey at Eclipse.org.
There’s a lot of great stuff in the 2.0 release. Here’s a brief overview:
- dm Shell - we've added a brand new shell in 2.0, that's available both in-process and remotely over ssh. It provides extensive support for managing a dm Server instance and its deployed artifacts.
- Admin console - the admin console has been extensively overhauled in 2.0. It provides, among other things, support for managing and deploying artifacts, examining diagnostic dumps, and examining the bundle wiring both in the live system, and at the time of a resolution failure.
- Plans - dm Server 2.0 introduces support for plans which are powerful alternative to 1.0's PARs for deploying modular applications. A plan can be used to reference all of the artifacts that comprise your application, optionally making the application atomic to tie the child artifact lifecycles together, and scoped to isolate the application from other applications deployed in the same dm Server instance.
- Provisioning - dm Server's always had excellent provisioning support and in 2.0 it's got even better. In addition to the automatic provisioning of bundles based on the needs of the installed applications that was available in 1.0, dm Server 2.0 provides support for provisioning plans, PARs, and configuration from both local and remote repositories.
- Web support - dm Server 2.0 builds upon 1.0's Web support and embeds the Tomcat-based reference implementation for the OSGi Web Container specification, allowing users to deploy vanilla WAR files with all their dependencies in WEB-INF/lib, and Web Application Bundles that import their dependencies via OSGi manifest metadata. The web container is configurable using the standard Tomcat server.xml.
- User region - dm Server 2.0 introduces a user region which isolates the dm Kernel from user-installed applications. Among other things, this simplifies administration as it allows users to focus on user application artifacts and their dependencies without having to deal with those of the kernel as well.
- Spring 3.0 - like many others, we've been tracking the Spring 3.0 milestones and release candidates, and dm Server 2.0 now packages Spring 3.0 final. If you'd prefer to use dm Server 2.0 with a different version of Spring, it can easily be configured to do so.
- Hot deployment - in addition to support for deployment via the admin console, artifacts can also be deployed to dm Server by copying them into the pickup directory, either in archive or exploded form.
- Running as a service - dm Server can now be run as a Windows service or as a Unix background process.
- Logging - as in 1.0, dm Server's logging support is available via SLF4J. In 2.0, the backend has been replaced with LogBack, making it extensively configurable by modifying dm Server's config/serviceability.xml file with a rich set of appenders available out of the box.
- Equinox 3.5 - dm Server 2.0 embeds Equinox 3.5, the reference implementation of OSGi 4.2.
Today we will be releasing version 2.0 of the dm server. This represents a major milestone for the project, and for enterprise application development with OSGi in general. I’m delighted to now be able to reveal the next step in the dm Server journey: we have submitted a proposal at Eclipse.org to continue development of the dm Server as part of the Eclipse RT top-level project. The Eclipse nickname for the project is Virgo.
I will be walking through a basic sample application that you can checkout from the spring-samples Subversion repository. It has been designed to be as simple as possible while showcasing both annotation-driven and XML-based approaches to scheduling tasks in Spring 3.0.
Let’s begin with the annotation-driven approach. You can run it directly via the main() method in AnnotationDemo. If you take a look, you’ll see that it’s nothing more than a bootstrap for a Spring ApplicationContext:
We’re delighted to announce the general availability (GA) of Spring Roo 1.0.0.
Spring Roo is a next-generation rapid application development tool for Java developers. With Roo you can easily build full Java applications in minutes. It differs from other tools by focusing on:
- Higher Java productivity: Try the ten minute test and see for yourself.
- Stock-standard Java: Roo uses the Java APIs and standards you already know and trust.
- Usable and learnable: Roo features an extremely high level of usability and an advanced shell.
- No engineering trade-offs: Roo has no runtime portion and does not impose any CPU, RAM or disk storage cost.
- Easy Roo removal: Roo can be easily removed from a user project in under five minutes.
Continuing the release train, today we are excited to announce the general availability of Grails 1.2 final. Representing the most stable and performant Grails release yet, Grails 1.2 is a significant new release of the premier dynamic language framework for the JVM.
As well as featuring all of the goodness of Spring 3, this release has a number of significant new features for Grails users:
- Dependency Resolution DSL: Based on Ivy, Grails users now have full control over JAR dependencies including those inherited from the framework and any installed plugins.
- Better Spring Integration: As well as supporting component scanning, Grails now allows you to implement controllers as regular MVC @Controller instances.
- Named Query Support: It is now possible to define named, reusable criteria queries in GORM that can be combined with regular dynamic finders making querying a lot more DRY
- Improved Performance & Memory Consumption: The performance of Grails’ view layer (GSP) has been significantly improved resulting in up to 2-3 times throughput. We’ve also improved Grails’ memory consumption and the need for additional PermGen by implementing precompilation of GSP views.
- Named URL Mappings: It is now possible to name an individual URL mapping which allows you to create more explicit and expressive links inside GSPs
- Refactored Testing Infrastructure: Grails’ testing infrastructure is now completely pluggable to new providers. The default JUnit provider is still present, but new testing providers can be implemented that can be run in specific phases (such as ‘unit’, ‘integration’ and ‘functional’ phases). There is already a Spock plugin that takes advantage of this new infrastructure, allowing BDD style testing.
- Pluggable Web Containers: Grails now allows different development time containers to be installed and plugins for both Tomcat and Jetty are available.