Thursday, May 3, 2012

IBM WebSphere Portal 8 has been released finally

Hello Friends,

IBM has finally released WebSphere Portal 8 version. It was in Beta stage since long time and recently a stable version has been released. 

The following updates are major enhancements to the new version:
  • Better integration with IBM Web Content Management:  WCM is truly becoming a integrated part of WebSphere Portal.  New features include Managed Pages where Portal Pages are tied directly to WCM site areas.  The new version creates WCM site areas and content when a new portal page is created.  Portal pages can be included with WCM projects so they can go through approval workflows and get published through the syndication process.
  • A new optimized theme.  Portal themes have been undergoing constant changes in the past versions.  I'm hoping that this latest version is really optimized.
  • New Community Pages that integrate IBM Connections more closely into WebSphere Portal.  When creating a community page, you can specify which Connections community is associated with that page and both Connections and WCM will understand that context.
  • OpenID authentication which lets you use external systems like Facebook to authenticate users.
  • Web analytics overlays allow you to see usage analytics right on your pages without having to generate reports.
  • New installation process using IBM's Installation Manager.  This feature promises easier and faster installs of the portal servers.



Enjoy!

Chirag.

Wednesday, February 29, 2012

Managing content with Authoring tools components of JSR 286 Web content viewer Portlet

Hello Folks,


This is a very basic requirement that business personnels does not want to navigate through IBM Lotus Web Content Management authoring portlet. Instead, they want to create, read, edit, delete, approve, or reject content items with some user friendly interface. This can be achieved using Authoring tools components rendered in a JSR 286 Web content viewer portlet. For more details please visit IBM Information Center.

Thanks & Regards,
Chirag.

Wednesday, February 22, 2012

Enabling Developer Mode in IBM WebSphere Portal 7

Hello Friends,

The server start up time can be reduced to half when you enable developer mode in websphere portal 7.When portlet application application is developed on your local box it is very annoying to wait for server startup taking 15 to 20 minutes. IBM WebSphere portal version 7 facilitates a developer to start the server in a Developer mode.

This setting will disable non-essential applications from started when the server starts.  In the event that one of these applications are required after the server has started WebSphere will lazy load the application.  From the end users view this means that the first time someone tries to render a portlet they could receive a portlet unavailable message.  In the background the application will be started and the next time the user renders the portlet the application will be available.  Without a lot of custom applications, enabling developer mode can improve the startup time by about 50%.

Here are the steps to enable developer mode:

1.      Stop the server
2.      Go to <portalserver_root>\wp_profile\ConfigEngine
3.      Execute the following command
a.       ConfigEngine.bat enable-develop-mode-startup-performance
4.      Start the server


Steps to disable Developer Mode

1.      Stop the server
2.      Go to  <portalserver_root>\wp_profile\ConfigEngine
3.      Execute the following command
a.       ConfigEngine.bat disable-develop-mode-startup-performance
4.      Start the server


Trust me, as a developer you will save a lot of time!

Thanks,
Chirag.



Tuesday, February 14, 2012

Interportlet communication in different war files (portlet applications) – Part 2.


Inter-portlet communication between multiple portlets in different portlet applications has been made easy with JSR 286 portlet API. It has brought a new revolution in portlet development. In JSR 168 a.k.a portlet specification 1.0, inter-portlet communication between portlets in different war files was not possible. The only way to achieve it was through IBM URL Generation classes. But JSR 286 gives you more flexibility to achieve this functionality.

There are 2 ways to achieve interportlet communication between portlets in different portlet applications:
1. By using public render parameters of JSR 286 portlet development API.
2. By using processEvent() method.

I will be discussing the second approach in this article. The first approach was discussed in the Part 1 of this article. In the first method you can pass only string params while the second one gives you flexibility to pass complex collection objects. I have created sample applications for both approaches.

