Archive for September, 2011

New Features in GateIn 3.2 That Will Improve the eXo Platform 3.5 Experience

Wednesday, September 28th, 2011

GateIn is the open source portal framework that serves as the backbone of eXo Platform, and the upcoming GateIn 3.2 will provide eXo Platform 3.5 with a set of great portal features. GateIn 3.2 is a logical evolution of the GateIn 3.1 release; the vision is to improve the project and continue the implementation of what we started with GateIn 3.0. In this post, I will describe a few of GateIn’s numerous new features.

Navigation Controller

The navigation controller is a major change that could be summarized as the decoupling of URL expression and URL processing in GateIn. This means that:

  • URLs processed by GateIn can be easily changed because they are now declared in an XML file
  • Friendly URLs are now supported, giving the portal administrator freedom to configure how http URLs should appear

Desktop Mode

A new Desktop Mode feature was developed for the eXo Platform 3.5 release, and we’ve already updated it to run on top of GateIn 3.2. While providing a desktop experience to your sites, this new feature also gave us an opportunity to polish the UI and bring a few more improvements:

  • Ability to upload desktop backgrounds
  • Revamped dock UI

Site Describability

Sometimes there are features that are difficult to name. We had one in this version of GateIn, which we decided to call site describability. This new feature enhances GateIn’s usability by allowing the administrator to provide a display name and description for a portal site. Here are a couple of screen shots to show you what I’m referring to:

Navigation is an important concept in GateIn that allows web pages to be organized as a hierarchical navigation tree for portals and groups. Internationalization in navigation was supported until now with the help of resource bundles by providing a label containing a specific expression (like ${portal.home} for instance). In some cases this approach is not dynamic enough because, in order to to handle custom resource bundle keys, it requires a resource bundle to be updated when a new navigation node is added.

GateIn 3.2 will include fully dynamic support of navigation i18n. The setup can be done easily in navigation.xml file in a similar fashion of portlet.xml (using the xml:lang attribute to specify a language) deployment descriptor. You can watch a video of this feature on this page.

Of course it is also possible to edit the navigation i18n labels in the user interface:

Portal Public Parameters

As a portlet developer, you often need to extend the GateIn server and create portlets that interact with the environment. So you will likely enjoy this new feature, which allows you to obtain contextual information like the current navigation URI, the current page name and so on. The best thing about this feature is that it leverages the JSR 286 API to get this information in a very intuitive and natural fashion. If you think about it, the most adapted way to obtain this information is via the public render parameter API. This feature is therefore very easy to use, as the only thing you need to do is to declare a specific public render parameter in your portlet XML deployment descriptor. For instance, if you want to obtain the current site name, you will need to declare:


<portlet>
...
<supported-public-render-parameter> site_name < /supported-public-render-parameter >
...
</portlet>

<public-render-parameter>
<identifier>site_name</identifier>
<qname xmlns:prp='http://www.gatein.org/xml/ns/prp_1_0'>prp:site_name </gname>
</public-render-parameter>

And voilà, at run-time you can get the current site name by using the portlet request render parameters, pretty much like:


protected void doView(RenderRequest req, RenderResponse resp) throws PortletException, IOException {
...
writer.println("The current site is " + req.getParameter("site_name"));
...
}

Everything we thought might be useful to a portlet developer to see was done (and if you think that we forgot something useful, don’t hesitate to tell us, or even better contribute it!):

  • navigation_uri: the current navigation URI
  • page_name: the current page name
  • site_type: the current site type (“portal” for portal, “user” for dashboard, “group” for group)
  • site_name: the current site name
  • window_width: the current window width
  • window_height: the current window height

Performance

No major release of GateIn would be complete without performance improvements. In this release we focused on the improving how GateIn loads a site’s navigation tree. The navigation tree used to be entirely loaded from the Java Content Repository and was eventually an issue for sites using a large navigation. Our team worked hard to improve it, and the result is the capability to load navigation fragments instead of the whole tree, while simultaneously keeping the user interface consistent. As a bonus it improved the concurrent edition of the navigation and now we are glad to support concurrent real-time editions of the navigation, as you can see in this video.

