Friday, May 21, 2010

How to attach default skin to Theme using xmlAccess

Today, I encountered a really interesting problem reported by my ex-colleague. While working on the portal, accidentally he has removed skins which are attached to default theme of the portal. Now this has resulted in him not able log in to the portal.This is due to no portlet display because of the skin being deleted.
When he tried log in using direct portal url which bypasses the log in portlet he found out the pages are there but portlets are not rendered while clicked on those pages. He was not even get back to the default settings using themes and skins page from the administration section.

Solution to this problem is getting back the default settings for the themes/skins using xmlAccess.
To resolve this we followed below steps.

1. We exported the complete portal configuration using xmlAccess. For this we have used sample ExportRelease.xml which comes with default portal installation. This can be found under [Portal_server_root]/doc/xml-samples. Here is a command to do that

./xmlaccess.bat -in C:/Program Files/IBM/WebSphere/PortalServer/doc/xml-samples/ExportRelease.xml -user wpsadmin -password wpsadmin -url http://localhost:10038/wps/config -out wpsserver_config.xml

2. Open the exported file, which in this case wpsserver_config.xml and find the entry which starts with theme action="update" active="true" default="true". Add a parameter defaultskinref="K_NO2UF4I1186E1026H4BLVI00E6" to it. Here value for the defaultskinref is the ID of the skin which is deployed in your environment. This will be a default skin to your theme. You can fine skins in the same xml file. Find using skin action="update" text.

3. Once updated and saved, import this xml file to your portal server using xmlAccess. Here is a command for it.

xmlaccess.bat -in C:/updatedXML/wpsserver_config.xml -user wpsadmin -password wpsadmin -url http://localhost:10038/wps/config

That's it. We are able to access portal as it was before the problem. :)

Sunday, May 16, 2010

A new Kid on the block - JBOSS GateIn

The best of exo and JBOSS portals has arrived as they called it : JBOSS GateIn. Have a look at it

http://www.jboss.org/gatein/gallery.html

Friday, May 14, 2010

A First Look at IBM's WebSphere Portal Server 7

I just got this alert about IBM Websphere Portal 7 Beta, I thought I should share it with you all.

http://www.theserverside.com/report/Evaluating-WebSphere-Portal-Server-7-A-journey-Into-the-WPS-Unknown

Tuesday, May 11, 2010

How to improve performance of your WCM server

Well, it's been quite hectic last few weeks for me. Engaged in fine tuning our production environment with remote WCM content rendering. During this task I was going through many documents on performance improvement. I have jotted down few points here for ease.

Application server tinning
---------------------------
Here you need to set the min and max value for the following parameters
Web Container Thread Pool - 60/60
Data source connection Pool - JCRDB - 10/150

Cache Manager Service tuning
------------------------------
Open the CacheManagerService.properties file and modify the following values.

cacheinstance.com.ibm.workplace.searchmenu.helper.SearchMenuCacheHelper.size 5000
cacheinstance.com.ibm.wps.ac.ContainedRolesCache.size 500
cacheinstance.com.ibm.wps.ac.AccessControlUserContextCache.size 5000
cacheinstance.com.ibm.wps.ac.ApplicationRolesForPrincipalCache.size 12500
cacheinstance.com.ibm.wps.ac.AccessControlUserContextCache.lifetime 10800
cacheinstance.com.ibm.wps.ac.ExplicitEntitlementsCache.size 500
cacheinstance.com.ibm.wps.ac.ExplicitEntitlementsCache.ICM_CONTENT.size 12000
cacheinstance.com.ibm.wps.ac.ExplicitEntitlementsCache.VIRTUAL.size 500
cacheinstance.com.ibm.wps.ac.ProtectedResourceCache.size 12500
cacheinstance.com.ibm.wps.ac.ExternalOIDCache.size 12000
cacheinstance.com.ibm.wps.ac.AccessControlUserContextCache.lifetime 10800
cacheinstance.com.ibm.wps.ac.RolesCache.size 7500
cacheinstance.com.ibm.wps.ac.groupmanagement.NestedGroupCache.size 1200
cacheinstance.com.ibm.wps.datastore.pageinstance.DerivationCache.size 250
cacheinstance.com.ibm.wps.datastore.pageinstance.OIDCache.size 250
cacheinstance.com.ibm.wps.datastore.services.Identification.SerializedOidString.cache.size 500
cacheinstance.com.ibm.wps.model.content.impl.ResourceCache.size 500
cacheinstance.com.ibm.wps.model.content.impl.TopologyCache.size 500
cacheinstance.com.ibm.wps.pe.portletentity.size 250
cacheinstance.com.ibm.wps.services.cache.cachedstate.CachedStateServiceSession
Bound.cache.size 250
cacheinstance.com.ibm.wps.ac.ApplicationRoleChildrenCache.size 500
cacheinstance.com.ibm.wps.ac.ApplicationRoleDescriptorCache.size 500
cacheinstance.com.ibm.wps.ac.ApplicationRoleOIDCache.size 500
cacheinstance.com.ibm.wps.ac.ChildEntitlementsCache.size 500
cacheinstance.com.ibm.wps.ac.ExplicitEntitlementsCache.APPLICATION_ROLE.size 500
cacheinstance.com.ibm.wps.policy.services.PolicyCacheManager.lifetime 28800
cacheinstance.com.ibm.wps.model.content.impl.ResourceCache.lifetime 14400

