Thursday May 14, 2009

Deep Dive: Sun GlassFish WebSpace Server

Deep Dive: Sun GlassFish WebSpace Server, An Interview With James Falkner

As part of the the WebSpace Server 10 release, Ed Ort (from and I sat down to do a deep dive webcast for GlassFish WebSpace Server. Parts 1 and 2 were originally published a few weeks ago. Now, parts 3 and 4 are now available and cover development tooling, and end user social collaboration techniques.


Monday Apr 27, 2009

Web Space Server 10.0 Downloads

Web Space LogoThe user-oriented site  has had download links for a while for our Community and Milestone builds.  Now available are CDDL-based downloads of the 10.0 Final Release, which means you can download without having to have an SDN account or accept the Sun License Agreement.  The binaries are licensed under CDDL.  So easy to use!

Monday Feb 16, 2009

Content Management System in Glassfish Web Space Server 10.0

Glassfish Web Space Server comes with its own out of the box Content Management Sytem(CMS). The WebSpace CMS comprises of the following features :

1. Document Management.
2. Image Management.
3. Web Content Management.

To know more about CMS in Web Space Server, read the following article :

To start adding web content using CMS in Web Space Server, read the following articles :

Stay tuned and visit this blog for latest articles on CMS in glassfish Web Space Server.

Wednesday Feb 11, 2009

Web Space Server - Localization

Web Space Server has out-of-box localization for 22 languages , out of which Sun provides localization support for Japanese (ja) and Simplified Chinese (zh_CN). Remaining languages are community driven.Also it has been Internationalized which allow localization in new languages which does not shipped out of box.

For further details on Localization (L10n) , Refer my personal blog entry :  Web Space Server - Localization

Monday Feb 09, 2009

Sun GlassFish Web Space Server 10.0: Now Available!

Web Space LogoSun GlassFish Web Space Server 10.0 has been released today [download].  It is Sun's next-generation portal server platform. It enables businesses large and small to pull together applications and content from a variety of Web-based and internal sources and present them as a unified, customizable portal on Web browsers, kiosks, and mobile devices.  It is part of a larger Portfolio of software being released today as part of the GlassFish Portfolio.

Web Space Server started out about a year ago with a partnership with Liferay Portal to join forces to develop the core portal in the Liferay community. Web Space Server is Sun's first product based on this effort and common code base. You may still run across instances of the term Project WebSynergy - this was Sun's internal codename for the project before it was released.

Standards such as JSR 168, JSR 286, JSR 170, and WSRP 2.0 provide a solid foundation on which to build a modern web 2.0 enterprise application platform, using lightweight web-oriented architectures, and powerful developer tools to create a rich ecosystem for developers, integrators, administrators, and now users to collaborate and innovate with.

A new user-oriented site  has been established.  This site will house information most useful to administrators and end users of Web Space Server, including download and documentation links, community support forums, email lists, wiki content, and other useful information.

New community builds and milestones of Web Space Server will continue to be released to deliver new features and fix bugs.  This release is marked 10.0 to indicate it is a (r)evolutionary step from previous portal efforts, such as Portal Server 7.2.

The WebSyner--err--Web Space team is proud to bring you this first release, and hope you will like it as much as we do!

Monday Jan 26, 2009

Relocating WebSynergy Installations

Chris Reemts has found that relocating a WebSynergy-on-GlassFish installation is possible by following a few simple steps:

Moving a WebSynergy+GlassFish installation from one directory to another on OpenSolaris

The following are the actions I took to move an install of the MileStone 4 build of WebSynergy on OpenSolaris.
  • The installed location was: IL == /export/home/demo/Desktop/
  • The new location is: NL == /export/home/demo/
To move (NOTE: It is a good idea to save a copy of any files before editing):
  • Move the entire web\* folder from IL to NL – I used the file browser to do this
  • Modify NL/web\*/glass\*/bin/asadmin
    • 1.Open in a text editor
    • 2.Line 7 contains a path --- correct this path to the new location
    • 3.Save
  • Modify NL/web\*/glass\*/config/asenv.conf
    • 1.Almost every line has a path that you need to change to the new locations path
    • 2.Save
  • Modify NL/web\*/glass\*/domains/domain1/config/sun-acc.xml
    • 1.You may have a domain name different from domain1
    • 2.Line 26 value is a path --- correct this path to the new location
    • 3.Save
  • Modify NL/web\*/glass\*/domains/domain1/jbi/config/jbi-registry.xml
    • 1.You may have a domain name different from domain1
    • 2.Lines 19, 20, 25, 26, and 30 need the path corrected to the new location

This allows, for example, one to relocate a full install from one server to another (if using GlassFish V2, the destination machine must be the same OS/architecture). Nice work Chris!

Thursday Sep 18, 2008

How to do I18n and L10n in WebSynergy

Recently we have defined a common way to do I18n and L10n in WebSynergy. This process will be used for I18n/L10n during development of WebSynergy. It can also be used to develop new porlet with taking advantage of existing UI Tag lib and Language util class for I18n/L10n.

Details can be found on my personal blog entry .

Wednesday Aug 27, 2008

Project WebSynergy Stable Build 2: Now Available!

As you know, in May of this year, Sun and Liferay announced a partnership to jointly develop next generation enterprise portal technology.  The Sun portal team has since begun the rollout of Project WebSynergy, codename for the initiative to release a product based on this common technology.

The Project WebSynergy team is now proud to make its Stable Build 2 available for download!  This release represents a significant milestone for the project, incorporating a number of new features, improvements, and a general enhancements over the last stable build (which was made available in May @ JavaOne).

Some of the things to look for in SB2:

  • Release Stability and Cadence
  • The primary goal of this release was to establish regular builds (which you will start seeing regularly, not once every 2 months), get testing frameworks in place and automated (as soon as the public site, see below, is setup, automated test results will be posted as well), and establish basic hooks/frameworks in the Liferay community for future builds/releases to take advantage of.  As mentioned in my previous post, this is a Stable Build (as opposed to a Community Build or Commercial Release).

  • WSRP 2.0 Consumer Support & Admin Application

  • WSRP 2.0 Consumer support is now available.  In addition, a WSRP consumer administration application is available in WebSynergy that enables managing multiple WSRP Consumers. For more information, read the blog post.

  • Mirage/Journal

  • Liferay Portal has been modified to use the Mirage API. This API enables WebSynergy to use JCR-compliant repository.

  • Roller Blog Application

  • The Roller Blog app provides integration with Roller Weblogger version 4.0. Using this app, portal users can create and manage blogs on a Roller 4.0 server.

  • Simple API for Workflow

  • The Simple API for Workflow (SAW) feature is integrated into the Project WebSynergy SB 2 stable build. A sample Expense Report portlet provided with this feature showcases a typical enterprise Expense Report Application that involves human workflow. You can use SAW to connect to a business process engine such as the Java Composite Application Platform Suite provides the workflow functionality to the Expense Report portlet.

  • Presence

  • For more information on this feature, see this article on the Liferay wiki. In upcoming Project WebSynergy builds, new applications using this infrastructure will provide a more presence-aware Portal to end users.

  • Semantic

  • Core semantic processing libraries and utilities have been integrated into the portal. In the upcoming Project WebSynergy builds, the communities in the Liferay Portal Communities use this feature to provide a semantically rich experience to end users.

This build represents another in a series of binary releases of this project leading up to Sun's commercial release.  The product based on this project is also being renamed (Project WebSynergy is the internal codename), and we really don't want to have name confusion between the free-to-use, open source version and commercially supported version, so the external site presence (as described in my previous post) does not yet exist.  This should be resolved in the 14 days.

Note on GlassFish v3 - Project WebSynergy is available on GlassFish v2.  In the coming days, we expect to also make available a v3-based bundle based on GlassFish v3 TP2.

Friday Aug 01, 2008

Project WebSynergy Update Part 1: Community and Roadmap

As you know, in May of this year, Sun and Liferay announced a partnership to jointly develop next generation enterprise portal technology.  The Sun portal team has since begun the rollout of Project WebSynergy, codename for the initiative to release a product based on this common technology.

Since May, we have been working on establishing the project in more concrete forms, establishing an online presence, producing regular builds, and releasing source code.  In the next month or so you should see the results of this groundwork.  In the meantime, I'll keep you updated on where we are at (in addition to making builds and source available, see below).  This "Part 1" will cover Community and Roadmap.  In future parts, we'll cover items such as architecture, build structure and distribution contents, feature deepdives, and other technical interests.

Most of the work to date has been over at the Sun Liferay community, integrating components (e.g. Portlet Container), and new features (e.g. Message Board improvements) needed for WebSynergy.  As the project evolves, additional features will be developed and used in WebSynergy proper and ultimately be part of a commercial offering.


OpenPortal consists of a number of projects.  Each of these projects delivers a certain set of functionality, and Sun (as well as anyone else who wishes) produces a commercial offering based off of the available source.

  1. - Core portal software, from which Sun's commercial Portal Server 7.x vintage is derived.  In addition, patches to 7.x will be generated for 7.x from this project's source.  No changes planned.
  2. <name> - Parent project of Project WebSynergy, from which Sun will derive a commercial offering.  Source and regular builds will appear here once the site is operational.  The name of this site is TBD.
  3. [mirage,saw,wsrp,ruon,swa,portlet-container,jsfportletbridge] -  Projects delivering major functionality, consumed by both Sun Portal Server 7.x and WebSynergy.  No changes planned.
  4. - NetBeans & Eclipse plugins for developing portlets.  No changes planned.
In short, we are adding a new project to OpenPortal to represent the core of WebSynergy, since it is so very different from the 7.x vintage.  OpenPortal is also now a proper part of the larger GlassFish community (which means association with a vibrant and growing open source community).


For WebSynergy, we are going to take a different tact: make things available early and often.  Because project community members are now using the latest open source code to develop new features before Sun has released its latest commercial offerings, some consumers are finding that they would rather have features earlier, even if long-term support is not available. In response to this demand from both Sun Java System Portal Server customers, and the OpenPortal community, we will be producing builds with varying support options, much more frequently than in the past --as often as bi-weekly.  This will give customers a chance to get working code immediately, and pay only for the support they really need (or use the freely available builds with no support).  This kind of a model is being adopted in other projects (e.g. OpenSSO), so its function may already be familiar to you.

There are three types of builds that will be made available based on Project WebSynergy:
  1. Community Build: Lightly tested, new features likely to be incomplete or have issues. Entirely supported by Community. New community builds generally available approximately 2-3 times a month.
  2. Stable Build: Higher amount of testing. Complete documentation. Available roughly every 6-8 weeks.
  3. Commercial Release - Highest amount of testing, complete documentation, commercial support available. Suitable for long term enterprise deployments. Frequency varies.

The demo that was made available at JavaOne represented the first Stable Build (SB1). SB2's plan is to be available this  onth, with an expected date for the first Commercial Release in the first quarter of 2009. Before SB2, there may be a community build (I had implied it would be this week, but a few of the features going into Liferay are still under code review, and not ready yet).

As indicated in the original announcement, we are not maintaining a fork. Instead, various components will be developed in WebSynergy, some of which will be integrated upstream (e.g. in Liferay) as needed, and a commercial release (and associated sustaining tail) will be initiated for each Commercial Release.  This is depicted in the below illustration (click on the image to get a larger version!).

Project WebSynergy Release Model

What you should get out of this image:

  1. The names of the components and releases and dates are all subject to change :-)
  2. There is no fork.  Each release is based off of a specific point in time of all components, including Liferay.  For the next release(s), new snapshots are taken, and the old ones ignored.
  3. Bugfixes bi-directionally flow between WebSynergy and Liferay before and after each Commercial Release. 

