Help

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.

5 comments:
 
05. Oct 2011, 16:31 CET | Link
Tom
templating is no longer based on JSF

Email templating based on JSF was brilliant, since you could use the same components for email and for html and there was no need for yet another template language in your project. It was also possible to use JSF templates in non JSF applications, so I don't really get why this feature isn't supported anymore.

ReplyQuote
 
05. Oct 2011, 17:05 CET | Link
Cody

The JSF templating issue has to do with lack of support for JSF rendering outside of a traditional request. Seam 2 did this with some trickery, but it wasn't something that anyone wanted to pickup and support without core JSF changes.

There is an Seam Faces JIRA on this SEAMFACES-12 which depends on JAVASERVERFACES-1456

Once those are complete we should be able to plug in a JSF option for generating the subject and body(s) of a message.

 
06. Oct 2011, 16:59 CET | Link
Eric McIntyre | mac(AT)riversoforin.com

If the Servlet module is part of Solder, won't that cause SE projects to have an artificial dependency on the Servlet API?

 
07. Oct 2011, 01:43 CET | Link
Eric McIntyre wrote on Oct 06, 2011 10:59:
If the Servlet module is part of Solder, won't that cause SE projects to have an artificial dependency on the Servlet API?

That's a good question. This is handled by using the @Requires annotation to prevent any servlet-related beans or producers from being installed in an SE environment. This didn't make it into the Beta3 release, but it will be in CR1 (the changes have already been made upstream).

 
11. Oct 2011, 11:41 CET | Link
Shane Bryzak wrote on Oct 06, 2011 19:43:
That's a good question. This is handled by using the @Requires annotation to prevent any servlet-related beans or producers from being installed in an SE environment. This didn't make it into the Beta3 release, but it will be in CR1 (the changes have already been made upstream).

Please note that @Requires is non-portable atm. This only gets clarified with CDI-1.1. Until then a few containers will fail with NoClassDefFound errors.

Post Comment