Navigation Service Tuning
--------------------------
Open the NavigatorService.properties file and enable the public session required for rendering portlets on anonymous pages.

public.session = true

WCM object Cache settings
---------------------------
abspath 8000
abspathreverse 8000
processing 10000
session 6000
menu 500
nav 500
strategy 8000
global 100
module 100

WCM Configuration Service
---------------------------
Enable the user cache

Find the WCMConfigService.properties file under:
/PortalServer/wcm/shared/app/config/wcmservices
Set user.cache=true


Monday, April 19, 2010

How to create empty virtual portal using configuration Task

This post is more in continuation of my last blog entry regarding changing host name for your existing virtual portal. Fulfilling this task requires you to create an empty virtual portal as mentioned in a separate step.

Here is how you can create virtual portal with the help of configuration task create-virtual-portal.

1. Back up wkplc.properties file under
/WebSphere/wp_profile/ConfigEngine/properties folder.

2. Modify it for the following configuration properties and save.

# Title of the Virtual Portal
VirtualPortalTitle=
# Realm of the Virtual Portal
VirtualPortalRealm=
# Hostname of the Virtual Portal.
If you set the hostname, the portal sets the hostname, and the portal
parameter context is ignored.

VirtualPortalHostName=
# Context of the Virtual Portal
VirtualPortalContext=
# File which contains language specific information for the Virtual Portal
VirtualPortalNlsFile=
# VirtualPortalObjectId: ObjectId of the Virtual Portal
# The ObjectId is needed to modify, delete Virtual Portals and
# can be obtained by running task list-all-virtual-portals
# Note: Do not delete the default Virtual Portal (ObjectId ends with _0)
VirtualPortalObjectId=

3. Run the following command to create an empty virtual portal using above mentioned parameters.
./ConfigEngine.sh create-virtual-portal

4.
Execute the ./ConfigEngine.sh list-all-virtual-portals task to make sure that the virtual portal is created on the target environment.

5. You can access virtual portal through http://localhost:10040/wps/portal/ URL. You will get a blank page with message "Error 404: There is no content available."

In my next blog I will show you how you can populate empty virtual portal.

Thursday, April 15, 2010

Using a new host name for an existing virtual portal

Currently while working on my project I encountered an issue as a result of upgrading portal to 6.1.0.3.
The issue was regarding virtual portal that I created before an upgrade and assigned "Host Name" parameter to it. To troubleshoot the issue I had to change the "Host Name" value, in fact needed to remove it. Anyone played with Virtual portal might have got that this is not possible by just editing the virtual portal settings using Administrative portlet. You can not modify this entry after you assigned it. I have gone through the infocenter and found that this is know limitation for virtual portal and one has to follow below mentioned series of steps to achieve this task.

1. Export the content of your existing virtual portal using xmlAccess interface.

[Portal_server_root]/bin $ ./xmlaccess.sh -user admin -password secrete -url http://hostname:port/wps/config/virtual_portal_context -in /opt/IBM/WebSphere/PortalServer/doc/xml-samples/Export.xml -out result.xml

2. Delete existing virtual portal using manage virutal portal portlet.


3. Clean up any references to the deleted virtual portal by using the Task.xml of xmlAccess.

./xmlaccess.sh -user admin -password secrete -url http://hostname:port/wps/config -in /opt/IBM/WebSphere/PortalServer/doc/xml-samples/Task.xml -out result_cleanup.xml

4. Create a new empty virtual portal by running configuration task
create-virtual-portal. Use the context of the deleted virtual portal and do not provide any host name parameter value.

5. Import the contents of the original virtual portal to the new virtual portal using xmlAccess interface.

./xmlaccess.sh -user admin-password secrete -url http://hostname:port/wps/config/New_virtual_Portal_Context -in /opt/IBM/WebSphere/PortalServer/bin/result.xml -out result_import_VP.xml


Now you are ready to access your virtual portal :). Hope this helps the community in some way.


Saturday, April 10, 2010

How to remove maximize and minimize links in the Portlet context menu

In certain cases it is an desired behavior to disable the minimize and maximize functionality of portlets in IBM WebSphere Portal. you can achieve this behavior by following the simple step mentioned here.

1. Take a backup of portletContextMenu.jsp file from your custom theme war file. It can be loacated at
(WarFileName)/themes/html/Portal folder, where (WarFileName)
is the name of your web application containing your themes.

2. Open the portletContextMenu.jsp file and search for the following elements for the minimize and maximize links. Remove the following two "c-rt:if" elements:



3. Save the modified file in your web application and redeploy the web application. Pages with your custom theme applied will now not render any minimize and maximize links in the portlet context menu.