Finally

We also made a lot of minor enhancements that will make your life with GateIn better. Here are the ones I think are most relevant:

  • Resource compressor: we provide pluggability for resource compression (JavaScript and CSS), and we integrate the YUI and Google Clojure compressors by default. It works with a system of plugins; if you want to change the configuration you can have a look at the resource-compressor-configuration.xml file. You can even develop your own compressor if you want.
  • A drop-down list for portal or group sites when adding a new page: it’s a minor usability enhancement, yet convenient.
  • A lot of work was done to make the deployment of the WSRP service more modular in JBoss AS, just how it used to be in JBoss Portal.
  • The portlet container session life cycle could sometimes have a lifetime greater than that of the portal, especially when a logout was performed. We fixed this issue, so now a logout on GateIn invalidates pending portlet sessions.

Check out JBoss.org for the latest downloads, and be on the lookout for previews of eXo Platform 3.5…

eXo Introduces Early Adopter Program for eXo Platform 3.5 Beta

Wednesday, September 28th, 2011

Program Gives Developers an Exclusive Jump-start on Evaluating and Developing with New Collaboration and Content Management Features of the Upcoming eXo Platform 3.5

SAN FRANCISCO — September 28, 2011 — eXo, the enterprise Java portal and cloud user experience platform (UXP) company, today announced that it has opened its Early Adopter Program (EAP) for eXo Platform 3.5. Participating developers have access to beta versions of eXo Platform 3.5, along with training and support, so they can begin developing next-generation social intranets and websites. Developers can join the EAP program today by visiting http://budurl.com/e7g5.

Around the world, developers are trying to build websites and intranets that incorporate key real-time tools such as Facebook- and Twitter-like collaboration, social networking, activity streams, enterprise wikis, and more. No single tool provided all the features necessary to accomplish this before the release of eXo Platform 3.0. With the roll-out of eXo Platform 3.5, the first cloud-ready enterprise portal and user experience platform, eXo has extended and enhanced the functionality of the 3.0 release. EAP participants can explore the latest features and functionality of this new release months before it becomes generally available.

Early Adopter Program Highlights

Developers participating in the eXo Platform 3.5 EAP gain the following:

  • Access to Beta Versions of eXo Platform 3.5 allows members to gain hands-on experience with enhanced platform functionality (including content management, social networks, collaboration, and development tools), and to preview new features like the enterprise wiki and desktop mode.
  • Exclusive Hands-On Training introduces developers and administrators to the capabilities of eXo Platform 3.5. A series of web-based sessions focus on the most common use-case scenarios, such as building social intranets and websites.
  • Development Support ensures that participants can provide feedback directly to the eXo team building the product. EAP participants also receive prioritized bug resolution support (15 support tickets that are valid for one year), as well as complete access to developer documentation.
  • Subscription Discounts provide participating companies with three developer licenses for $7,000 (€5,000 for customers in Europe); the entirety of that amount will be applicable against licenses for eXo Platform 3.5 when the GA release becomes available.

The EAP also offers participants a first-to-market advantage. While the beta version of eXo Platform 3.5 is not intended for production use, developers participating in the EAP will be poised to deploy their new websites and social intranets in a production environment as soon as the GA version is released.

eXo Platform 3.5 High-Level Enhancements

“Developers were very enthusiastic about the 3.0 release of eXo Platform,” said Benjamin Mestrallet, founder and CEO of eXo, “but they’ve also been asking for a lot of enhancements. The 3.5 release continues to demonstrate our commitment both to developers and the customers they serve.”

