"The current view cannot be displayed"
&
Errors received when starting the application:
************************************************************************
00000888 RegistryFacto W
com.ibm.wps.caf.config.RegistryFactory getPluginRegistry plugin added twice
00000888 RegistryFacto W
com.ibm.wps.caf.config.RegistryFactory getPluginRegistry <Null Message>
java.lang.IllegalStateException: The
plugin com.ibm.websphere.personalization.ui is not enabled
WebSphere\PortalServe\pzn\v6.0\publish>pznload.bat
--serverUrl https://wpsupport.xxx.xxx.xxx:10035/wps/pznpublish/pznpublishtarget
--username wpsadmin --password xxxxxx c:\rule\SampleRule.nodes
Publishing file: 'c:\rule\SampleRule.nodes'
Server url: 'https://wpsupport.xxx.xxx.xxx:10035/wps/pznpublish/pznpublishtarget'
Destination workspace: 'The default workspace for rules on the target server.'
Destination path: '/'
Published objects will only overwrite existing objects
Publish started [datetime] Connecting to the publish server
datetime com.ibm.websphere.personalization.publish.command.AbstractPublishExecutor execute
WARNING: could not send the request data
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Certificate not Trusted
at com.ibm.jsse2.bx.a(Unknown Source)
at com.ibm.jsse2.by.a(Unknown Source)
at com.ibm.jsse2.by.a(Unknown Source)
at com.ibm.jsse2.w.a(Unknown Source)
at com.ibm.jsse2.w.a(Unknown Source)
at com.ibm.jsse2.v.a(Unknown Source)
at com.ibm.jsse2.by.a(Unknown Source)
at com.ibm.jsse2.by.l(Unknown Source)
at com.ibm.jsse2.by.startHandshake(Unknown Source)
at com.ibm.net.ssl.www.protocol.https.b.o(Unknown Source)
at com.ibm.net.ssl.www.protocol.https.q.connect(Unknown Source)
at com.ibm.net.ssl.www.protocol.https.t.connect(Unknown Source)
at com.ibm.websphere.personalization.servlet.util.HttpUrlConnectionWriter.initialize(HttpUrlConnectionWriter.java:121)
at com.ibm.websphere.personalization.servlet.util.HttpUrlConnectionWriter.close(HttpUrlConnectionWriter.java:110)
at com.ibm.websphere.personalization.publish.command.AbstractPublishExecutor.execute(AbstractPublishExecutor.java:112)
at com.ibm.websphere.personalization.publish.task.LoadFromFileSystemTask.run(LoadFromFileSystemTask.java:89)
at com.ibm.websphere.personalization.publish.PznLoad.main(PznLoad.java:60)
Caused by: java.security.cert.CertificateException: Certificate not Trusted
at com.ibm.jsse.bi.a(Unknown Source)
at com.ibm.jsse.bi.checkServerTrusted(Unknown Source)
at com.ibm.jsse2.ba.checkServerTrusted(Unknown Source)
... 14 more
Publish failed [datetime] The publish job could not be started: Unable to communicate with the remote server
\java\jre\lib\security\cacerts. Use the IKeyman utility in WebSphere Application Server to extract the WAS certificates into cacerts and rerun the task. Please refer to WebSphere Application Server Infocenter to extract/import certificates.
Also, please note you have to extract the certificate in the target/publish server and import in the node, where you are running the task.
pznload script fails with java.io.IOException: HTTPS hostname wrong exception
This error occurs when the serverUrl is configured to utilize SSL.
Symptom:
WebSphere\PortalServer\pzn\v6.0\publish>pznload.bat
--serverUrl https://wpsupport.xxx.xxx.xxx:10035/wps/pznpublish/pznpublishtarget
--username wpsadmin --password xxxxx c:\rule\SampleRule.nodes
Publishing file: 'c:\rule\SampleRule.nodes'
Server url: 'https://wpsupport.xxx.xxx.xxx:10035/wps/pznpublish/pznpublishtarget'
Destination workspace: 'The default workspace for rules on the target server.'
Destination path: '/'
Published objects will only overwrite existing objects
Publish started [datetime] Connecting to the publish server
datetime com.ibm.websphere.personalization.publish.command.AbstractPublishExecutor execute
WARNING: could not send the request data
java.io.IOException: HTTPS hostname wrong: should be <wpsupport.xxx.xxx.xxx>
at com.ibm.net.ssl.www.protocol.https.b.b(Unknown Source)
at com.ibm.net.ssl.www.protocol.https.b.o(Unknown Source)
at com.ibm.net.ssl.www.protocol.https.q.connect(Unknown Source)
at com.ibm.net.ssl.www.protocol.https.t.connect(Unknown Source)
at com.ibm.websphere.personalization.servlet.util.HttpUrlConnectionWriter.initialize(HttpUrlConnectionWriter.java:121)
at com.ibm.websphere.personalization.servlet.util.HttpUrlConnectionWriter.close(HttpUrlConnectionWriter.java:110)
at com.ibm.websphere.personalization.publish.command.AbstractPublishExecutor.execute(AbstractPublishExecutor.java:112)
at com.ibm.websphere.personalization.publish.task.LoadFromFileSystemTask.run(LoadFromFileSystemTask.java:89)
at com.ibm.websphere.personalization.publish.PznLoad.main(PznLoad.java:60)
Publish failed [datetime] The publish job could not be started: Unable to communicate with the remote serverWebSphere\PortalServer\pzn\v6.0\publish>
- Ensure WebSphere Application Server (WAS) on the target node is configured to use SSL.
- Ensure the certificate has the same common name as the hostname.
NOTE: If you are using the default certificates that is shipped with WebSphere Application Server, then the common name for this host is "jserver: and you will receive the above error.
If you need assistance with configuring the certificates in WebSphere Application Server (WAS), please open a PMR with WAS Support.
Is it possible to publish security with personalization rules?
Since personalization rules are not part of the core portal artifacts it is not possible to export these rules using xmlaccess which could potentially include the PAC info.
Can Personalization Publish process be automated?
Unfortunately the entire process cannot be automated.
In order to publish the rules to the target environment there are 2 ways
1. Using the Personalization Navigator portlet, Use the Publish feature and publish the rules to the target server.
2. Using Command Line publish - This is a 2 step process. First, you need to export the rules and Second, you can use the pznload script to publish the rules to the target server.
If you want to export the entire workspace, then you need to select the workspace and then click on 'More Actions' -> Export. This will export ALL the Personalization Artifacts.
Unable to publish the rules using a custom port and firewall enabled.
Ensure the port that is being used for publishing is opened through the firewall.
When publishing to a server with a different username and password than the source, the following error occurs:
EJPVP20003E: The publish job could not be started: 'The username or password you specified was not valid'
This causes the publish action to fail.
Have the two servers to use the same username and passwords.
Troubleshooting common Visibility rule Issues
Administrator is not able to attach any visibility rules to the portal page
Note: This issue was reported on PZN 6.1.0.1; however it's believed to exist in version 6.0 as well.
The log shows the following error:
0000005d ActionManager W com.ibm.wps.state.accessors.action.manager.ActionManagerImpl internalExecuteAction id = E::fL75640004 is invalid.
0000005d WPActionPhase W com.ibm.wps.engine.phases.WPActionPhase processPortlets EJPEI0169E:
Cannot execute the received action com.ibm.wps.engine.commands.LegacyActionDispatcher@788c788c due to a
security violation. The assigned action ID E::fL75640004 is invalid
Install PK82601. ( Please open a PMR with IBM Support to obtain this ifix )
Visibility Rules are not called / invoked by Portal Engine
Collect a trace with tracestring com.ibm.websphere.personalization.*=all. If there are no entries in the trace for com.ibm.websphere.personalization classes, the pzn rules are not being invoked by the portal engine.
Find the resources.xml that contains
Possible locations for the file:
wp_profile/config/cells//nodes//servers/WebSphere_Portal/resources.xml
wp_profile/config/clusters
Check if this config property is set:
content.topology.dynamic=false
You can remove this property completely from the file since the default value is true.
The property content.topology.dynamic controls if the Portal dynamic content model is enabled or not. The dynamic content model is the plug point for visibility rules. If it is disabled the rules will not be executed.
Does Visibility rules support Anonymous users?
No. Please refer to technote –
(Visibility Rules are not applicable to Portal Anonymous Users)
http://www-01.ibm.com/support/docview.wss?uid=swg21259061
Attributes set in the session from one portlet are not available for visibility rules on another portlet ?
Attributes that are set in the session is available to visibility rule if it is in the same portlet or the scope is set to application.
Visibility rules are not getting re-executed or somehow retaining the previous state for that session even if we refresh the page many times.
Install PK67945 (Visibility rule cache does not always invalidate when cleared. ). Please open a PMR with IBM Support to obtain this ifix.
Troubleshooting common Caching Issues
Is there a way in which we can invalidate cache for a particular Application object and Resource collection on demand through portlets ?
Yes, If you are using the Application object in a visibility rule then disabling the visibility rule cache should address this issue.
These are the methods that you could use to invalidate the entire visibility rule cache or a particular rule within the visibility rule cache
com.ibm.websphere.personalization.transformation.PznTransformationModel.
invalidate(request, rulename)
Where:
-request is the PortletRequest and
-ruleName is a String relative to the Personalization Workspace. ( RULESWORKSPACE).
public static void invalidate(HttpServletRequest req) - Invalidates all visibility rule caching for the current user
public static void invalidate(HttpServletRequest req, String rule) -
Invalidates visibility cache for the rule specified for the current user
You might need to programmatically flush the Personalization cache, for example when a resource is updated outside of Personalization rules through some other application. A programming interface is provided to flush the cache. Since the timeout interval for the cache can be specified in the PersonalizationService.properties file, in many cases it may be adequate to wait for the cache timeout before updates are seen.
The class com.ibm.websphere.personalization.resources.cache.CacheManager can be used to invalidate the cache for a particular resource, a particular resource collection, or the entire cache. Personalization uses this class internally to flush the cache when updates occur.
Flushing the cache for a particular resource may require that all cached queries be flushed. Flushing the cache on a collection may flush the cache for all collections using the same dynamic cache map. When the application frequently flushes the cache for a particular collection, isolating that collection in its own cache map through the use of the ruleEngine.cache.jndiName.resourceCollectionName property will result in better cache utilization.
Caching occurs before any rule exits are called.
For more information about using the DistributedMap and DistributedObjectCache interfaces for the dynamic cache, refer to the IBM WebSphere Application Server Information Center.
http://publib.boulder.ibm.com/infocenter/wcmdoc/v6r0/index.jsp?topic=/com.ibm.lotus.wcm.doc/pzn/pzn_resource_cache.html
Does Caching need to be disabled at the master level in order to disable any particular resource collection?
You don't have to disable the master level caching at rulesEngine.cache.enabled = false as it will cause performance impact.
A sample is as follows
rulesEngine.cache.enabled./.personalization/collections/ibmpzn\:wcmWebContentCollection=true
rulesEngine.cache.timeout./.personalization/collections/ibmpzn\:wcmWebContentCollection=1800
rulesEngine.cache.jndiName./.personalization/collections/ibmpzn\:wcmWebContentCollection=services/cache/distributedmap
rulesEngine.cache.priority./.personalization/collections/ibmpzn\:wcmWebContentCollection=1
rulesEngine.cache.maxEnumSize./.personalization/collections/ibmpzn\:wcmWebContentCollection=250
The resource collection that is cached is wcmWebContentCollection and it is being cached under the default distributedMap dynacache instance
Another good resource is
(Page visibility rules and unreachable Search results)
http://www-10.lotus.com/ldd/portalwiki.nsf/dx/page-visibility-rules-and-
unreachable-search-results
We have a scenario in which data fetched by the resource collection is liable to change at runtime within the same session and same goes for the application object as well. What is the best practice to be followed with respect to performance without Compromising the functionality ?
You could always invalidate the cache for a particular rule.
com.ibm.websphere.personalization.resources.cache.CacheManager can be used to invalidate the cache for a particular resource, a particular resource collection, or the entire cache. Personalization uses this class internally to flush the cache when updates occur.
Are the personalization caches in Portal 6.x based on something other than Dynacache?
Personalization cache is stored in dynacache.
Are there any tools to see if they are used other than performance testing after changing the configuration file?
Its an object cache, so you need the extended cache monitor to view the cache.
http://www.ibm.com/developerworks/websphere/downloads/cache_monitor.html?S_TACT=105AGX10&S_CMP=ART
The PersonalizationService.properties file contains the JNDI name for the dynacache that is used by Personalization.
Can we set the personalization visibility rule to a mode like NOT_SHARED for the Dynacache implementation? If so, how is this set and should it be set?
Visibility rules cache is per session, so that does not use dynacache.
The visibility rules and personalization engine gets fired only once at the time of login. It should be fired every time the user goes to the page on which they have applied visibility rules.
Disable visibility rule caching by setting the following property to false in PersonalizationService.properties and restart the server.
rulesEngine.attributeBasedAdmin.enableCaching=false
For more information please refer to the following articles:
http://www-10.lotus.com/ldd/portalwiki.nsf/dx/personalization-visibility-
http://www-10.lotus.com/ldd/portalwiki.nsf/dx/page-visibility-rules-and-unreachable-search-results
Troubleshooting common Application object Issues
java.lang.ClassNotFoundException: int is seen in the SystemOut.log while executing a visibility rule that uses an Application object.
The ClassNotfoundException is being caused by the use of an application object that is of type int. Personalization supports only java classes, thus the customer needs to change their application object to Integer.
How to get the sessionID off the RequestContext object that is passed to the init() method in the ApplicationObject?
Call a method getRequestObject(). This is implemented through com.ibm.websphere.personalization.context.PersonalizationContext.
That will return a com.ibm.websphere.personalization.PznRequestObjectInterface which can be used to access various attributes.
If the interface is an Http type (com.ibm.websphere.personalization.PznHttpRequestObjectInterface), you should call getServletRequest.
If the type is portlet (com.ibm.websphere.personalization.PznPortletRequestObjectInterface), then you will need to call getPortletRequest.
In the ApplicationObject class there is public void init(RequestContext context) method and
the com.ibm.websphere.personalization.RequestContext object. How do we access the PortletRequest object and from there the User object.
If you need to access an attribute on the user in a rule, you could create a condition in the rule to access the included portal user collection.
If it’s necessary to access the user outside of the included portal user collection to do some processing on that value, then the user object can be accessed from the RequestContext object by calling get("pzn.user./.personalization/collections/ibmpzn:wpsUser")
There is no public API way to access the underlying PortletRequest.
Troubleshooting common Performance Issues
Please refer to the Personalization best practices guide at the following location that will address the common performance issues.
http://www-10.lotus.com/ldd/portalwiki.nsf/dx/personalization-best-practices
Collecting the traces for WebSphere Portal Personalization
NOTE: Clients who are on WebSphere Portal version 6.0.1.3 up until 6.0.1.6 and 6.1 to 6.1.0.1 need to install PK80778 ( available on IBM fix Central ) to collect the WebSphere Portal Personalization traces.
Personalization Mustgather 6.0 -
http://www-01.ibm.com/support/docview.wss?rs=688&uid=swg21245725
Personalization Mustgather 6.1 -
http://www-01.ibm.com/support/docview.wss?rs=688&uid=swg21315586
Additional Resources
Extending WebSphere Portal V6 personalization capabilities: Part 1. Including external data in personalization applications
http://www.ibm.com/developerworks/websphere/library/techarticles/0702_brunn/0702_brunn.html
Extending WebSphere Portal V6 personalization capabilities: Part 2. Creating a Hello World application object
http://www-128.ibm.com/developerworks/websphere/library/tutorials/0702_brunn2/0702_brunn2.html
Extending WebSphere Portal V6 personalization capabilities: Part 3. Creating a Web service application object
http://www.ibm.com/developerworks/websphere/tutorials/0702_brunn3/index.html
Extending WebSphere Portal V6 personalization capabilities: Part 4. Deploying a resource collection that uses an ATOM feed
http://www-128.ibm.com/developerworks/websphere/library/tutorials/0702_brunn4/0702_brunn4.html
Deploying and publishing WebSphere Portal Personalization artifacts
http://www-128.ibm.com/developerworks/websphere/library/techarticles/0510_brunn/0510_brunn.html
Manually repairing your personalization rules after migrating
http://www-10.lotus.com/ldd/portalwiki.nsf/dx/pdmtowcm-pzn
When selecting a custom application object in personalization, no properties display or not all expected properties are included
http://www-01.ibm.com/support/docview.wss?uid=swg21288529
How to prevent Personalization cache query timeout messages
http://www-01.ibm.com/support/docview.wss?uid=swg21327901