portlets Wed, 14 May 2008 09:44:00 EDT
  • Social Networking becoming more social.. 

    If you have a site or blog and you wanted to make it a community site, your options were limited. Building features like invite a friend, social networking and collaboration was not trivial and involves writing your own applications - this may or may not be supported by the hosting provider unless you were using something like Drupal.

    The situation is set to change with Google announcing its Friend Connect service. Like all other Google products, this too is in Beta (and preview release) and has a long wait list. This service will let you implement social features on your website without having to worry about coding and you will be able to invite friends from other popular social networking sites.

    Facebook and MySpace had also earlier announced similar initiatives.

    And there is focus on social computing else where too. With it’s version 5.0, Liferay also announced enhanced collaboration and social computing features. These include portlets with improved functionality for Blogs, Wikis, Discussion Forums, a chat client, polls and other such features. All of these are based on the same underlying functionality for tagging, commenting, rating etc., which is very similar to Drupal. What this basically means is that irrespective of whether you are creating a blog post or a new article, you can use uniform features for categorization, rating and RSS.

    Now it’s easier than ever to have your own Facebook :).

  • Why does the GWT compiler require an X server and how to work around it 

    Got this error today when trying to build our little GWT application in linux: (more…)

  • Personal Blog 

    After lot of juggling around at Blogspot, I thought of moving all over to my personal website - now that I have got infrastructure available.

    Though I had stopped writing for quite some time - mainly attributed to my time being absorbed at Edujini Labs, I am planning to revive my habit of writing.

    No more entries at Master's Diary at Blogspot. New entries from "personal me" at Mindless Mind© on my personal website.

  • Ubuntu 8.04 Upgrade Goes Well, Not Without Issues 

    Upgraded from 7.10 to 8.04 last week. The Upgrade went quite smooth, especially considering I have been running a mixed kde 4/kde 3 setup, with the kde 4 pulled directly from the kde.org repo.
    (more…)

  • OpenPortal WSRP v2 milestone 4 now available for download 

    The OpenPortal WSRP v2 milestone 4  is now available for download, milestone 4 is the last feature preview binary from the OpenPortal WSRP v2 project. The OpenPortal WSRP is feature complete from the WSRP 2.0 spec perspective by implementing all the mandatory and most of the optional features.


    This milestone previews the following optional WSRP v2 features

    1. WSRP 2.0 CC/PP Capability
    2. WSRP 2.0 Leasing
      1. Registration Leasing
    3. Interoperability Fixes

     

    Here are the links to the binary and documents associated with this milestone.

    A. Binary download

    1. WSRP version 2.0 milestone 4 binary  requires
    2. Portlet Container 2.0  16 April 2008 binary

    B. OpenPortal WSRP documents:

    1. Whats new in Milestone 4
    2. Glassfish Install Instructions
    3. Tomcat Install Instructions
    4. User Guide
    5. WSRP v2 milestone 4 samples
    6. Sample Portlets
  • OpenPortal WSRP 1.0 FCS binary download 

     

    The WSRP version 1.0 FCS is the latest stable binary from the WSRP v1 project. This is expected to be the last binary release from the WSRP v1 Project and this project will remain in maintenance mode, only serious issues reported will be fixed from now on. This same binary is integrated into the following releases.

    1. Sun Java System Portal Server 7.2 release and
    2. Java Application Platform SDK Update 5.
    From now on all future developments and feature integration will happen only on the WSRP version 2.0 project. 

    A. Binary download

    1. WSRP version 1.0 FCS bits  requires
    2. Portlet Container 2.0 RC2

    B. WSRP documents:

    1. Install Instructions
    2. User Guide
    3. FAQ

    C. Portlet Container documents:

    1. Install Instructions

    D. See Also:

    1. Portlet Repository binary

  • Delivering Portal and CMS as Service Part 2 

    Tenant Specific Content

    Okay the next issue to be aware of is about how actually the content is stored. So let’s for the sake of simplicity assume the content is a “News Article” with fields like Headline, Byline and Body.

    A very good article on issues related to multi tenant data architecture is here. This article explains data architecture in terms of databases, schemas and tables. The same architecture principles will also apply to a more generic CMS repository which may not be based on a database. The CMS can store the same content for multiple tenants in multiple ways. It can either have a completely independent repository for each tenant. It can also use the same repository for all the tenants but with some kind of logical partitioning. I think Alfresco uses this mechanism. And finally, it can use the same repository for all the tenants without any partitioning. In this case, Tenant -> Article ownership is identified by some other mechanism. A possible way is to have a field like tenant id (along with Headline, Byline and Body) that identifies the tenant.

    Each of these mechanisms have their advantages, disadvantages and associated costs. There is a trade off between security and costs.

    Administration

    Apart from tenant specific administration (or Federated admin), the application needs to provide capabilities like:

    • Provisioning
    • Billing and Metering
    • Management, Monitoring and Reporting

    So some kind of delegated administration and centralized management application is required that enables assigning administrators for individual portals (or applications) and then Monitoring (and managing) these individual portals.

    There are also issues related to Tenant Specific Security. More about that later…

  • OpenPortal WSRP 2.0 interoperability 

     

    We just completed the WSRP version 2.0 interoperability test cases with OpenPortal WSRP Project Consumer and IBM Producer.  Here are some screenshots and details about this interoperability test cases.

    A. WSRP 2.0 Eventing Interoperability:

    IBM interoperability server exports the following 2 portlets that communicate with each other using events:

    1. FlightBookingPortlet
    2. HotelBookingPortlet

    Using the FlightBookingPortlet and booking a flight results in an event that is caught by the HotelBookingPortlet and blocks a hotel in the same city. Here is a screenshot of these portlets on the OpenPortal WSRP driver.

     

     

    B. WSRP 2.0 Shared Render Interoperability:

    IBM interoperability server exports the following 3 portlets that communicate with each other using shared or public render paramters:

    1. PublicParamCityInfo
    2. PublicParamCitySelect
    3. PublicParamCityWeather

    Using the PublicParamCitySelect and selecting a city results in setting of a shared render parameter that is received by the PublicParamCityInfo and PublicParamCityWeather which display the city information and weather respectively. Here is a screenshot of these portlets on the OpenPortal WSRP driver.

     

     

    C. WSRP 2.0 Resource Serving:

    There is not special portlets for this, if you observe the above eventing and shared render parameter portlet, you could see the image that is being displayed by these portlets are fetched inband or using the getResource() method call on the portlet, which validates the getResource WSRP version 2.0 implementation on the OpenPortal WSRP Project

    This interoperability tests all the major WSRP version 2.0 features, stay tuned for more information on the OpenPortal WSRP Project mailing lists.

  • There Is A Geek In Every One Of Us 

    Nick Tosches recounts his year-long quest to find out where the Windows wallpaper ‘Autumn’ was originally taken, and by who.

  • Ivy 2 beta 2 Adds Maven Metadata Support 

    Ivy 2.0 beta 2 adds an interesting useMavenMetaData switch to its ibiblio resolver. When it’s on (the default actually), Ivy will try and use the maven-metadata.xml for listing the versions available, and for dynamic dependency resolution. This is interesting to me because it makes it a lot easier to run our builds against a proxy repository server like Maven Proxy or Archiva.

    Until beta 2, Ivy finds out about the available versions of a module by parsing the directory listing HTML from Ibiblio’s Apache server. That doesn’t work when there is a proxy server sitting in between, because a) the proxy server doesn’t usually proxy directory listing requests, and/or b) the proxy server renders the directory listing in different HTML. Switching to using the structured maven meta data completely eliminated this mess.

    Of course, using the maven-metadata.xml files from the official ibiblio repository will subject us to some new hazard - some modules have out-of-date maven-metadata.xml. For instance, by its maven-metadata.xml, the latest version of Hibernate would still be 3.2.0.cr1.

    One of those maven proxy servers turns out to be a perfect solution to this problem - we can use them now, remember? :) In my case, I run an Archiva server proxying the official maven 2 repository. Whenever I run into a bad metadata file, I simply request the missing version through Archiva, and it will fetch it and update the metadata file. For example, in the hibernate case, I would just open up Firefox and try to download http://archiva-server/repository/internal/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar. That only needs to be done once, and afterwards Archiva would have updated its local version of the maven-metadata.xml properly.

  • WSRP 2.0 Resource serving and Caching 

     

    Checkout the following announcements on the release of a new milestone binary from OpenPortal WSRP Project.

    1. Project Announcement : OpenPortal WSRP version 2.0 milestone 3 now available   or
    2. Blog on PortalPost .

     

    This new milestone 3 supports the following feature set

    1. WSRP 2.0 getResource
    2. WSRP 2.0 Caching
      1. Markup Caching
        1. Expiration Markup Caching
        2. Validation Markup Caching
      2. Resource Caching
        1. Expiration Resource Caching
        2. Validation Resource Caching
    3. Tomcat 5.5 support
    4. Migrated code to the latest WSRP 2.0 schema

     

    Pls note that the previous milestones have already provided the following WSRP  version 2.0  feature sets.

    1. WSRP 2.0 Eventing.
    2. Shared/Public render parameters.

     

    The above links also provides sample portlets and configuration instructions to try out these features. If you have questions on how to use the OpenPortal WSRP Project and other comments/suggestions/requests, consider joining the users@wsrp.dev.java.net alias.


  • JSR 286 Approved You would be happy to know that the JSR 286 is approved and the final version should be available soon. By the time, you can have a look at final draft here. I am sure JSR286 will prove a big leap forward in success of Java Portals. I congratulate spec lead Stefan Hepper and all expert group members for the efforts and hard work.
  • JBoss Portal Release container 2 Read more:
    Jboss Portal Blog
  • Google Sites - Challenging Portals Today I saw the announcement of "Google Sites" in my mailbox. I use Google Apps services for few of my domains. Just if you are not aware of what Google Apps is, Google Apps is a collaboration platform that can be subscribed by the companies instead any installation locally. In other words, it is kind of hosted portal for an enterprise. It provides quite a few important collaboration features like Email, Calendar, Task, Docs etc. Now the latest addition to this set is Google Sites.

    Google Sites is a tool for quickly creating new websites and sharing information. Here is how Google defines it -
    "Google Sites is the easiest way to make information accessible to people who need quick, up-to-date access. People can work together on a Site to add file attachments, information from other Google applications (like Google Docs, Google Calendar, YouTube and Picasa), and new free-form content. Creating a site together is as easy as editing a document, and you always control who has access, whether it's just yourself, your team, or your whole organization. You can even publish Sites to the world. " The more information can be found at Google Sites help at http://www.google.com/a/help/intl/en/users/sites.html.

    Now with the announcement of Google Sites, I believe that Google has started challenging Portal market. I think, Google is soon going to be the the free hosted sharepoint available to all. Though Google Apps is still at initial stages so we have some time where we see that Google started grabbing some portal market. I personally see that initially it will start affecting open source portals and small portal vendors before taking over biggies like Microsoft and IBM. We will soon see Google Apps catching fast in at least SME segment.

    Where do you think Google Apps is heading? Do you also think that it is going to challenge portal market (especially collaborative portals)?
  • Custom sort key with Ext JS Grids I've begun using Ext JS in the last few days. I'm very impressed by the professionalism and api documentation, but there is still a lot to be desired as far as installation and initial setup docs. Anyway... I spent a couple hours trying to track down a way to sort a column in my GridPanel by a value other than its text. That is, I want the column to sort on a keyed index that is different
  • WSRP Eventing and Shared Render parameter preview 

    Just a repost of the information on Portal Post w.r.t to WSRP version 2.0 milestone 2 binary. Here is the actual post  

    The OpenPortal WSRP version 2.0 milestone 2 binary is now available for download. The binary along with install instruction is available on the Open Portal WSRP download pageThis is the second milestone release from the OpenPortal WSRP Project that implements the OASIS WSRP version 2.0 specification. The main intent of this release is to preview the following optional features defined in the WSRP version 2.0 of OASIS specification.

    1. WSRP Eventing
    2. Shared/Public render parameters
    Pls follow the instructions in coordination preview document on how to test and use these features that'll help you to understand the implementation.

    Here are the links to the complete set of documents for this milestone.
    1. Install Instructions
    2. User Guide
    3. WSRP v2 Coordination samples
    Stay tuned for more optional feature implementation in the future milestones of the OpenPortal WSRP version 2.0 project. If you would like to keep track of future announcements and additions to the OpenPortal WSRP Project, please subscribe to the announce@wsrp.dev.java.net alias.

    If you have questions on how to use the OpenPortal WSRP Project and other comments/suggestions/requests, we urge you to join the users@wsrp.dev.java.net alias.

    Please report any issues that you encounter while trying OpenPortal WSRP version 2.0 milestone 2 to issues@wsrp.dev.java.net.
  • Manual instructions for WSRP on Tomcat 

    Check the following thread for the manual instructions of installing and configuring OpenPortal WSRP on Tomcat. The above instructions is validated against the following binaries.

    1. Tomcat version 5.5.25
    2. Metro version 1.1
    3. Portlet Container version 2.0 Beta 2 (2 Jan  2008 build)
    4. WSRP latest trunk binary.

    Stay tuned to the OpenPortal WSRP aliases for more news related to automatic configuration soon. 

  • Using Eclipse for C++ with GLUT on Windows For my latest grad school class at UNO, cs8626 Computer Graphics (yeah, its an easy elective for this semester), I need to develop some code using OpenGL. In my 10 years as a Java web app developer I haven't had any need for OpenGL before now, so my knowledge of it is around "beginner" to "sounds like something cool to learn". I can get by with C/C++/Make and the like, but until now I've either
  • RFPs, Implementation Scope and Costs It’s been quite some time that I am into responding RPFs and RFIs in Portal and Content Management space and sometimes jump onto implementation for the solution that we have provided :-) . This post highlights issues that project delivery faces when a customer hides the information of its existing software infrastructure during pre –engagement stage. Most of the customers do not supply enough
  • WSRP 2.0 milestone 1 preview download 

    The OpenPortal WSRP version 2.0 milestone 1 binary is now available for download, checkout the following announcement on the OpenPortal WSRP project

     
    Here are the links to install and user guide.

     The above WSRP binary works over the latest OpenPortal Portlet Container 2.0 beta 2 binary, checkout the  following announcement with respect to OpenPortal Portlet Container binary. Here are some links to the Portlet Container documents

    Stay tuned for future announcements on OpenPortal WSRP Project on other WSRP version 2.0 feature implementation, Please subscribe to  announce@wsrp.dev.java.net

  • Could Java 7 Please Add A Subpackage Access Modifier? 

    As we all know, the package hierarchy in Java is a rather superficial one. Package com.foo.pack.sub means nothing special to package com.foo.pack - no more special than com.bar.whatever. It’s something that’s seemingly trivial, but really has been discouraging proper organization of classes and more careful design practices. (more…)

  • EMC to acquire Document Sciences Corp 

    Many of our clients have implemented Document Composition. I have said before that ECM vendors should provide Document Composition features as this space is very close to content management.

    EMC ended the year with the news of acquiring Document Sciences. Doc Sciences’ xPression is a product that targets the Document Composition or Document Output Management (DPM) space.
    For EMC, this provides a way to differentiate its content management offerings by adding document composition features to its suite. I don’t think any of the other big ECM vendors have this as yet and they will have to acquire/build these features to catch up. In return, Document Sciences gets a stronger company with a bigger sales force that will hopefully propel it to a leadership position in this space.

  • Temporary Post Used For Style Detection (6675ab49-bf70-4551-95a7-db07ec46d979) 

    This is a temporary post that was not deleted. Please delete this manually. (98334d6c-c97d-4869-a2e6-e90ea791240b)

  • WSRP version 2.0 implementation on OpenPortal WSRP project The implementation of the WSRP version 2.0 is in full swing in the OpenPortal WSRP Project community. Here is the link to the project wiki page that tracks this project.
    Apart form this the following documents are also available for review
    1. WSRP v2 FSD
    2. WSRP Consumer Admin Usecases
    3. Eventing Usecases
    4. Architecture changes for WSRP v2
    5. Project Plan
    If you have comments or questions, pls join the project and post your queries or comments. Stay tuned for the milestone 1 drop which is expected in the next few weeks also for more features in the future drops.
  • Uninstalling OpenPortal WSRP and PortletContainer 

    Here is how you uninstall OpenPortal WSRP and OpenPortal PortletContainer projects after successful installation without having to uninstall the whole glassfish application server. Recently I came across this issue since someone asked about it and this information was not available or documented anywhere.

     

    Uninstall OpenPortal WSRP :

    Upon successful install of OpenPortal WSRP, The installer would have created a 'wsrp' directory as <glassfish_install>/domains/domain1/wsrp. There is a setup.xml under this directory, invoking the 'uninstall-wsrp' ant target does the job. Here is the example


    # ant -f setup.xml uninstall-wsrp.

    Make sure you restart the glassfish application server after this.

     

    Uninstall OpenPortal PortletContainer :

    Similar instructions apply the OpenPortal PortletContainer uninstall procedure. Upon successful install of OpenPortal PortletContainer, the installer would have created a 'portlet-container' directory as <glassfish_install>/domains/domain1/portlet-container. There is a setup.xml under this directory, invoking the 'uninstall-pc' ant target does the job. Here is the example

     

    # ant -f setup.xml uninstall-pc.

     Make sure you restart the glassfish application server after this.

  • Spring 2.5’s Unintrusive Annotation-based Configuration 

    Annotation-based configuration isn’t new, but Spring 2.5 adds an interesting twist to it by making it possible to use annotations for wiring, yet without being explicitly tied to any Spring classes. (more…)

  • Dual-booters, beware the XP installer. 

    About this time last year, I decided to switch to Linux. I lived happily ever after in (K)Ubuntu, with my original Windows still kept around (one word: games). So after upgrading my workhorse desktop at home a couple of weeks back, I had the opportunity to reinstall both OS’s in a dual-boot setup. The experience from the two setup processes was unbelievably radically different. (more…)

  • The Sphere Journal I hosted a call this week with the editors of The Sphere Journal and members of my team, IBM Software Services for Lotus (probably better known as Portal Lab Services). I sometimes think of The Sphere as this small underground journal, but it has quietly been building up a wealth of articles and content that cannot be ignored. Looking through the list of articles on line, I found at least a dozen that would be of interested to me in different aspects of projects I'm currently working on.

    The editors Celeste Frey and Lauren Bonneau are always actively seeking the best content for their subscribers. I actually don't have a subscription myself, but I get a copy every once in a while from different sources. I'm actually thinking about buying a subscription myself and trying to deduct it from my taxes as a work related expense. I'm actually not sure if I can do that, so I'll have to check that out. Either way, in my line of work it's probably worth it to have another library of proven and complete solutions available to help solve customer problems.

    Anyway, check it out and let me know if you subscribe and let me know if you think the value is there?

    thanks!
  • Oracle-Bea, Portals,Portals everywhere !! Is the portal market going to see another acquisition by Oracle? Though Bea has denied the deal of $6.66 bn as “too low”, but as we know Oracle has a history of acquiring BIG companies and maintaining multiple products of same line. BEA and Oracle own two Portal products each (Aqualogic and Weblogic) and (Oracle Portal and webcenter), respectively. If in case, the acquisition happens then in my
  • Hiding Pages in Portal Navigation Interestingly enough I have been working with themes lately. I thought those days were over for me, but as always everything goes in cycles. I like getting and keeping my hands dirty, as I think do most technologist, but as always it's hard to do people place more demands on your time. Themes have changes quite a bit in version 6 and I have to admit I had not been keeping up with all the latest improvements. Things like theme policies and the continued separation of different aspects of the theme which allow for more customization and flexibility. It was actually two separate projects back to back that asked for some theme customization. The first one asked the simple question. "How do I hide pages in a theme?"

    Initially I thought about just putting the pages in a separate location within the page hierarchy and then calling them when necessary. But an interesting twist to the use case was to have the breadcrumbs continue to follow the same page hierarchy as before the hidden page was displayed. This put an interesting twist to the situation, because you wanted the page to be located along side you’re calling pages, but not displayed within the main navigation. Thinking about what we had done in the past and what options I knew were available in the portal, I narrowed it down to three options.

    1. Explicit Naming: Hiding pages explicitly in the theme by filtering out the page name. In previous projects what we have done is use a prefix on any page we wanted to hide. For example naming a page as HIDDEN_MyPage1, and then any pages that start with HIDDEN_ will not be displayed. It's a low tech, simple, approach that has worked quite well on projects in the past.

    2. Rule Mapping: I also looked at rule mapping on the page. This is a powerful way to remove and add pages to your portal based on any number of rules you can determine. You can base it on the date, user attributes, heck, even phases of the moon if you could get the right data.



    The main problem in this situation is that if a page is out of scope according to the rule that you put in place, then it's totally gone. No calling it directly within your code, which is what you really wanted. This solution is then very useful if you do want these pages to show up in the navigation menus when they are not hidden, and disappear completely when they are.

    3. Page Parameters: The final option I looked at was using page parameters. I really liked this approach because it was similar to the first approach of using a page name prefix, but allowed you to turn pages on and off in the menu and still have the option of calling them directly if necessary though code. It's not a big deal though if you decided to use option one.


    according to convention my parameter probably should have been, com.myco.page.Hidden, with an uppercase H.

    Filtering out these pages can be an exercise, but once you get the hang of it it's not that bad. It really depends upon where you are in the theme as to the approach you take. I was able to filter these pages out of the sideNav.jspf file by using the following code snipped.
     //start my code boolean isHidden = false; com.ibm.portal.MetaData iMetaData=((com.ibm.portal.MetaDataProvider) wpsNavNode).getMetaData(); Object hiddenValue=iMetaData.getValue("com.myco.page.Hidden"); if(hiddenValue != null) { if(hiddenValue.toString().equalsIgnoreCase("true")) { isHidden = true; } } //end my code 

    Of course once I had the value of isHidden set to true or false, I had to use that value later in the file to actually filter out the different menu items. You'll have to play with it a bit depending upon your custom theme. There are some other examples actually in the default theme that uses this technique in different places, so definitely take a look for them.

    enjoy.

Resources