Stay tuned for part 2 and for the new WebSynergy site and builds to go live soon!

Thursday May 29, 2008

Portal Server 7.2 Released

OpenPortal - WebSynergy

Portal Server 7.2 is now available [download]. Based on the OpenPortal project, this release has several new features such as Delegated Administration, Google Gadget support, and JSR 286 / Portlet 2.0 support.

Looking ahead, Project WebSynergy [earlier post, info, download] is combining the efforts of Sun Portal and Liferay, and producing a lightweight, modular framework for developing and deploying next-gen webapps targeting the web 2.0 crowd. Looking forward to seeing this partnership in action!

For more information, visit the Sun/Liferay Community Page.

Wednesday May 14, 2008

Extending Project WebSynergy's Tables

Project WebSynergy 

We had recently started work on semantic enabling Project WebSynergy's community feature.

Read my blog on that.

For doing this we had to extend the existing table structure by adding new columns
and  also creating new tables.

In this blog I will show how easy it is do this using
Project WebSynergy's ServiceBuilder framework 

The use case for this example will be to add an ontologyId column
to the existing BlogsEntry table.
We would also create a new BlogsEntryOntologyMapping Table. 

Open the

in your favorite IDE (we would recommend NetBeans)

Each <entity> tag corresponds to a table in the DB.

