Red Hat

In Relation To Seam

In Relation To Seam

PicketLink 2.5.0.Beta3 Release and Version Change

Posted by Shane Bryzak    |       |    Tagged as CDI PicketLink Seam

I'm pleased to announce the release of PicketLink 2.5.0.Beta3. This release is actually the successor to 3.0.0.Beta2 - we've changed the version number to help avoid confusion going forward, if you want the nitty gritty details about this decision then you can find out more below.

In case you don't know what it is, PicketLink is a security framework for Java EE applications. If you are already familiar with Seam Security, then you might consider PicketLink to be its spiritual successor. For more info about its features check out this overview.

As always, here's the direct links to the various resources for this release:

PicketLink 2.5.0.Beta3 Distribution Zip

Reference Documentation

API Documentation

Source on GitHub

Report Issues

Mailing List

Mailing List Archives


For those of you that use Maven, we've made a slight change to the artifact ids - from now on a typical application will only need to declare the following dependencies:



<!-- Optional database schema when using Identity Management with JPA based Identity Store -->

For this release, the reference documentation has received some special attention and so should be significantly more informative than previous betas. With that being said, the team is constantly improving the docs and will continue to add more content right up to the final release. There are also numerous quickstarts planned to help you get up and running quickly with the many security features provided by PicketLink - I'll be posting some more info about some of these shortly so keep an eye on this space.

There have also been a substantial number of bug fixes, new features and improvements made since the last beta release, the details of which you'll find in the release notes below.

As always, the PicketLink team is available to chat with at various times of the day on the #picketlink IRC channel at; also feel free to drop them a line at the PicketLink Forums if you need help using PicketLink in your own application.

Version Change

If you've been following any PicketLink-related news lately, you'll know that the PicketLink team has been working hard towards releasing PicketLink 3 in the very near future. It has recently come to the team's attention though that there is some confusion surrounding the versioning of PicketLink, which is due to a couple of reasons; firstly, there is an existing committment to support PicketLink Federation 2.1 in EAP (the supported version of JBoss Application Server, recently renamed to WildFly). Secondly, there was never an actual 2.x release of PicketLink IDM (it was only ever officially released as version 1.x). Because of this, and since the PicketLink Federation that was planned to be released as 3.0 is actually backwards compatible with 2.1, the team has decided to rename the 3.0 release to 2.5. So what does this mean exactly? Well, besides the change in version number, not much at all really - PicketLink 2.5 will still include all of the next generation security features that the PicketLink team have been working on over the past months. We apologise for any inconvenience that this change might have caused, however the team felt it was best to resolve this confusion now, before the final release.

Release Notes


  • PLINK-116 - Change scope for JBoss Logging dependency in picketlink-common module to provided
  • PLINK-119 - DefaultIdentity is considering the when comparing with the DefaultLoginCredentials.userId
  • PLINK-131 - Signed logout request does not contain the "Destination" attribute
  • PLINK-132 - PicketLink based SP's need to support different login and logout URLs
  • PLINK-136 - The IDM subsystem is always initialized even when a custom Authenticator is provided
  • PLINK-137 - Change the scope for CDI dependencies in picketlink-api and picketlink-impl to provided


  • PLINK-126 - Introduce individual annotations for JPA schema entities and properties
  • PLINK-135 - Add type parameters to CredentialHandler

Feature Request

  • PLINK-113 - Users should be able to use a IdentityManager for any of the configured realms.
  • PLINK-117 - The API documentation should aggregate the javadocs for the modules
  • PLINK-118 - Update documentation with the File and LDAP stores configuration
  • PLINK-120 - Login logic is not considering when the user is disabled/locked
  • PLINK-121 - Throw a specific exception when the user tries to authenticate twice using the same credentials
  • PLINK-124 - Add credential storage retrieval methods to IdentityManager
  • PLINK-127 - CredentialHandler implementations should check if the Agent is disabled
  • PLINK-128 - Refactor the Configuration API to provide a Fluent API using the build pattern
  • PLINK-142 - Provide more examples about how to mix identity stores


  • PLINK-92 - Container Bindings Project
  • PLINK-122 - Provide test cases for the base module
  • PLINK-125 - Umbrella task for 2.5.0.Beta3 documentation issues
  • PLINK-129 - Import the container bindings modules from PicketLink v2
  • PLINK-133 - Use getAgent() instead of getUser() throughout authentication API
  • PLINK-138 - Change project version from 3.0.0 to 2.5.0