The sample application uses IBM websphere portal 7, JSR 286 portlet development API, Annotation based Spring MVC Portlet framework 3.1. There are 2 portlets applications PortletApplication 1 which has TestPortlet1 and PortletApplication2 which has TestPortlet2.

Listing 1: TestPortlet1Controller.java
@Controller
@RequestMapping("VIEW")
public class TestPortlet1Controller{
@RenderMapping
protected ModelAndView defaultHandleRenderRequest(RenderRequest request,RenderResponse response) throws Exception {
ModelAndView mav = new ModelAndView("list1");
return mav;
}

@ActionMapping(params = "action=insert")
public void insert(ActionRequest request, ActionResponse response) {
String address = request.getParameter("address");
QName qName = new QName("http://bcbsfl.com","testEvent");
response.setEvent(qName, address);
}
}

Listing 1.1 TestPortlet1.xml:
<portlet>
<supported-publishing-event>
<qname xmlns:customns="http://bcbsfl.com">customns:testEvent</qname>
</supported-publishing-event>
<event-definition>
<qname xmlns:customns="http://bcbsfl.com">customns:testEvent</qname>
<value-type>java.lang.String</value-type>
</event-definition>
</portlet>

Listing 2: TestPortlet2Controller.java
@Controller
@RequestMapping("VIEW")
public class TestPortlet2Controller{
@RenderMapping
protected ModelAndView defaultHandleRenderRequest(RenderRequest request,
RenderResponse response) throws Exception {
ModelAndView mav = new ModelAndView("list2");
String address = request.getParameter(“address”);
mav.addObject("address",address);
return mav;
}

@EventMapping(value="{http://bcbsfl.com}testEvent")
public void processEvent(EventRequest request, EventResponse response)
{
Event e = request.getEvent();
System.out.println("SelectController2.processEvent()=======Got an event");
System.out.println("QName: " + e.getQName());
System.out.println("Event Name: " + e.getName());
System.out.println("Event Value:========== " + e.getValue());
response.setRenderParameter("address",(String)e.getValue());
}
}

Listing 2.1 TestPortlet2.xml:
<portlet>
<supported-processing-event>
<qname xmlns:customns="http://bcbsfl.com">customns:testEvent</qname>
</supported-processing-event>…
<event-definition>
<qname xmlns:customns="http://bcbsfl.com">customns:testEvent</qname>
<value-type>java.lang.String</value-type>
</event-definition>
</portlet>

After coding part is completed you have to create wires via websphere portal admin GUI and you are all set.

Friday, February 10, 2012

Interportlet communication in different war files (portlet applications) – Part 1

Inter-portlet communication between multiple portlets in different portlet applications has been made easy with JSR 286 portlet API. It has brought a new revolution in portlet development. In JSR 168 a.k.a portlet specification 1.0, inter-portlet communication between portlets in different war files was not possible. The only way to achieve it was through IBM URL Generation classes. But JSR 286 gives you more flexibility to achieve this functionality.
There are 2 ways to achieve interportlet communication between portlets in different portlet applications.
1. By using public render parameters of JSR 286 portlet development API.
2. By using processEvent() method.
I will be discussing the first method in this article. The second approach will be discussed in the next article. In the first method you can pass only string params while the second one gives you flexibility to pass complex collection objects. I have created sample applications for both approaches.
The sample application uses IBM websphere portal 7, JSR 286 portlet development API, Annotation based Spring MVC Portlet framework 3.1. There are 2 portlets applications PortletApplication 1 which has TestPortlet1 and PortletApplication2 which has TestPortlet2.
Listing 1: TestPortlet1Controller.java
@Controller
@RequestMapping("VIEW")
public class TestPortlet1Controller{
@RenderMapping
protected ModelAndView defaultHandleRenderRequest(RenderRequest request,RenderResponse response) throws Exception {
ModelAndView mav = new ModelAndView("list1");
return mav;
}
@ActionMapping(params = "action=insert")
public void insert(ActionRequest request, ActionResponse response) {
String name = request.getParameter("name");
response.setRenderParameter("name", name);
}
}
Listing 1.1 TestPortlet1.xml:
<portlet>
<supported-public-render-parameter>name</supported-public-render-parameter>
<public-render-parameter>
<identifier>name</identifier>
<qname xmlns:customns="http://testportlet1_params/">customns:name</qname>
</public-render-parameter>
</portlet>
Listing 2: TestPortlet2Controller.java
@Controller
@RequestMapping("VIEW")
public class TestPortlet2Controller{
@RenderMapping
protected ModelAndView defaultHandleRenderRequest(RenderRequest request,
RenderResponse response) throws Exception {
ModelAndView mav = new ModelAndView("list2");
String name = request.getParameter("name");
System.out.println("TestPortlet2Controller========"+name);
mav.addObject("name",name);
return mav;
}
}
Listing 2.1 TestPortlet2.xml:
<portlet>
<supported-public-render-parameter>name</supported-public-render-parameter>
<public-render-parameter>
<identifier>name</identifier>
<qname xmlns:customns="http://testportlet1_params/">customns:name</qname>
</public-render-parameter>
</portlet>