To add "OntologyId" column to the BlogsEntry table
add the following in <entity name="BlogsEntry"> </entity> tag

<column name="ontologyId" type="String" />

We can also add a finder method corresponding to the column that we have just added.
Using this the callers can get the blog entries corresponding to an ontologyId.

        <finder name="OntologyId" return-type="Collection">
            <finder-column name="ontologyId" />
This would generate a findByOntologyId() in the BlogsEntryPersistence
and BlogsEntryPersistenceImpl.

To add a new BlogsEntryOntlogyMapping table add the following 

 <entity name="BlogsEntryOntlogyMapping" local-service="true" remote-service="true">
        <column name="entryId" type="long" primary="true" />
        <column name="ontologyId" type="long" />

Next we need to add getBlogEntriesByOntologyId() to the BlogsEntryLocalServiceImpl class.

public List getBlogEntriesByOntologyId(String ontologyId) throws SystemException{ 

             List blogtnriesList = blogsEntryPersistence.findByOntologyId(ontologyId);

return blogtnriesList;

You will get a compilation error on the blogsEntryPersistence.findByOntologyId(ontologyId) line.
This is because the method is still not added to the BlogsEntryPersistence interface.

But dont mind that as of now :)

After making these changes,
cd to <synergy-workspace>\\e2demo\\synergy\\liferay\\portal\\portal-impl
in the command prompt and run the following ant script.

