<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Extreme Portal</title><link>http://extremeportal.blogspot.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ExtremePortal" /><description>Technical articles on WebSphere Portal, Liferay Portal, JSR 286, JSR 168 Portlets, WSRP, WCM and new emerging technologies in Portal, Portlet....</description><language>en</language><managingEditor>noreply@blogger.com (Neeraj Sidhaye)</managingEditor><lastBuildDate>Sun, 29 Jan 2012 11:00:18 PST</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">123</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info uri="extremeportal" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:subtitle>Technical articles on WebSphere Portal, Liferay Portal, JSR 286, JSR 168 Portlets, WSRP, WCM and new emerging technologies in Portal, Portlet....</itunes:subtitle><feedburner:emailServiceId>ExtremePortal</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly></feedburner:browserFriendly><item><title>InterPortlet Communication - Best Practice Matrix</title><link>http://extremeportal.blogspot.com/2012/01/interportlet-communication-best.html</link><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Fri, 13 Jan 2012 06:04:11 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-7160277909936908801</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;I published &lt;b&gt;"&lt;a href="http://www-10.lotus.com/ldd/portalwiki.nsf/dx/InterPortlet_Communication-Best_Practices_Matrix" target="_blank"&gt;InterPortlet Communication - Best Practice Matrix&lt;/a&gt;&lt;/b&gt;" on IBM portal wiki.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;This IPC Matrix helps to choose best practice for various scenarios of IPC.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-7160277909936908801?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-13T19:34:11.119+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Persisting user navigational states in WPS 7</title><link>http://extremeportal.blogspot.com/2011/12/persisting-user-navigational-states-in.html</link><category>Navigational Sate</category><category>WPS 7</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Fri, 09 Dec 2011 20:13:27 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-2411298402200188789</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
You might have come across to situations where you would want WPS to persist user navigational states like&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Portlet states:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Normal&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Minimized&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Maximized&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Portlet modes:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; config&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; edit_defaults&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; edit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; view&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; help&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Page selection:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; The last page that was active before the user logged out.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With the persistent session state feature, portal users can resume and continue a previously interrupted working session at the same state where they left the session. When the user logs out or the session times out, the portal stores the current navigational state into the database.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Resuming the session state is only possible if either the portal theme login link or WebSphere Application Server TAI based authentication is used to login to the portal.&lt;br /&gt;
&lt;br /&gt;
Please have a look at detail article at &lt;a href="http://www-10.lotus.com/ldd/portalwiki.nsf/dx/Configuring_user_session_persistance_wp7" target="_blank"&gt;&lt;b&gt;Configuring user session persistance&lt;/b&gt; &lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-2411298402200188789?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-10T09:43:27.286+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>How to know what all objects are stored in session at any point of time</title><link>http://extremeportal.blogspot.com/2011/11/how-to-know-what-all-objects-are-stored.html</link><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Tue, 22 Nov 2011 07:20:26 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-5079538603324603325</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;You might want to know at any point of time that how many objects are stored in session along with their size. This would be most useful when you are analyzing&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;application performance or working on performance tuning area.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This would also be useful in debugging when your application is throwing java.io.NotSerializableException.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;There is a servlet called &lt;b&gt;com.ibm.ws.webcontainer.httpsession.SessionInspectServlet&lt;/b&gt; that ships with WAS located in &lt;b&gt;com.ibm.ws.webcontainer.jar&lt;/b&gt;. This jar is placed under &amp;lt;&lt;b&gt;WPS_ROOT&amp;gt;/AppServer/plugins/&lt;/b&gt;. &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;SessionInspectorServlet &amp;nbsp;can be used to list down what all objects are stored in session along with size of the objects.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;In order to use SessionInspectServlet, you would need to enable “Serving servlets by class name”, you can set this value in the &lt;b&gt;ibm-web-ext.xmi&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;By default this value is true, you can see sample ibm-web-ext.xmi file below and can see that serveServletsByClassnameEnabled value is true.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;webappext:WebAppExtension xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:webappext="webappext.xmi" xmi:id="WebAppExtension_1320397630802" reloadInterval="3" reloadingEnabled="true" additionalClassPath="" fileServingEnabled="true" directoryBrowsingEnabled="false" serveServletsByClassnameEnabled="true"&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;webApp href="WEB-INF/web.xml#WebApp_ID"/&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;/webappext:WebAppExtension&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;To list down session objects stored in session, you would required to hit below URL&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;http://localhost:10039/wps/&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;context-root&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;/SessionInspector/servlet/com.ibm.ws.webcontainer.httpsession.SessionInspectServlet&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;here, context root would be context root of your application. You can specify this while installing your WAR through portal admin console OR you can also find out this value inside application.xml located under&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;WPS_ROOT&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;/wp_profile/installedApps/&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;NODE&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;/&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;EAR NAME&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;/META-INF/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;You would see list of your session objects and their size as shown in the screen shot.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-DUte7CnoOoY/Tsu8vIhrDdI/AAAAAAAAGU4/Gsq_e078TEI/s1600/Session+Inspector.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://3.bp.blogspot.com/-DUte7CnoOoY/Tsu8vIhrDdI/AAAAAAAAGU4/Gsq_e078TEI/s320/Session+Inspector.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-5079538603324603325?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-22T20:50:26.362+05:30</app:edited><media:thumbnail url="http://3.bp.blogspot.com/-DUte7CnoOoY/Tsu8vIhrDdI/AAAAAAAAGU4/Gsq_e078TEI/s72-c/Session+Inspector.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>How to get HttpServletRequest and HttpServletResponse from portlet request</title><link>http://extremeportal.blogspot.com/2011/11/how-to-get-httpservletrequest-and.html</link><category>JSR 286</category><category>PortletRequest and HttpServletRequest</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Thu, 17 Nov 2011 07:01:20 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-413951826222661290</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;There are some scenario when you want to get httpServletRequest or httpServletReponse from portletRequest.&lt;br /&gt;&lt;br /&gt;IBM provides an utility class which gives you what you are looking for.&lt;br /&gt;&lt;br /&gt;Yes, there is a &lt;b&gt;PortletUtil &lt;/b&gt;class available in the &lt;b&gt;com.ibm.ws.portletcontainer.portlet&lt;/b&gt; package, through which you can directly get httpServletRequest, httpServletResponse, ServletContext and many&amp;nbsp; more servlet object you want.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Code to get HttpServletRequest from&amp;nbsp; portletRequest/renderRequest/actionRequest.&lt;br /&gt;&lt;br /&gt;HttpServletRequest httpServletRequest =&amp;nbsp; PortletUtils.getHttpServletRequest(renderRequest);&lt;br /&gt;&lt;br /&gt;There are couple of utility methods available in PortletUtil which&amp;nbsp; gives you ServletContext, ServletConfig, PortletWindow, PortletApplicationDefinition etc.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-413951826222661290?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:31:20.850+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>How to reset JSF Portlets to initial state</title><link>http://extremeportal.blogspot.com/2011/10/how-to-reset-jsf-portlets-to-initial.html</link><category>JSF Portlet</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Sat, 22 Oct 2011 07:56:11 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-7360459752093370800</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;For a JSF based portlet, if you have a scenario where a user is navigating between screens and that portlet is having 2 or 3 screens, if the user went to 3rd screen and he comes back and clicked on the link it is going to 3rd screen instead of 1st screen.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;To render 1st jsp from within portlet,we specify init parameter for first jsp in portlet.xml as follows&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;&amp;lt;init-param&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;com.ibm.faces.portlet.page.view&amp;lt;/name&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;/jsp/html/view/HelloView.jsp&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;&amp;lt;/init-param&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;Now in case, when you want to reset JSF Portlets to its initial view when user comes back,&lt;/span&gt;&lt;span style="font-size: small;"&gt; set "&lt;b&gt;com.ibm.faces.portlet.page.view&lt;/b&gt;" attributed to session.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;
&lt;span style="font-size: small;"&gt;&lt;b&gt;portletSession.setAttribute("com.ibm.faces.portlet.page.view", &amp;lt;path of jsp to render&amp;gt;);&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-7360459752093370800?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-22T20:26:11.110+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Stopping Portal, WAS without userid,password in the command line</title><link>http://extremeportal.blogspot.com/2011/06/stopping-portal-was-without.html</link><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Mon, 27 Jun 2011 23:49:58 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-4220553355385384712</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Stopping portal and WAS using command line includes user id and password as part of command. Below command holds good when security is enabled.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;code style="font-family: Verdana,sans-serif;"&gt;stopServer.sh server1 -username wasadmin -password wasadmin&lt;/code&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;This would cause a security issue as while typing command, anyone can see and come to know about userid and password.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;To overcome this kind of security breach, please follow below steps which would allow you to stop portal and WAS without providing user id and password in the command line.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;1) Find the file soap.client.props located under /WebSphere/AppServer/profiles/AppSrv01/properties&amp;nbsp;&amp;nbsp; and change the values of userid and password for the following properties&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;code&gt;com.ibm.SOAP.securityEnabled=true&lt;br /&gt;
com.ibm.SOAP.loginUserid=wasadmin&lt;br /&gt;
com.ibm.SOAP.loginPassword=wasadmin&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;the userid and password, will be the WAS admin'S userid and password.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;2) Now that you are done with writing userid and password in the file. You can now run the command without specifying userid and password in the command line BUT still we have got security issue, because whoever knows path of this file, could see the userid and password in the file.&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;To overcome this, we need to obfuscate the password property in the soap.client.props file. We can use PropFilePasswordEncoder.sh command to obfuscate password propery.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Use the below command to achieve this&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;code&gt;./PropFilePasswordEncoder.sh  /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/properties/soap.client.props  com.ibm.SOAP.loginPassword&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;Now, if you open the file in a text editor, you will find that password property is now obfuscated&lt;/span&gt;. &lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;3) Restart he portal server.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Now onwards, you won't need to specify userid and password in the command line for stopping Portal and WAS.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-4220553355385384712?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-28T12:19:58.715+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Identifying list of portlets on a page</title><link>http://extremeportal.blogspot.com/2011/06/identifying-list-of-portlets-on-page.html</link><category>WebSphere Portal</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Wed, 22 Jun 2011 07:57:17 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-8831391318433970944</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;There might be some scenarios where you want to get list of all the portlets on a portal page.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Following code snipped would be helpful for you to get list of portlets on a page.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;private void listPortletsOnPage(ContentModel model, RenderRequest request, RenderResponse response)&lt;/b&gt; &lt;b&gt;{&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ContentModel model = getContentModel(request, response)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Locator locator = model.getLocator();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectID oID = PortletURLHelper.getCurrentPage(request, response);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ContentPage cPage = (ContentPage)locator.findByID(oID);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PrintWriter out = response.getWriter();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; List allPortlets = getPortletsOnPage(model, cPage);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Iterator it = allPortlets.iterator();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while(it.hasNext()){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PortletWindow window = (PortletWindow)it.next();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; out.print("PortletWindow " + window.getObjectID() + "&lt;br /&gt;
");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (StateException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (NamingException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;}&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;private ContentModel getContentModel(RenderRequest renderRequest, RenderResponse renderResponse) {&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ContentModelProvider provider = (ContentModelProvider) psh.getPortletService(ContentModelProvider.class);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return provider.getContentModel(renderRequest, renderResponse);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (PortletServiceUnavailableException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ModelException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;}&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;public List getPortletsOnPage(final ContentModel aContentModel, final ContentPage aPage) {&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; List result = Collections.EMPTY_LIST;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; final LayoutModel aLayoutModel = aContentModel.getLayoutModel(aPage);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (aLayoutModel != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = new ArrayList();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; collector(aLayoutModel, aLayoutModel.getRoot(), result);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ModelException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-8831391318433970944?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-22T20:27:17.733+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Best practice of referencing resouces(css,img,js) in Portlet  JSP</title><link>http://extremeportal.blogspot.com/2011/05/best-practice-of-referencing.html</link><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Sun, 15 May 2011 09:34:03 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-3459067925489342885</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Any Portlet or j2ee Web application always include resources like css, images, js files.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;In a web application, you can directly refer these resources using relative urls, but for Portlet Application it is NOT a good practice to use relative urls for including these types of resources.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;For example:-&lt;/div&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&amp;lt;link rel="stylesheet" href="../css/styles.css" type="text/css" /&amp;gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;Works well in a WebApplication.&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;BUT, in a portlet application, this will be interpreted relative to the portal&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;url by the browser and thus will not point to the resource you&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;intend to embed&lt;/span&gt; &lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;in your markup. &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;So basically,&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;if the css and jsp are both present in a sub folder of the root&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;folder of your portlet application, It would be resolved by the browser&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;something like this&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;http://myserver/portalservlet-webapp-context+path/css/styles.css &lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;Which is not the case and you would like browser to request like this &lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;What you would like the browser to request is &lt;/pre&gt;&lt;div class="wikicode" style="font-family: Verdana,sans-serif;"&gt;&lt;pre&gt;&lt;span style="font-size: large;"&gt;http://myserver/myportlet-webapp-context/css/styles.css&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;So, in portlet you should be using absolute path including&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;the context path of your portlet app &lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div class="wikicode" style="font-family: Verdana,sans-serif;"&gt;&lt;pre&gt;&lt;span style="font-size: large;"&gt;&amp;lt;link rel="stylesheet"&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: large;"&gt;href="/&amp;lt;%=request.getContextPath()%&amp;gt;/css/styles.css"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: large;"&gt;type="text/css"/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-3459067925489342885?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-15T22:04:03.553+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>IBM Portal notification</title><link>http://extremeportal.blogspot.com/2011/03/ibm-portal-notification.html</link><category>WPS Concepts</category><category>IBM Portal Notification</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Mon, 14 Mar 2011 14:41:07 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-5491051535421380531</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Portal Notifications for IBM WebSphere Portal allows authenticated portal users to View and Send Messages to other users of the same Portal. E-mail notifications are sent to the personal email account of the recipient, along with an announcement to indicate the arrival of a new message.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Have a look at detailed article at &lt;a href="http://www-10.lotus.com/ldd/portalwiki.nsf/dx/IBM_WebSphere_Portal_Notification" target="_blank"&gt;&lt;b&gt;IBM Portal Notification&lt;/b&gt;&lt;/a&gt; on WebSphere Portal Wiki.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-5491051535421380531?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-15T03:11:07.845+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>JSF portlet file upload</title><link>http://extremeportal.blogspot.com/2011/03/jsf-portlet-file-upload.html</link><category>JSR 286</category><category>JSF Portlet</category><category>JSF portlet file upload</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Mon, 14 Mar 2011 07:40:41 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-1469466615811118064</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;File upload functionality is very common to most of the portlet/web applications.&lt;br /&gt;
In portlet, file upload is treated a bit different than usual web application file uploads.&lt;br /&gt;
If it is a non-jsf portlet, you might need to use any third party file upload component like &lt;a href="http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/portlet/package-summary.html"&gt;&lt;b&gt;Apache commons file upload portlet&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Here I am writing steps to implement file upload functionality in JSR JSF portlet.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1) JSP code&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &lt;b&gt;1.1)&lt;/b&gt; Declaring enctype attribute of form&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Form enctype attribute value should be set to multipart/form-data&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;lt;h:form styleClass="create-listing-form" enctype="multipart/form-data"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;&amp;nbsp; 1.2)&lt;/b&gt; &lt;b&gt;Component to browse file from file system&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;hx:fileupload id="logoUpload"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tabindex="26"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;hx:fileProp name="fileName" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;hx:fileProp name="contentType" /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/hx:fileupload&amp;gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2) JSF managed bean code&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;protected HtmlFileupload logoUpload;&amp;nbsp; // declare this as instance variable&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;2.1)&lt;/b&gt; Method to get HtmlFileUpload object for the uploaded file&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected HtmlFileupload getLogoUpload() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (logoUpload != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logoUpload = (HtmlFileupload) findComponentInRoot("logoUpload");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return logoUpload;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&lt;b&gt;2.2)&lt;/b&gt; UploadFile method to get file bytestream and process it further to store in DB or onto file system as per the requirement.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void uploadFile(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContentElement content = (ContentElement) getLogoUpload().getValue();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(content!=null){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
// further validation can be applied with the help of ContentElement object to check type of file(image,text,doc) or maximum upload size to be allowed&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content.getContentValue());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
// convert to inputStream to set as BinaryStream to CallableStatement object&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream inputStream = byteArrayInputStream;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // writing to another file on the file system&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File outputFilename = new File(&amp;lt;FilePath&amp;gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(&amp;lt;OutputFilename&amp;gt;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int data;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while((data=byteArrayInputStream.read())!=-1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char ch = (char)data;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufferedOutputStream.write(ch);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufferedOutputStream.flush();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufferedOutputStream.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byteArrayInputStream.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputStream.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-1469466615811118064?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-14T20:10:41.696+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Sample XML for deploying custom Themes and Skins</title><link>http://extremeportal.blogspot.com/2011/01/sample-xml-for-deploying-custom-themes.html</link><category>Themes and Skins</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Thu, 03 Mar 2011 14:43:54 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-3218780170745920380</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Custom Theme and Skins creation involves creation of WAR file and then importing theme xml so that portal should have your theme entry under Themes and Skins section of portal. Once it is done, you can then apply thems to portal pages.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;My first article on themes and skin was &lt;b&gt;&lt;a href="http://extremeportal.blogspot.com/2010/03/creating-custom-themes-and-skin-in.html" target="_blank"&gt;Creating custom Thems and Skins in WebSphere Portal&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;This article is second part to that because importing of theme xml comes after deployment of theme WAR&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;Use this below xml to import your theme into portal.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;P.S -&lt;/b&gt;&amp;nbsp; In below xml MyTheme referes to theme name which is actually a folder name under your theme project/&amp;lt;WebContent&amp;gt;/themes/html/MyTheme. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;request &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;xsi:noNamespaceSchemaLocation="PortalConfig_6.1.0.xsd"&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;type="update" create-oids="true"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;portal action="locate"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;!--&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;Sample for deploying themes and skins in an XML script. Note that this &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;created only the database entries;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;you still need to provide the rendering JSPs under the resource root &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;directories specified in the XML. &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;skin action="update" active="true" objectid="NoSkin" &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;uniquename="wps.skin.noSkin" resourceroot="NoSkin" &amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;localedata locale="en"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;title&amp;gt;NoSkin&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;description&amp;gt;A skin with no skin&amp;lt;/description&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;/localedata&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;/skin&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;theme action="update" active="true" defaultskinref="NoSkin" &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;uniquename="ibm.portal.theme.MyTheme" &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;resourceroot="MyTheme" &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;context-root="/MyTheme"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;localedata locale="en"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;title&amp;gt;MyTheme&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;/localedata&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;!--&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp;There's only one skin that can&amp;nbsp; be combined with this theme. &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;allowed-skin skin="NoSkin" update="set"/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;/theme&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;/portal&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;lt;/request&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-3218780170745920380?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-04T04:13:54.423+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>WebSphere Portal 7 and Spring 3.0 Portlet MVC Integration</title><link>http://extremeportal.blogspot.com/2011/01/websphere-portal-7-and-spring-30.html</link><category>Spring Portlet</category><category>WPS Concepts</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Sat, 15 Jan 2011 15:13:29 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-140141696795932980</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;I have found this article very useful at least for those who are going to start their development with Spring Portlet MVC and WebSphere Portal 7.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp;&lt;b&gt;&lt;a href="http://www.theserverside.com/tutorial/WebSphere-Portal-7-and-Spring-30-Portlet-MVC-Integration" target="_blank"&gt;WebSphere Portal 7 and Spring 3.0 Portlet MVC Integration&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-140141696795932980?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-16T04:43:29.379+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>Restricting public render parameter scope</title><link>http://extremeportal.blogspot.com/2011/01/restricting-public-render-parameter.html</link><category>JSR 286</category><category>WPS Concepts</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Sat, 08 Jan 2011 13:50:43 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-145356188518210902</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;JSR 286 has introduced a concept of Public Render Parameter for communication between portlets in same or different WAR.&lt;br /&gt;
Public render paramter declared in a portlet, are accessible for all the portlets across the portal.&lt;br /&gt;
But in some case you might want to restrict the scope of public render parameter.&lt;br /&gt;
&lt;br /&gt;
Let's take an example to understand this...&lt;br /&gt;
&lt;br /&gt;
You have got two pages on which you have each instance of Book List and Book Details portlet.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Book list portlets shows all the books available in the library and when  you select any book, Book Details portlet shows all the information  about the book,&lt;br /&gt;
like book availability, book author e.t.c.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
So you have these two portlets on two different pages say Page A and Page B.&lt;br /&gt;
&lt;br /&gt;
By defalut public render parameter are global, so if you select any book  from Book List portlet on page A, Book details portlet on Page A and  Page B will start showing same book details.&lt;br /&gt;
&lt;br /&gt;
In WebSphere Portal V6.1.x, you can control this behavior by limiting the sharing scope for public parameters to a page.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;To limit sharing of public render parameter&lt;/b&gt; to another instance of the  same portlet on other page, you can limit this scope by doing following:&lt;br /&gt;
Go to Edit page settings for page A and set &lt;b&gt;param.sharing.scope&lt;/b&gt; (under  Advanced options - I want to set parameters) to a non-empty value such  as PageAScope. &lt;br /&gt;
&lt;br /&gt;
Now Book Details portlet on Page A use their own shared values for their  declared render parameters, and it will not conflict with rendering  data of Book Details portlet on Page B.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-145356188518210902?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-09T03:20:43.330+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Enforcing SSL for a perticular portal page</title><link>http://extremeportal.blogspot.com/2010/12/enforcing-ssl-for-perticular-portal.html</link><category>WPS Concepts</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Fri, 31 Dec 2010 04:31:59 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-5303622881913771285</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Recently I have found a pretty good article on how to enforce a perticular portal page to be delivered using https.&lt;br /&gt;
&lt;br /&gt;
If you have similar kind of requriment, this article would be of great help.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;a href="http://www-10.lotus.com/ldd/portalwiki.nsf/dx/Enforcing_SSL_for_particular_Portal_pages" target="_blank"&gt; &lt;b&gt;Enforcing SSL for particular WebSphere Portal pages&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-5303622881913771285?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-31T18:01:59.504+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Controlling Portal pages visited history</title><link>http://extremeportal.blogspot.com/2010/12/controlling-portal-pages-visited.html</link><category>WPS Concepts</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Fri, 31 Dec 2010 04:24:22 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-6728296856677092586</guid><description>&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;History of Potal pages visited by users can be controlled by setting value of &lt;b&gt;keymanager.lru.size&lt;/b&gt; property in &lt;b&gt;StateManagerService&lt;/b&gt;.&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;This property actually indicates that navigation is affected between portal pages and not portlets.&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;u&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;As per IBM Info Center&lt;/span&gt;&lt;/u&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;"&lt;/b&gt;Use this parameter to specify the history expiration limit of portal pages visitedby users. This determines how far backwards users can at least navigate in therecent history of portal pages that they visited. The number that you specifydefines the minimum number of different pages selected by the user after whichthe portal can discard the render parameters of a page. (The decision whether therender parameters of the page are actually discarded depends on the expirationpolicy of the internal cache that stores the render parameters of those pages.) Ifthe user returns to a page after visiting the specified number of other pages and ifthe render parameters of that page have expired, the portal displays that page inits default state.&lt;b&gt;"&lt;/b&gt;&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Note&lt;/b&gt;: If this parameter is enabled, number of Render Parameters in a session cansomewhat be controlled. &lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;A typical setting would be &lt;b&gt;keymanager.lru.size&lt;/b&gt; &lt;b&gt;= 3&lt;/b&gt;.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-6728296856677092586?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-31T17:54:22.778+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>JSF portlet - multiple action execution</title><link>http://extremeportal.blogspot.com/2010/12/jsf-portlet-multiple-action-execution.html</link><category>JSF Portlet</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Sat, 25 Dec 2010 10:31:14 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-8571794570062613785</guid><description>&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;This feature is used by IBM WebSphere Portal to stop processing the same Action request twice (for example, browser Back button feature).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;wps.multiple.action.execution&lt;/b&gt; is a portlet initialization parameter that can be set in the portlet’s deployment descriptor (that is, portlet.xml).&lt;br /&gt;
&lt;br /&gt;
If this protection feature is left on (wps.multiple.action.execution=true), WebSphere Portal would treat a repeated Action URL as a Render URL with no repetition of portlet action, rather portlet would just be rendered.&lt;br /&gt;
This is achieved by storing executed Action results and state in a session to prevent the multiple actions.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-8571794570062613785?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-26T00:01:14.240+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Setting up SSO  between WebSphere Portal and Process server</title><link>http://extremeportal.blogspot.com/2010/12/setting-up-sso-between-wps-and.html</link><category>WebSphere Portal</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Fri, 17 Dec 2010 06:20:56 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-850685331290716993</guid><description>&lt;span style="font-family: Verdana,sans-serif;"&gt;Very good article on setting up SSO between WebSphere Portal and Process Server, below article would definitely help you.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www-10.lotus.com/ldd/portalwiki.nsf/dx/setting-up-single-sign-on-sso-between-ibm-websphere-portal-and-websphere-process-server" target="_blank"&gt;&lt;b&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Setting up SSO&amp;nbsp; between WPS and WebSphere Process server&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-850685331290716993?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-17T19:50:56.283+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>JSR 286 &lt;portlet:defineObjects/&gt; enhancements</title><link>http://extremeportal.blogspot.com/2010/11/jsr-286-enhancements.html</link><category>JSR 286</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Tue, 23 Nov 2010 01:56:52 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-9112002207974960121</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;JSR 168 &amp;lt;portlet:defineObjects/&amp;gt;, give access to following implicit objects in JSP&lt;br /&gt;
renderRequest, actionRequest, portletConfig&lt;br /&gt;
&lt;br /&gt;
JSR 286 &amp;lt;portlet:defineObjects/&amp;gt; has been enhanced in this area and gives you access to following implicit objects on jsp&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; renderRequest and renderResponse &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; resourceRequest and resourceResponse&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; actionRequest and actionResponse&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; eventRequest and eventResponse &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; portletConfig &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; portletSession (returns an existing session or null if no session exists)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; Map&amp;lt;String,Object&amp;gt; portletSessionScope (provides access to the portletSession attributes)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; portletPreferences (provides access to the portlet preferences)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; Map&amp;lt;String, String[]&amp;gt; portletPreferencesValues (provides access to the portlet preferences as a Map)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-9112002207974960121?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-23T15:26:52.315+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Anonymous user session - Best practice</title><link>http://extremeportal.blogspot.com/2010/11/anonymous-user-session-best-practice.html</link><category>JSR 286</category><category>Best Practices</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Fri, 19 Nov 2010 09:38:32 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-6298472778041334448</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;  You might have required to enable session for Anonymous user for some  business requirement and you might have done it by creating a custom  property  in portal configuration service called WP NavigatorService.&lt;br /&gt;
Creating a new custom property called public.session and value as true for WP NavigatorService.&lt;br /&gt;
This setting creates anonymous session for every user and for every portlet, which will definitely be a performance hit.&lt;br /&gt;
&lt;br /&gt;
Now you may think how it will be performance hit, let me explain in brief&lt;br /&gt;
If the portlet does not require a session for critical operation, then  perhaps any subfunctions within the portlet require the session can be  suppressed to anonymous users. &lt;br /&gt;
&lt;b&gt; This should be evaluated for each individual portlet.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
If request.getPortletSession() or request.getPortletSession(true) are  called when the user is not logged in and WebSphere Portal is not  configured to use a session for anonymous users, each request from each  client creates an extraneous PortletSession object that is lost and  consumes JVM memory. &lt;b&gt;This causes more frequent JVM garbage collection  and hurts overall WebSphere Portal performance.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To overcome this performance issue, we can make use of &lt;b&gt;JSR 286 new concept called Container Runtime Options.&lt;/b&gt;&lt;br /&gt;
With this concept, we can create &lt;b&gt;Anonymous user session for a perticular portlet.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
All you have to do is just add &amp;lt;container-runtime-option&amp;gt;  tag to portlet.xml for a specific portlet you want to enable anonymous user session.&lt;br /&gt;
com.ibm.portal.public.session is the parameter name and set value as true.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;b&gt; Example:-&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;container-runtime-option&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;name&amp;gt;com.ibm.portal.public.session&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;value&amp;gt;true&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/container-runtime-option&amp;gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-6298472778041334448?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-19T23:08:32.270+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>Pre Rendering WCM site</title><link>http://extremeportal.blogspot.com/2010/11/pre-rendering-wcm-site.html</link><category>WCM</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Mon, 15 Nov 2010 06:10:57 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-5299126350986659591</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;Pre Rendering WCM sites in your portal environment will improve performance drastically.&lt;br /&gt;
Recently I just did pre rendering of WCM content for our portal environment and performance improved a lot.&lt;br /&gt;
&lt;br /&gt;
I will briefly talk about Concepts, Limitations/Restrictions.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;For further information and detailed configuration, I would strongly recommend to go through the info center and perform configuration as per your business needs.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Concept:-&lt;/b&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Pre rendering allows you to cache your wcm content as static html files and save it to disk.&lt;br /&gt;
The pre rendered sites or static html can then be moved to web server and delivered to end users from web server.&lt;br /&gt;
It generates a static Web site as a set of HTML pages. Users requesting a page will get the pre-generated HTML page rather than a dynamic page from the Web Content Management connect servlet.&lt;br /&gt;
Web Content Management Caching, Servlet Caching (DynaCache), and pre-rendering are used to improve the performance of Workplace Web Content Management Web sites.&lt;br /&gt;
Although pre-rendering is the fastest option, its various limitations mean that most users will choose Web Content Management Caching or Servlet Caching over pre-rendering.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Limitations/Restrictions:-&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Sites, site areas, and content items cannot contain characters that are considered invalid in file names by the operating system on which you are pre-rendering. For example, on a machine running Windows, these characters are invalid: / \ : * ? " &amp;lt; &amp;gt; |.&lt;br /&gt;
&lt;br /&gt;
The pre-rendering feature cannot be used to pre-render JSP components and few more....&lt;br /&gt;
&lt;br /&gt;
Here are the info center article for the same,&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href="http://www.blogger.com/%20http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/index.jsp?topic=/com.ibm.wp.ent.doc/wcm/wcm_config_delivery_pre-rendered_enable.html" target="_blank"&gt; Pre-Rendered WCM Sites&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/index.jsp?topic=/com.ibm.wp.ent.doc/wcm/wcm_config_delivery_pre-rendered_enable.html" target="_blank"&gt;Configuring Pre-Rendering&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.blogger.com/%20http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/index.jsp?topic=/com.ibm.wp.ent.doc/wcm/wcm_config_delivery_pre-rendered_enable.html" target="_blank"&gt;&lt;b&gt;Accessing the pre-rendered site&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-5299126350986659591?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-15T19:40:57.352+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>EPhox EditLive Customization - Update</title><link>http://extremeportal.blogspot.com/2010/11/ephox-editlive-customization-update.html</link><category>WCM</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Sat, 13 Nov 2010 15:54:59 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-1663503001300703020</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;&lt;a href="http://www-10.lotus.com/ldd/portalwiki.nsf/dx/Ephox_EditLive_Integration_in_WCM_Authoring_Template_Customization" target="_blank"&gt;Latest article on EPhox Edit Live&lt;/a&gt;&lt;/b&gt; might be useful for those who are using EditLive tool for managening their WCM contents in their Portal environment.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-1663503001300703020?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-14T05:24:59.151+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>WebSphere Portal 7 - Product documentation</title><link>http://extremeportal.blogspot.com/2010/11/websphere-portal-7-product.html</link><category>WebSphere Portal 7 Product documentation</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Sat, 13 Nov 2010 10:32:38 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-5827599057413775042</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;All about &lt;b&gt;&lt;a href="http://www-10.lotus.com/ldd/portalwiki.nsf/xpViewCategories.xsp?lookupName=IBM%20WebSphere%20Portal%207%20Product%20Documentation" target="_blank"&gt;WPS 7 Product documentaion&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-5827599057413775042?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-14T00:02:38.053+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Enabling WebSphere Portal run time log</title><link>http://extremeportal.blogspot.com/2010/11/enabling-websphere-portal-run-time-log.html</link><category>WebSphere Portal</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Sat, 13 Nov 2010 13:35:54 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-3838156027011442193</guid><description>&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;/span&gt; &lt;span style="font-family: Verdana,sans-serif;"&gt;To debug any portal or portlet related issues, you might want to get into detailed log analysis of your portal environment.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt; By enabling Portal run time logs, you can debug issue with Portlet  Container, Portlet Environment, Portlet Load Monitoring, Deployment and  of various types.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana,sans-serif;"&gt; Have a look various logs level options, you can turn on for your portal environment.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://publib.boulder.ibm.com/infocenter/wpdoc/v6r1/index.jsp?topic=/com.ibm.wp.ent.doc_v615/trouble/run_logs.html" target="_blank"&gt;&lt;b&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt; Enabling WebSphere Portal Run time logs&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-3838156027011442193?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-14T03:05:54.591+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Registry Services, Cache Manager service concepts and difference with portal performance views</title><link>http://extremeportal.blogspot.com/2010/11/registry-services-cache-manager-service.html</link><category>Portlet Service</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Sat, 13 Nov 2010 13:36:47 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-1808620807066832878</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;Portlet services concepts that might be of your interest and specially  when you are tuning your portal.&lt;br /&gt;
I am summarizing the concepts in brief with this post&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt; Registry service&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Websphere Portal maintains information about many of portal resources in  it's database.&lt;br /&gt;
To get the faster access of these resource information, they are being  replicated into memory.&lt;br /&gt;
Registry service is responsible for replicating these resources from  database into memory for faster access.&lt;br /&gt;
This replication happens periodically over a amount of time ( in seconds  ) which can configured by configuring reload time property of registry  service.&lt;br /&gt;
In a production environment we expect this type of information changes  very infrequently, so we should use very long reload times for each type  of data it is managing to get&amp;nbsp; better performance.&lt;br /&gt;
One of the portal performance tuning says, increase reload time for  registry service in a production environment.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt; Cache manager service&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Cache manager service also used to cache data but in a very wide variety  in memory.&lt;br /&gt;
These caches are somewhat similar to the registry service maintained by  the registry service.&lt;br /&gt;
&lt;b&gt; The key difference between Registry service and cache manager service  are&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;A)&lt;/b&gt; The information stored in cache manager service is more dynamic in  nature as compared to the information stored in registry service.&lt;b&gt;&lt;br /&gt;
B)&lt;/b&gt; Cache manager service has a limited size and new entries will be  discarded when cache becomes full.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;The size is not limited in registry service. This contain all entries  of a specific data types.&lt;b&gt;&lt;br /&gt;
C)&lt;/b&gt; For each entry in cache, expiry times are managed individually for  entries managed by cache manager service.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;In case of registry service, when reload time is reached for a  registry, the&amp;nbsp; entries contents of that registry are reloaded.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-1808620807066832878?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-14T03:06:47.164+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>JSF JSR portlet - calling JSF bean attribute within a JSTL tag</title><link>http://extremeportal.blogspot.com/2010/10/jsf-jsr-portlet-calling-jsf-bean.html</link><category>JSF Portlet</category><author>noreply@blogger.com (Neeraj Sidhaye)</author><pubDate>Sat, 13 Nov 2010 13:37:57 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-14898252.post-2763251341180455189</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;Recently I have expericened that when you call a JSF bean attribute from within a JSTL tag specially inside a conditional tag like &lt;b&gt;&amp;lt;c:when... &amp;gt;&lt;/b&gt; , doesn't work at first and will not show you updated value of a bean attribute.&lt;br /&gt;
When you do a page refresh then jsf bean attribute updated value will be shown when invoked inside a jstl tag.&lt;br /&gt;
&lt;br /&gt;
So be cautious when calling jsf bean attribute tag from within a jstl tag.&lt;br /&gt;
&lt;br /&gt;
Let me explain in here &lt;b&gt;with an example&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
When jsf page renders, jsf backing bean getters are called. Now if any of the getter are being called from a jstl tag, then this getter will not give you updated value of bean attribute.&lt;br /&gt;
&lt;br /&gt;
if you have code like this&lt;br /&gt;
&lt;b&gt;&amp;lt;c:when test="${customerBean.fname}"&amp;gt;&lt;/b&gt;, in this case, when your page renders, this customerBean.fname will not give you the udpated value and when you do a page refresh then this getter will display the updated value of fname.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;lt;c:choose&amp;gt;&lt;br /&gt;
&amp;lt;c:when test="${customerBean.fname=='Neeraj'}"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;c:out value="hello"/&amp;gt;&lt;br /&gt;
&amp;lt;/c:when&amp;gt;&lt;br /&gt;
&amp;lt;c:otherwise&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;c:out value="Bye"/&amp;gt;&lt;br /&gt;
&amp;lt;/c:otherwise&amp;gt;&lt;br /&gt;
&amp;lt;/c:choose&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Set some default value of bean attribute fname to "MyName" and on run time assign fname value to "Neeraj".&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In above lines of code, with your first page render, you will find result as Bye and when do a page refresh you will see result as hello.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution to this kind of scenario is to use JSF panel group tag with rendered attribute as shown below.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;lt;h:panelGroup rendered="#{customerBean.fname=='Neeraj'}"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;c:out value="Hello"&amp;gt;&lt;br /&gt;
&amp;lt;/h:panelGroup&amp;gt;&lt;br /&gt;
&amp;lt;h:panelGroup rendered="#{customerBean.fname!='Neeraj'}"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;c:out value="Bye"&amp;gt;&lt;br /&gt;
&amp;lt;/h:panelGroup&amp;gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14898252-2763251341180455189?l=extremeportal.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-14T03:07:57.368+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><media:rating>nonadult</media:rating></channel></rss>