PicketLink 3.0 Alpha1 Released

Posted by Shane Bryzak    |       |    Tagged as CDI PicketLink Seam

I'm very pleased to announce the first alpha release of PicketLink 3.0. This release is the culmination of many months of effort by the JBoss Security team, with many contributions made from other project teams at JBoss and members of the community. I'd like to thank everyone involved with this release, from those who participated in the many design discussions on the security mailing list over the last few months, to those who contributed code and have started integrating PicketLink into their own projects.

For those who don't know, PicketLink is a CDI-based application security framework for Java EE, much in the same spirit of Seam Security. In fact, PicketLink 3.0 can be considered to be the spiritual successor to Seam Security, as it is more or less based on a similar core design albeit with a much more powerful and flexible identity model and feature set.

Before I go any further, here's the links to the goodies:

PicketLink 3.0.0.Alpha1 Distribution Zip

Reference Documentation * PLEASE NOTE that the reference documentation is still being written, so please be patient with us!

API Documentation

Source Code on GitHub

Report Issues

PicketLink forums

Mailing List

Mailing List Archives

For those of you that use Maven, here's the artifact id's to add to your pom.xml:





<!-- Optional database schema when using Identity Management with JPA based Identity Store -->

Currently the Maven artifacts are located in the JBoss Maven Repository, however they are planned to be synchronized to Maven Central shortly.

This initial Alpha release primarily concentrates on authentication, authorization and identity management features. Let's take a look at a couple of these features in a little more detail, starting with simple programmatic authentication.

Programmatic authentication

This simple form of authentication should be familiar to many Seam users. To control the authentication process yourself, simply provide a bean in your application that implements the following Authenticator interface:

package org.picketlink.authentication;

import org.picketlink.idm.model.User;

public interface Authenticator {
    public enum AuthenticationStatus {

    void authenticate();

    void postAuthenticate();

    AuthenticationStatus getStatus();

    User getUser();

To make things easier, we've provided an abstract base class that's already implemented everything for you except for the authenticate() method. There's only two things you need to do yourself in the authenticate() method; 1) set the authentication status to reflect whether authentication was successful, and 2) set the User object if authentication was successful. In this example, we're going to inject DefaultLoginCredentials (a simple holder bean provided by PicketLink which can be used for traditional username/password authentication) and allow authentication if the provided username is 'jsmith' and the password is '1234':

public class MyAuthenticator extends BaseAuthenticator {
    @Inject DefaultLoginCredentials credentials;