ant build-service-portlet-blogs 

This generates all the service, util, persistence and  factory classes that are relevant to Blogs.

Open the <synergy-workspace>\\e2demo\\synergy\\liferay\\portal\\portal-service\\src\\com\\liferay\\portlet\\blogs \\service\\persistence\\BlogsEntryPersistence, you will find that the findByOntologyId() is newly generated.

Open the <synergy-workspace>\\e2demo\\synergy\\liferay\\portal\\portal-service\\src\\com\\liferay\\portlet\\blogs\\ service\\BlogsEntryLocalService and BlogsEntryLocalServiceUtil, you will find that the getBlogEntriesByOntologyId() is newly generated.

Now you can call the BlogsEntryLocalServiceUtil .getBlogEntriesByOntologyId() from any portlet class or jsp,
you will get the blog entries that the specific ontologyId applied to that.

Next the changes have to be made in the db scripts.

For this run ant build-db in the command prompt that you opened before.

Open the <synergy-workspace>\\e2demo\\synergy\\liferay\\portal\\sql\\portal-tables.sql and <synergy-workspace>\\e2demo\\synergy\\liferay\\portal\\sql\\create-\*.sql.

You will find that the scripts have been suitably modifled.

For the changes to be reflected on the DB (could be MySQL, HSQL, etc),
drop the existing tables under lPortal database if any, and re-start the server.
The ontologyId column would be added to the BlogsEntry Table and BlogsEntryOntologyMapping table would have been created.