Enhancements to eXo Platform include:

  • Mobile Apps: Native iPhone, iPad, and Android apps integrate elegantly with intranets built on eXo Platform 3.5, ensuring that users can interact with personalized gadget dashboards, activity streams, document repositories, and more–at any time, from anywhere.
  • New Enterprise Wiki: eXo Platform 3.5 includes a full-featured wiki that integrates easily with other social network features (networks, activity streams, and so on). It includes standard enterprise wiki features, such as WYSIWYG, watches, macros, permissions, versioning, and more.
  • Simpler, More Intuitive Interface: Users asked, and we delivered. eXo Platform 3.5 provides a simpler, more intuitive interface that’s easier to use.
  • Enhanced Social and Collaboration Tools: eXo Platform 3.5 extends and enhances the collaboration features in eXo Platform 3.0, adding features such as delegation, expanded support for calendar synchronization, the ability to view all activity streams, and more.
  • Improved Content Management: eXo Platform 3.5 includes improved search engine optimization (SEO) features, advanced workflow integration, expanded Java Content Repository (JCR) support, and more.
  • Improved Sample Apps: The sample website included with eXo Platform has been expanded to illustrate how developers can take advantage of many of the new features of eXo Platform 3.5–from UI customization to the inclusion of rich content and improved site navigation.

The beta release of eXo Platform 3.5 does not yet include all the features that will be included in the GA release, which is scheduled for delivery in the next few months. Full multi-tenant support will be available in the GA release, but is not included in the beta versions released during the program. Other services may continue to evolve throughout the beta release period as eXo incorporates user feedback.

For more information or to register for the EAP, visit the eXo Platform 3.5 website at http://budurl.com/qdbw.

Additional Online Resources

eXo JCR 1.14: New Features for eXo Platform 3.5

Thursday, September 22nd, 2011

For almost everything it can do – and it can do a lot, from websites to community extranets to enterprise social intranets and much more – eXo Platform relies on its built-in Java Content Repository (JCR). With eXo Platform 3.5, working with content and data will be both easier and more ready for prime-time enterprise deployments.

At eXo, I lead a team of developers in building eXo JCR, our open source implementation of the JSR-170 spec, which is used in eXo Platform. We’ve just released eXo JCR 1.14.0-GA, which will add many new features and enhancements to the upcoming eXo Platform 3.5. This version is quite a big step forward since JCR 1.12: between JCR 1.12 and 1.14, we worked on no less than 50 improvements and 100 new features!! In this post, I will describe the new features and improvements that we added since my last blog post.

New Features

Managed Transactions & JCA Support

In eXo JCR 1.12 and earlier, our Java Transaction API (JTA) support was limited and experimental. Because we wanted to be able to support managed transactions and JCA 1.5 in eXo Platform 3.5 and beyond, we completely overhauled our JTA support for eXo JCR 1.14.

  • Managed Transactions Support: If you use managed data sources, you simply need to configure your eXo JCR instance to allow it to distinguish the managed data sources from the others. eXo JCR will then know whether or not it needs to delegate the commit and rollback calls to the Application Server.
  • Java EE Connector Architecture (JCA) Support: If you intend to use eXo JCR in your custom application to store your data, and you would like to delegate the management of the JCR session life-cycle to your application server, you can now use the JCA Resource Adapter for eXo JCR.

Asynchronous Indexing

Lucene is used any time we execute a JCR query, which means it’s a critical part of eXo JCR. That’s also why, in previous versions, full indexing used to be blocking. Now you can make it non blocking in order to access to your application immediately, even if a full indexing is running. However, as long as the indexing is running, you won’t be able to execute a JCR query; only pure API calls will be allowed. Another interesting aspect of this feature is the fact that you can rebuild the Lucene indexes of a given workspace at runtime, using JMX.

External Backup Tools Allowed

eXo JCR now provides a secure way for you to use external backup tools to back up the data of your JCR instance. It was possible to use third-party backup tools with previous versions, but you had to ensure that no transactions were running (which is not trivial). The latest version of eXo JCR leverages JMX, which lets you suspend and resume all the current transactions on your JCR instance. So if you want to use your own tools, simply suspend the current transactions, launch your tools to back up your data, then resume the transactions.