Sunday, December 18, 2011

Migrating Struts portlet application to IBM WebSphere Portal 7

Hi Folks,

Currently I am working on migrating all the existing portlet applications that are running on IBM WebSphere Portal Server 6 to IBM WebSphere Portal Server 7.0.0.1. I came across a very helpful article from IBM. I followed the steps given in this article and was able to successfully migrate the portlet application to IBM WebSphere Portal 7.

Here is the link to that article to migrate legacy struts portlet application to websphere portal 7:

http://www-10.lotus.com/ldd/portalwiki.nsf/dx/Migrating_portlets_built_with_Struts_Portlet_Framework_zos7

Thanks & Regards,
Chirag Rana.

Tuesday, October 18, 2011

Managing IBM Workplace WebContent Management Library

Here are few basic points which you should know while dealing with IBM Workplace Webcontent Management(IWWCM) Library or wcm library.
Webcontent Library or wcm library:
Libraries are (new) data-partitioning feature in wcm (6.0). The web content management library contains your website structure. This repository includes all of the components that make up the website, such as: authoring and presentation templates, and menu and link components that take the advantage of the dynamic structure web content management offers. These components help you easily manage the content and avoid broken links on the website.

There are 2 methods to assign roles to whole library and the item types within it:
  • Additive: You apply the User or Privileged User role to the entire library and deselect the propagation check box. It will give it access to the library and any authoring portlets configured to use the library. The Administrator then applies Contributor, Editor, Manager, or Administrator roles to specific item types to grant additional access to specified users or groups.
  • Subtractive: The administrator applies the Manager or Administrator role to the entire library, then applies Contributor, Editor, Privileged User, or User roles to specific item types, and deselects the inheritance check box. This reduces the access to different item types for specified users or groups.

The difference between Manager and Administrator roles within Web Content Management: if you assign an Administrator role to an entire library, you cannot then remove this role from any item type views. This is not true for a Manager role.

Advantages of library:
  • By using libraries, you can split up large sites and manage them separately.
  • Separate presentation storage from content storage. It means one library would only contain Sites and Content and another library would contain Presentation Templates and Components.

N.B:If a library is no longer required, it can be deleted or disabled. Deleting a library means also deleting all objects within that library. Disabling a library prevents a user from accessing it from an authoring portlet or updating any items stored in the library. Any items referenced from this library will still be rendered by the rendering portlet.

The following conditions may prevent a library from being deleted:
  • A library cannot be deleted if it contains any draft or locked items.
  • A library containing items with complex relationships may not be able to be deleted due to referential integrity issues. You will need to delete these items before deleting the library.
  • Libraries containing a large number of items may not be able to be deleted. You will need to reduce the number of items in the library.
If a library cannot be deleted after addressing the previous issues, you may need to delete all items from the library before it can be deleted.