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.

Sunday, October 17, 2010

Steps to Install/activate IBM WCM Authoring Portlet

Installing the Authoring portlet

The Authoring portlet configuration task will automatically create IBM Workplace Web Content Management pages(IWWCM) and install the Authoring portlet and Local Rendering portlets.
Stop the portal server if already running.

Running the configuration task:(<PortalServer root>\config>)

  1. Open a command prompt.
  2. Run the configure-wcm-authoring task:
    • Windows and UNIX: Run the following command from the <portal_server_root>/config directory:
      • Windows: WPSconfig.bat configure-wcm-authoring -DPortalAdminPwd=password
      • UNIX: ./WPSconfig.sh configure-wcm-authoring -DPortalAdminPwd=password
    • where profile_root is the name of the WebSphere Application Server profile where WebSphere Portal is installed; for example,wp_profile.
  3. Log out of the portal and log back in.
  4. Select Web Content from the main menu to access the Authoring portlet.
  5. In a clustered environment, sometimes the authoring portlet does not get displayed. In such cases you may need to activate the portlet manually or synchronize the nodes in cluster.

Saturday, September 18, 2010

Steps to set up E-mail Notifications during IBM WCM Workflow


Hi Friends,
In IBM Workplace Webcontent Management (IWWCM) you can set up the e-mail notifications during each stage of webcontent management workflow. This helps the web content author and publisher know the status of content which needs to be published.
Here are some additional steps required to set up e-mail notification during a webcontent workflow:
  • ensure the WCMConfigService.properties file is configured to use your SMTP server.
  • ensure the Member Manager user has a valid e-mail address.
In addition to the InfoCenter steps (http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/index.jsp?topic=/com.ibm.wp.ent.doc/wcm/wcm_config_smtp.html) you may need to add a username and password if your SMTP server requires authentication.

Step 1:
Check WCMConfigService.properties file under /wcm/shared/app/config/wcmservices

Step 2:
Add defaultusername and defaultpassword. See example:

#SMTP Mail Setup
connect.connector.mailconnector = defaultsmtpserver, defaultfromaddress, defaultreplytoaddress, defaultusername, defaultpassword
connect.connector.mailconnector.defaultsmtpserver= mail.myserver.com
connect.connector.mailconnector.defaultfromaddress= chirag@myserver.com
connect.connector.mailconnector.defaultreplytoaddress= chirag@myserver.com

#Add these lines:
connect.connector.mailconnector.defaultusername= chirag@myserver.com
connect.connector.mailconnector.defaultpassword= mypassword

Step 3:
Restart IBM WebSphere Portal Server for the new settings to take effect.

Note: For the 6.1 server the config file should be under: was_profile_root/PortalServer/wcm/shared/app/config/wcmservices/

Building Multi-locale sites with Web Content Management

Hi Friends,

As you might be knowing, in my previous post I was talking about that we had a requirement of builiding multilingual portal application with IBM Workplace Web Content Managment, I came across a very nice article which helped us lot in converting our portal site to support for English (default) and Spanish.

Just wanted to share this with all who are going forward to build multilingual site with IBM Workplace Web Content Management. This link has a nice document which describes the best practice for applications supporting more than one language.

http://www.ibm.com/developerworks/lotus/documentation/webcontentmanagement/d-ls-multilocalesites/

Saturday, September 11, 2010

Tag to change locale from links on IBM WPS 6.0 Theme

Recently we had a requirement to enable portlet application to support multilingual. Initially we were supporting English language (en_US) but the new requirement was to have Spanish (es) support.

The requirement was when user visits the portlet application he should be able to toggle between English and Spanish. At a time only one of the links needs to displayed. The best place to put this link was on Theme level in banner.jspf.

I just wanted to share with you all the useful tag to switch the portal locale at a global level.
 
<portal-navigation:url command="ChangeLanguage">
 
This tag is used to change the active language in the navigational state in which the URL is generated.
The following code example uses this tag to change the language to Spanish:
 
<a href='<portal-navigation:url command="ChangeLanguage"><portal-navigation:urlParam name="locale" value="es"/></portal-navigation:url>'>En Espanol</a>