Extending Project WebSynergy's tables is as simple as this. You can extend this example to any other feature like wiki, bookmarks, etc.


Sunday May 11, 2008

Semantic Community Portal in Project WebSynergy


 Semantic Web

The community feature of Project WebSynergy has been semantically enabled. This is a preview version of that.
This is taking the first step towards Web3.0 enablement.

So whats the Semantic Web ??
The semantic web is an evolving extension of the world wide web, in which web content can be expressed not only in a natural language but also in a format that can be read and used by machines for processing the information. It is w3c recommendation.

As a human when we write and read a blob of text, we know what it means but a machine reading a bunch of characters has no idea as to what it means. 

For the machine to be as intelligent as humans to decipher similar information from the text, there has to be some kind of information that the machine has to be provided with. This "extra" information is traditionally provided as meta-data in the form of tags, microformats or some other means. A much more structured and scientific way of applying metadata to a blurb of text is via what is called an ontology.

The community feature of Project WebSynergy allows you to add blog entries, wiki pages and message boards.

Refer to my blog on how to create a community in Project WebSynergy.
For an idea of what a Semantic Community Portal is, see here.

In a Project WebSynergy community, when the user creates a blog entry or a wiki page, he/she can optionally associate it with an ontology element (which acts as the metadata).
When the user views the blog entry, the other semantically related blog entries and wiki pages are displayed. The search for the related entires is not a key word search, but a semantic search done by the reasoner. The semantic reasoner infers the related ontology elements and we can see the blog entries and wiki pages for which  the related ontology elements have been applied to.

An example of the Semantic Community Portal is shown in the screen-casts.

Creating communities in Project WebSynergy


 This blog describes the steps to create a community in Project WebSynergy.

  1. Login as into Project WebSynergy
    Move your mouse over the "Welcome Admin User" message and click on Add Application
  2. In the Add Application window that shows up, select the Communities under Community Section. You can also type "communities" in the search content text box. Click on "Add" or drag and drop the portlet into one of your tabs. The communitiy portlet is now added to your tab.
  3. Click on Add Community button.
  4. Enter name (say Synergy) and click on Save. The community is created with the name that you specified.
    Click on "Available Communities" sub-tab.
  5. For the community that you just created, click on the "Actions" button and select "Manage Pages".
    Enter name for the community page (say MySynergyPage ) and click on "Add Page".
  6. Click on View Pages.
    To this community page, you can add the any  portlets. For eg.
        Blog Portlet
        Blogs Aggregator Portlet
        Wiki Portlet
        Message Boards Portlet
  7. All these portlets are available under the Colloboration section in Add Application window
The "MySynergyPage"that you have created, allows user to add / view blogs, wiki and message boards. 

Expense Report Widget showcasing SAW in Project WebSynergy

The expense-report widget, that is delivered as a part of the Project WebSynergy bundle, models a typical workflow scenario  where SAW (Simple API for Workflow) could be used. In an organization, employees raise expense reports and submit them to the managers to be approved or rejected. Once submitted, the report triggers a workflow process(in a workflow engine like JavaCAPS), and becomes a pending task for the associated manager. When the manager approves/rejects the report, the report goes to the next step in the workflow process.

This widget has been integrated with a simple JavaCAPS workflow process. If a workflow engine is unavailable, the SAW calls to the  Workflow engine can be disabled using the preferences. If the call to the workflow engine is enabled without configuring the engine, it results in a system error.

 In addition to Workflow, this widget has the following features: 

  •  JMaki - Uses JMaki Yahoo Datatable
  •  Usage of ServeResource feature of JSR286 portlets for Ajax requests (For Displaying Report Details)

Click here to know more about this widget....

Here is a step-by-step screencast showcasing the widget.




« August 2016