    public void authenticate() {
        if ("jsmith".equals(credentials.getUserId()) && "1234".equals(credentials.getPassword())) {
          setUser(new SimpleUser(credentials.getUserId()));
        } else {

To actually perform the authentication, simply have your application set the username and password credentials on the DefaultLoginCredentials bean, then invoke the Identity.login() method - you can either do this directly from your view layer, or define a business method in your project that injects the Identity bean and then invokes its login() method. Your Authenticator bean will be found automatically by the authentication process and its authenticate() method invoked to determine whether authentication was successful. An example might look something like this:

public @RequestScoped class LoginAction {

  @Inject DefaultLoginCredentials credentials;
  @Inject Identity identity;
  public void login(String username, String password) {

Once authenticated, the Identity bean (which by default is session-scoped) can be injected into your application's beans so that you can access the currently authenticated User.

Identity Management

PicketLink's Identity Management (IDM) module provides a formal API for managing the Users, Roles and Groups of your application. Support is provided out of the box for LDAP, Database (via JPA) or File-based identity stores, and an extensible SPI allows for the implementation of additional identity storage backends. The IDM features provided by PicketLink are far too extensive to cover in a single blog post, so let's take a look at a simple example using the JPA identity store. To make things easier we provide a default database schema, included in the picketlink-idm-schema jar file. To make use of this schema, simply add the schema jar file to your project and then add a persistence-unit entry to your project's persistence.xml file, like so:

<persistence-unit name="picketlink-default"
    <description>PicketLink Persistence Unit</description>


        <property name="" value="create-drop" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />
        <property name="hibernate.transaction.flush_before_completion"
                  value="true" />

The one other thing you must provide is an EntityManager for PicketLink to use, we can do this by writing a CDI producer field - here's an example (make sure the unitName matches the one you've configured in persistence.xml):

public class Resources {
    @PersistenceContext(unitName = "picketlink-default")
    private EntityManager picketLinkEntityManager;

Once we've done that, we're ready to go! No further configuration is necessary, PicketLink provides an IDM-based Authenticator implementation that is automatically configured if the appropriate entity classes are provided.

The first thing we might want to do is to create some default users for our application. We can do this by providing a @Startup bean - here's an example in which we create a user called 'admin', to which we grant the 'administrator' application role:

public class CreateDefaultUser {
    @Inject IdentityManager identityManager;

    public void create() {
        User admin = new SimpleUser("admin");

        this.identityManager.updateCredential(admin, new Password("secret"));

        Role roleAdmin = new SimpleRole("administrator");

        identityManager.grantRole(admin, roleAdmin);

The IdentityManager bean is the gateway to all of PicketLink's IDM features. It allows you to create, update and delete Users, Groups, Roles and their relationships, plus manage and validate user credentials and attributes. It can be injected into any of your project's beans any time you wish to perform Identity Management related operations.

public class MyApplicationBean {

    @Inject IdentityManager identityManager;   


To create a new User, Group or Role, you simply create a new instance of the object (PicketLink provides default implementations called SimpleUser, SimpleGroup and SimpleRole) and pass it to IdentityManager.add():

  User bob = new SimpleUser("bob");
  Group managers = new SimpleGroup("managers");
  Role admin = new SimpleRole("admin");

To update something, you can first look it up using the appropriate method (such as getUser(), getGroup(), etc), make your changes and then pass the object to the update() method:

  User bob = identityManager.getUser("bob");

To remove something, you pass it to the remove() method:

  User bob = identityManager.getUser("bob");

Relationships are used to model typed groupings of two or more identities. PicketLink provides a few built-in relationships, and provides support for custom user-defined relationships also. The built-in relationship types are provided to address the most common identity use cases, and the IdentityManager interface declares a number of convenience methods for working with these built-in relationships. Let's take a brief look at a few examples.

Firstly, the Grant relationship is used to represent an application role. This is a role that is typically granted to a user to give them some kind of application-wide privilege. The IdentityManager.grantRole() method is used to grant an application role:

  // Grant user "bob" the "admin" role
  User bob = identityManager.getUser("bob");
  Role admin = identityManager.getRole("admin");
  identityManager.grantRole(bob, admin);

To test whether a user has an application role we use the hasRole() method:

  User bob = identityManager.getUser("bob");
  Role admin = identityManager.getRole("admin");
  boolean bobIsAdmin = identityManager.hasRole(bob, admin);

To revoke an application role, we use revokeRole():

  User bob = identityManager.getUser("bob");
  Role admin = identityManager.getRole("admin");
  identityManager.revokeRole(bob, admin);

Next, the GroupMembership relationship is used to represent a user's membership within a group. The addToGroup() method is used to add a user to a particular group:

  // Add user "bob" to the "managers" group
  User bob = identityManager.getUser("bob");
  Group managers = identityManager.getGroup("managers");
  identityManager.addToGroup(bob, managers);

To test whether a user is a member of a group, we use the isMember() method:

  User bob = identityManager.getUser("bob");
  Group managers = identityManager.getGroup("managers");
  boolean isBobAManager = identityManager.isMember(bob, managers);

Lastly, to remove a member of a group we can use the removeFromGroup() method:

  User bob = identityManager.getUser("bob");
  Group managers = identityManager.getGroup("managers");
  identityManager.removeFromGroup(bob, managers);

The last built-in relationship type is the group role. This is used when we wish to grant a user a particular role for a group, but not make them a member of the group themselves. To grant a group role, we use the grantGroupRole() method:

  // Make user "bob" an admin of the "managers" group
  User bob = identityManager.getUser("bob");
  Role admin = identityManager.getRole("admin");
  Group managers = identityManager.getGroup("managers");
  identityManager.grantGroupRole(bob, admin, managers);

To test whether a user has a particular group role, we use the hasGroupRole() method:

  User bob = identityManager.getUser("bob");
  Role admin = identityManager.getRole("admin");
  Group managers = identityManager.getGroup("managers");
  boolean isBobManagersAdmin = identityManager.hasGroupRole(bob, admin, managers);

Finally, to remove a group role we use the revokeGroupRole() method:

  User bob = identityManager.getUser("bob");
  Role admin = identityManager.getRole("admin");
  Group managers = identityManager.getGroup("managers");
  identityManager.revokeGroupRole(bob, admin, managers);

What's Next

We're aiming to have a beta release ready by mid-March, for which we're planning to have more polished code, more unit tests, better documentation and hopefully an actual example and/or quickstart that you can play around with yourself. For those adventurous enough to take the alpha release for a spin, we would love to hear some feedback from you about what you found easy, what you found hard and what we can do to make things better. For future releases of PicketLink we'll be focusing on adding some really cool features, such as support for OAuth, OpenID, SAML, Rule-based permissions with Drools, a RESTFul API and much more. You can also look forward to some more blog posts that delve further into some of the more complex PicketLink features such as ACL style permissions, identity and relationship queries, plus multi-domain support. If you'd like to leave us some feedback or have questions, please comment below or on the PicketLink forums, or if you'd like to contribute to the development discussion please join the security-dev mailing list, or alternatively catch us on the #picketlink irc channel on FreeNode.

Thanks and enjoy!

With the AeroGear 1.0.0.M6 release we've added a lot of new functionally and the JavaScript and iOS client libraries have really taken front stage! Doug Campos (a.k.a. Qmx) has summed it up really well on the new project site's blog.

Which reminds me :-)

Our new project site launched a little while back with a new responsive design, docs, and project information! Check it out for all the details on AeroGear, our plans, and libraries!

Project Updates

As the AeroGear team and project have been expanding, so have our mobile efforts at Red Hat and JBoss! My time has been split between many different things across them all.

That is why, I've asked Qmx to take on the project lead role for AeroGear. He's has been with AeroGear since nearly the beginning and brings a wealth of open source, server and client based experience to the team! As is often the case he's already been doing the job for a while now, and doing great at it!

I'm not going anywhere, and will still be deeply involved in the AeroGear project as well as other mobile related efforts at JBoss!

Don't be shy!

And finally, as I've said, this isn't your father's JavaEE project, but Aerogear is certainly open source, and we're always looking for people to get involved, ask questions, or provide input! We'd appreciate your feedback! Stop by our IRC channel, or our community site and mailing list and see what we're up to!

[AeroGear Project] [GitHub] [Twitter] [Developer Mailing List]

JBoss is looking to expand our mobile team to develop the next generation of mobile enabled technologies around native, hybrid, and web based applications with AeroGear! These are world wide, remote positions working with the best open source company in the world - Red Hat!

This isn't you're father's JavaEE project. We're creating iOS, Android, and advanced JavaScript libraries to access the power of JBoss from nearly any client! This will cover persistence, security, messaging, and data synchronization all the way to developer tools, and advanced testing techniques. To learn more about AeroGear and our plans check out our What is AeroGear page.

Not only will we be working with JBoss's own projects, we'll also be working with and contributing to other 3rd party, open source projects such as PhoneGap/Cordova, jQuery, and other related efforts. We win, when the entire ecosystem is healthy and growing!

Join The Team!

Are you a passionate developers? Do you enjoy open source? This is your place! We're hiring multiple positions, and skill-sets around the world:

  • Client/Server - Are you comfortable with both the server, and client side of the today's most advanced applications?
  • Client/JavaScript - Can you pound out advanced JavaScript applications that bend browsers to your will?
  • Hybrid Mobile - Have you already created applications with Apache Cordova, Sencha Touch 2, or other related hybrid technologies?
  • Native Mobile - Objective-C, and Android Java don't scare you! Are you're looking for a challenge, making it easier to use powerful backend features?

Due to a system change the original links to the positions are no longer working (I've updated them now). Please use this link to find the open positions. You can apply to any of them for any of the positions.

As a JBoss core developer you will be expected to be a community member/leader in our open source projects, and eventually a voice for AeroGear, and JBoss in general. The intangibles are just as important as the right skills. A great attitude, motivation, working effectively in remote groups, and drive are also very desired.

Call To Action

So, you're interested? Submit your resume today using the links above, and we'll get the process started!

If you have any questions about the project, the roles, or the team, contact me, Jay Balunas, or others on the team in the #aerogear channel on We'll be happy to talk with you, or answer any questions you may have!

If you have ever wanted to work on an open source project full time, and be part of a special group of developers, this is your chance!!

[AeroGear Project] [GitHub] [Twitter] [User Forums] [Developer Mailing List]

Announcing jdf - JBoss Developer Framework

Posted by Pete Muir    |       |    Tagged as Seam

JBoss Developer Framework exists to show you, the developer, how to make the most of JBoss and Java EE 6 technologies on JBoss Enterprise Application Platform and JBoss AS.

There are three ways we do this:


We start small, with the quickstarts. Each quickstart is very focused, and shows you one API, or one use case. There are about 53 quickstarts today, ranging from JAX-RS CRUD to GWT to HTML5 to transactions.


Quickstarts are great, but there comes a time in everyone's life when they want to write something other than a simple application! TicketMonster steps up to the plate at this point. Today, it's a full web-app written, with front-ends showing off the three approaches to view layers we like at JBoss - HTML5 + REST, Errai/GWT and RichFaces/JSF.

Over time, we plan to add much more to TicketMonster, as well as spin up other examples. Check out the Roadmap for more info on our plans!


We realise that there are lots of people still using older technologies such as Seam 2, Spring or Java EE 5. We've put together a comprehensive set of migration tutorials to show you how.

JBoss BOMs

To make all this possible, we've developed a set of BOMs. The BOMs start with Java EE 6, and build on that base API with JBoss extensions such as Hibernate (Search, Validator...), Errai and Arquillian. They're a great way to make sure you're using the same set of dependences that we test with!


JBoss Developer Framework 1.0 is firmly focused on education, showing you how to use JBoss Enterprise Application Platform and JBoss AS with Java EE 6.

JBoss Developer Framework 2.0 will start to add other technologies to the stack, such as Deltaspike and Aerogear. We won't be forking these projects, but simply testing and recommending a version to use (via a Maven BOM).

Get Involved

If you want to ask questions, or help out, then visit our forums (which are also mailing lists).

We'll be tweeting using the #jbossjdf tag.

We'll mostly be posting jdf related items on the jdf news feed, so if you want to keep up to date, I suggest you subscribe there.

If you are lucky enough to be coming to JBoss World, Red Hat Summit or JUDCon, then we'll be there.


AeroGear 1.0.0.M4 Released!

Posted by Jay Balunas    |       |    Tagged as AeroGear Seam

We've just released the next milestone of AeroGear, 1.0.0.M4. In this release we've created a Ruby on Rails version of our POH5 kitchensink demo to bring home the full advantage of polyglotism on the JVM with TorqueBox, a Ruby application server built on JBoss AS7 and JRuby, we also finalized our core quickstarts and archetype, as well as, pushed forward on security prototyping with DeltaSpike.

Since our kichensink demo's are Plain Old HTML5 (POH5) based, we're not restricted to one server-side technology or language, sky's the limit! So you can check out our hosted Ruby on Rails kitchensink demo with TorqueBox version, for POH5 + JavaEE take a look at the updated getting started, wiki and we've also updated our Cordova version of the kitchensink as well.

What's new?

Next steps

In M4 we gave Ruby a try to backup our POH5 example. Now we've got our core POH5+JavaEE, POH5+Ruby, and Cordova+JavaEE examples all in place to show different ways to development mobile applications with JBoss.

We're also working on larger integrated examples and getting ready for JBoss World and JUDCon. Our team will be speaking at the party, specifically Jay Balunas and Douglas Campos a.k.a. Qmx.

A lot of JBoss core developers will also be present at the Mobile/HTML5 BOF discussing the future of mobile development and HTML5, so join us there and register for JUDCon Boston, and/or JBoss World 2012! Stay tuned to further releases!

Don't be shy!

Aerogear is open source, so feel free to get in touch if you have any questions about mobile development with JBoss technologies. We'd appreciate your feedback! If you've got mobile or HTML5 requirements and you're wondering how to move forward post to our user forums, or stop by #aerogear @

[AeroGear Project] [GitHub] [Twitter] [User Forums] [Dev Mailing List]

Image © Copyright Sarah Smith and licensed for reuse under this Creative Commons License. The original can be be found here.

AeroGear 1.0.0.M3 Released! Welcome To Hybrid

Posted by Jay Balunas    |       |    Tagged as AeroGear Seam

We've just released the next milestone of AeroGear, 1.0.0.M3b. In this release we've created a hybrid mobile application using Apache Cordova/PhoneGap, started a Ruby/TorqueBox example, further refined the core POH5 quickstart/archetype, and started work on security, and a light weight MVC for integration.

The getting started wiki is fully updated, and we've also added a repository and wiki page to kickstart your Cordova application with AeroGear. The great thing about Plain Old HTML5 (POH5) and Cordova is that nearly all of the web based functionality is the same, so our Deep Dive wiki gives you all the details you need to build your own.

Notable Updates

Whats Next

With M3 we've started development into new mobile technologies, and functionality. For M4 we'll be completing the TorqueBox example, updating the Cordova application, working on a new shopping cart example, and focusing on getting an alpha version of the security/mvc work in place.

The M4 release will likely be a shorter release for various reasons, so we'll get what we can in for it, and plan to have as much as possible ready by the time JUDCon and JBoss World comes around in June!

A few of us will speaking at JBoss World, specifically myself, and Doug Campos a.k.a. Qmx. We'll be discussing AeroGear and much of the work and features above, plus some extras! Also as part of the Mobile/HTML5 BOF several JBoss core engineers and experts will also be discussing the future of mobile development both at Red Hat, and the larger enterprise ecosystem, so join us there! If you want the latest, and I'm sure you do, register for JUDCon Boston, and/or JBoss World 2012!

Community Role Call

Aerogear is a new open source project, and like any other new project we would love developers to stop by, check us out, give us some feedback, and join our ranks if you're interested! If you've got mobile or HTML5 requirements and you're wondering how to move forward post to our user forums, or stop by #aerogear @

We're always looking for new team members, so if you've got server/client side skills, mobile, HTML5, or native/hybrid app experience, and a great attitude let us know! You can also just jump right in by checking out our Contributing to AeroGear page.

[AeroGear Project] [GitHub] [Twitter] [User Forums] [Dev Mailing List]

The AeroGear project has just released 1.0.0.M2c as our first followup since launch! This release was focused on improving the archetype and quickstart mobile/html5 examples. They got more than just a new look and feel though. We added better device detection, improved our responsive design, integrated with JBoss Tools, JBoss AS 7.1, and more...

The getting started wiki has been fully updated to show you how to build your own mobile/HTML5 based application. This means built, tested, and deployed to JBoss AS 7.1 in just a matter of minutes. Giving you a great base to build your own application from. Then our deep dive wiki gives you all the details you need to need for our HTML5, CSS3, jQuery Mobile, JAX-RS endpoints and more.

Notable Updates

Here are some of the notable updates to our core example and archetype:

Whats Next

We're still just getting started, and our M3 release is going to dig into more advanced areas. We'll be looking at hybrid application support, application based security for clients and endpoints, and more. We'll also be creating our own advanced example set to showcase different technologies and approaches for mobile development with JBoss.

Stay tuned for 1.0.0.M3 in the next 6-8 weeks, and remember this is open source - so if you've got an itch and an idea stop by our forums, or our IRC channel to share! If you are interested in a more permanent situation - we're hiring!!! We're working on all aspects of mobile development, so if you want to play with some of the hottest technologies on the planet - contact me!

Community Call To Action

Just as a reminder we’ve got team meetings on IRC at #aerogear @, user, and developer forums, all of our code is up on github for sharing, and we’re always looking for motivated developers to step up and join the team!

Success comes with a strong community, and everyone getting involved however they can! Bring your questions, and opinions, and let's hear from you!!

[AeroGear Project] [GitHub] [Twitter] [User Forums] [Dev Forums]

Seam 3 Examples

Posted by Jason Porter    |       |    Tagged as Seam

I wrote up an entry about some Seam 3 examples over at my JBoss Community Blog. Check it out if you're interested in more examples.

The AeroGear Mobile & HTML5 Project Is Alive!!

Posted by Jay Balunas    |       |    Tagged as AeroGear JBoss Tools Seam

I’m very happy to announce the creation of AeroGear, the newest project at JBoss! The AeroGear project is all about making mobile development of all kinds as easy as possible with JBoss! This project is focused on three things; education, innovation, and community!


We’ll be covering all aspects of mobile application development! This includes the latest HTML5 technologies used in the mobile web, and in hybrid application frameworks like the Apache Cordova. All the way to JBoss AS based services, mobile RichFaces/JSF2, tooling, and native application support, and prototyping.

To wet your whistle we’ve put together a 5 minute video to show you how easy it is to get from zero to a mobile web application with cloud hosted services on JBoss.

Just in case you missed it at the end, the link to the live hosted demo on Openshift is at

Assuming that got your interests up, we go a lot deeper. Our step by step guide on building this HTML5 mobile application yourself, including where to fork it on github is available right on our wiki page. There are also guides detailing the specifics on single page applications, HTML5 updates, CSS3, jQuery Mobile, RESTful endpoints, and more here.


Our initial focus is on providing excellent examples, tutorials, and techniques for enterprise mobile developers. These will cover mobile web, hybrid, and native applications approaches for working with JBoss and other 3rd party projects. For all you polyglot lovers out there, we’re not limiting ourselves just to Java either, we’ll have pure HTML, and JavaScript demos, TorqueBox and Ruby will make an appearance, and we’ll be looking at other approaches as well.

However, at the same time we'll be developing new mobile[native, hybrid, and web] based frameworks for solving real concerns of enterprise developers. The most immediate of these include offline data synchronization, security, container integration, and support across a broad range of devices.

We’re currently designing and discussing some of these solutions, and want your input! Head over to the AeroGear Developer space for more. We plan on moving pretty fast here and hope to have some real world prototypes up and running soon.


Whether you are a long time Java EE developer looking to migrate existing applications to mobile clients, or client developers looking for a powerful back-end for your applications this is where you can learn more about both, and become part of the community building it!!

We’ve got team meetings on IRC at #aerogear @, user, and developer forums, all of our code is up on github for sharing, and we’re always looking for motivated developers to step up and join the team! We’ll be speaking at up coming conferences and JUGs around the world, as well as having regular blogs, webinars, and screencasts! Watch this space and our forums for the latest.

Success comes with a strong community, and everyone getting involved however they can! Bring your questions, and opinions, and let's hear from you!!

[AeroGear Project] [GitHub] [Twitter] [User Forums] [Dev Forums]

back to top