JBoss Seam 3.1.0.Beta3 Released

Posted by    |      

I'm very pleased to announce the release of Seam 3.1.0.Beta3. Let's get all the links out of the way first before we get into the details of the release:

Download Seam 3.1.0.Beta3 bundled distribution

Reference Documentation

API Documentation

Report issues

Maven users - please update your seam-bom version:

   <dependency>
      <groupId>org.jboss.seam</groupId>
      <artifactId>seam-bom</artifactId>
      <version>3.1.0.Beta3</version>
      <type>pom</type>
      <scope>import</scope>
   </dependency>

What's changed?

Solder

The biggest changes we have made are around the Solder module. Since this library is so integral to CDI extension development we've decided to make it a top level project at JBoss. Besides a package name change though (from org.jboss.seam.solder to just org.jboss.solder), this change doesn't affect how Solder will be used within Seam -it will still be distributed as part of the Seam project and continue to be a responsibility of the Seam team.

We also reviewed our existing modules and decided that the Seam Catch, Config and Servlet modules were integral to nearly all application development and so have merged their features with the Solder module. This move is a win-win for everyone, because it means that you the developer have a few less dependencies to worry about (just add Solder to your project and you get all these additional features for free), and it's also good for Seam development team because we have 3 less modules that we need to maintain infrastructure for.

IMPORTANT! Please remember to remove the Seam Catch, Seam Config and Seam Servlet modules from your project before upgrading to 3.1.0.Beta3.

Logging

The logging API has also undergone some substantial improvements, thanks to Ken Finnigan. Since it is part of the Solder module you will need to update your imports if you want to use typesafe logging in your application. To use it in your own project, simply import the Logger class:

import org.jboss.solder.logging.Logger;

Then inject the logger into your bean:

@Inject Logger log;

It's as easy as that!

Combined jars

One of the things we delivered in the Seam 3.0 release was combined jars - jar library files that bundled both the API and implementation jars of a module into a single jar file. We've come to realise that while the API/implementation split was a good idea, the combined/shaded jars were causing problems for some people. We've since removed the combined jars from all of the modules, and now simply provide separate API and implementation jars. To maintain backwards compatibility, we've renamed the implementation jars to correspond with the previous naming of the combined jars. A little confused about this? Let's look at an example to make it clearer; in the 3.0 release we provided the following jar files for Seam Persistence:

  • seam-persistence-api.jar
  • seam-persistence-impl.jar
  • seam-persistence.jar

The first two jars listed here contained the interfaces and classes for the API and implementation for the Seam Persistence module. The third jar is simply a repackaging of the first two jars - seam-persistence.jar just contains everything that's packaged in seam-persistence-api.jar and seam-persistence-impl.jar. This was done for convenience, so that you would only need to add a single dependency for your project if you wanted to use Seam Persistence - here's what it would look like in your Maven pom.xml:

<dependency>
   <groupId>org.jboss.seam.persistence</groupId>
   <artifactId>seam-persistence</artifactId>
</dependency>

Contrast that to what we have in the latest release:

  • seam-persistence-api.jar
  • seam-persistence.jar

The first jar file, seam-persistence-api.jar remains unchanged. The second jar file, seam-persistence.jar is actually now the implementation (which was previously called seam-persistence-impl), and the third jar file (which was called seam-persistence.jar) has now gone away. This means that if you have an existing dependency on seam-persistence, it will now be a dependency on the implementation itself, not on the (previously) combined jar. Since the implementation has a transitive dependency on the API, it gets pulled in automatically. I hope that makes sense, if you're still confused please let us know in the comments!

What's new?

I'm very excited to announce the addition of a number of new modules for this release.

Seam JCR

Seam JCR is a portable extension for CDI that allows you to work more easily with JCR (Java Content Repository) repositories. It currently supports Modeshape and Apache Jackrabbit.

Seam JMS

Seam JMS makes JMS (Java Messaging Service) much easier to use in a CDI environment, and allows bridging between JMS endpoints (such as topics and queues) and the CDI event bus.

Seam Social

Social networking comes to Seam! Seam Social provides a number of integrations with Facebook, Twitter and LinkedIn to allow you to easily interact with these services directly from your CDI-based application.

Seam Mail

The long awaited Seam Mail module is making a comeback from Seam 2. This module allows you to generate and send e-mail from your CDI application, and unlike in Seam 2 the mail templating is no longer based on JSF but on Freemarker or Velocity instead, meaning you can use it in your non-JSF application. We're still working on the docs for this module, so we ask that you're patient while we get them ready in time for the CR1 release.

What's next?

We're going to have a relatively short cycle between Beta3 and the CR1 release, with a release date of 18 October as the target for CR1. We welcome any feedback from our users and we encourage you to try out Beta3 and let us know of any issues you find.


Back to top