Other Interesting New Features

  • If you wanted to keep big objects or non-serializable objects in a replicated eXo cache instance, you can configure your eXo cache to enable an invalidation mechanism. This will automatically invalidate your data anytime it detects a changed value in your cluster.
  • A new syntax allows you to define a default value in your configuration files. For example, ${my.value:10} will be understood by the kernel as, try to find the value of the variable called “my.value”, and if no value is found use “10″.
  • You can use your own Lucene lock factory and/or Lucene directory if the default ones don’t fulfill your requirements.
  • We added a mime type detection mechanism that allows eXo JCR to properly extract the meta-data and the full text content of a document, even if the extension is missing in the name of the file.

Improvements

Multi-Database Schema Support

Frequently a single database instance must be shared by several other applications. But some of our customers have also asked for a way to host several JCR instances in the same database instance. To fulfill this need, we had to review our queries and scope them to the current schema in a different way; it’s now possible to have one JCR instance per DB schema instead of per DB instance.

Monitoring

In this new version, we worked a lot on improving the monitoring capabilities. We did this by exposing many new MBeans in the JMX console, and by simply giving more understandable names to all the threads of eXo JCR. You now have a better overview of what’s going on in your eXo JCR instance.

Pattern-based Methods

In many applications based on eXo JCR, we realized that people obtain their data property by property; this is not necessarily a good practice, especially when there are many properties to fetch. To provide a much more scalable solution, we worked on improving the methods Node.getNodes(NamePattern) and Node.getProperties(NamePattern). So now, instead of potentially making the eXo JCR execute as many queries as you have properties in your node (assuming that the cache is empty), we can obtain all data properties using a single query.

Other Interesting Improvements

  • Access Control List (ACL) management has been updated to drastically reduce the total amount of database accesses needed to get the ACL of a given node.
  • We added a new method in our internal interface called ExtendedNode.getNodesLazily. This can be used as an alternative of Node.getNodes in the parts of your application where you can have a lot of sub nodes, and where consistency is not necessarily an issue.

Download

You can download eXo JCR 1.14.0-GA from here and get the documentation from jboss.org here.

Enjoy,
Nicolas

Gearing Up for eXo Platform 3.5

Wednesday, September 21st, 2011

We first shared the news about the next major version of eXo Platform when we announced our cloud strategy back in March. As you can imagine, we’ve been hard at work preparing the first-ever cloud-ready portal and user experience platform. But enabling multi-tenancy isn’t the only new feature – there are literally 100′s of new features and improvements.

Now that we’re gearing up for the release of eXo Platform 3.5 in the coming months, it’s time to start sharing more details about the most exciting changes you’ll find. Starting this week, we’ll regularly feature posts from our core developers, each one giving his unique perspective and previews of the key features he’s been working on. The first post will start with JCR, the heart of eXo Platform. So stay tuned, and get ready to be blown away by what eXo Platform 3.5 can do.

Upcoming Events in Germany and Poland

Friday, September 16th, 2011

We recently shared the news of our expanding partnerships in Eastern Europe, and our new Authorized Distributor partner B2B. Together we’ll be offering an exciting opportunity to learn about eXo Platform during the upcoming Open Source Day event on October 14th.

Open Source Day is a unique virtual conference format. This means, although the event is organized and hosted from Poland, attendees are welcome to participate from any location. Registration is free, all you need is an internet connection.

eXo CTO Tugdual Grall will lead a presentation titled “eXo Platform: A Journey from the Social Intranet to Development in the Cloud.” In addition to an overview of eXo Platform features, Tug will explain how eXo uses industry standards to allow enterprises to extend the platform and integrate it into existing information systems. Attendees will also learn how eXo, the leader in cloud-based development with eXo Cloud IDE, offers an innovative way to build and deploy Java, PHP and Ruby applications, which can be integrated in eXo Platform or other cloud services.

The eXo Team will also be present at the DMS Expo in Stuttgart, Germany next week, 20-22 September. You can schedule a meeting or in-person demo with our team by dropping a line to sales@exoplatform.com. Hope to see you there!