Showing posts with label wcm. Show all posts
Showing posts with label wcm. Show all posts

Thursday, September 11, 2008

WCM Syndication may fail if ifixes on the subscriber and syndicator are not at the same level

Assume you ran into some WCM related issues and you were lucky enough to identify a iFix which might fix the problem, The general thought is to apply the iFix on the QA/Stage (Syndicator) and then do the testing and verification, once the testign is passsed apply it on production (Subscriber). This might work well for most of the ifixes which are not related to WCM, but in case of WCM ifixes it might break the syndication between the "Authoring" and the "Rendering" server if the synidcation happens between the time you test in syndicator and before applying to the subscriber. You might see the java.io.InvalidClassException in the logs as shown below during syndication and syndicator status will show a failure.


on Aug 1 17:11:26 EDT 2007 Failed to transform: {7c0007a717ed72a1, com.aptrix.pluto.cmpnt.HTMLCmpnt, 1187030230711, 63}, Url: http://SomeHost:9081/wps/wcm/connect/?MOD=ItemDispatcher&syndicatorId=e28f92771cc acce&subscriberId=79aeb89771ce1991&subscriptionId=e28f92771ccacce&itemName=7c0 007a717ed72a1:com.aptrix.pluto.cmpnt.HTMLCmpnt:1187030230711:63,Error: com.aptrix.deployment.subscriber.TransformationException: Code #100, phrase: Generic internal responder error, detail: Exception occurred while trying to retrieve document from item.(Cause: java.io.InvalidClassException: com.aptrix.pluto.cmpnt.ProfileCmpnt; local class incompatible: stream classdesc serialVersionUID = -7211000162118777127, local class serialVersionUID = 611017038877300726


The failure reason being is during syndication, WCM objects are serialized and transferred across the network to the subscriber where is get deserialized and stored. So in order for the serialization and deserialization to work properly the Class serialVersionUID of the object should match, so if the ifixes installed are not at the same level then Class serialVersionUID will mismatch which will further result in syndication failure.

So make sure you plan well so that your testing and verification cycle is shorter than your syndication cycle to avoid unnecesary problems. There are also some other reasons that you might encounter this same error , check this technote How to troubleshoot "InvalidClassException" errors during Web Content Management (WCM) syndication to identify and resolve them.

Sunday, September 7, 2008

First, move the PDM libraries from one server to another before syndicating WCM Document Manager Components

Using the process of moving PDM libraries from one server to another, although the documents are exported and imported correctly, the exact path within the PDM Library can change. Since WCM stores the path in the WCM PDM Components, that will cause the WCM PDM Component to have an incorrect path.

WCM stores the path to the object within the PDM library when a Document Manager component is created. For example, we may store "/contentRoot/icm:libraries[x]/folder/path/to/document.doc". The value for 'x' in the path can change for document libraries that are imported from another library. So, When syndicating WCM Document Manager Components, the path to the object within PDM can change when the object is exported from the syndicator and imported on the subscriber. This means that on the subscriber, the WCM PDM Component will have the incorrect path stored.


WCM was changed to correct the path when the WCM PDM Component is saved on the subscriber using ifix PK49150 . There are a couple of things to note in this ifix about syndication of PDM components:

1) In order to fix existing PDM components that have the incorrect path stored on the subscriber, the PDM Components need to be resyndicated.
2) When syndicating the WCM PDM Components, if the PDM Document Library has not yet been imported on to the subscriber, the path to the object in the Document Library cannot be updated, because the document does not yet exist in PDM on the subscriber. The WCM object will still be written to the subscriber, but the path will not have been updated correctly. Once the PDM Document Library has been imported to the subscriber, the WCM components will have to be resyndicated.
3) The same holds true if you delete the document library on the subscriber, and reimport the library in. The path to the document library will change, which means that the WCM PDM Components will have to be resyndicated to update the path again.

Wednesday, June 25, 2008

Intermittent slowness in websphere portal server java process

In a 2 node WebSphere Portal Cluster with WCM installed/enabled you might see performance degradation on either of the nodes randomly and you might see resources are used up more like CPU and IO on one node compared to the other. This might keep changing between nodes. From further investigation we found the root cause is JCR Search Indexer, the search indexer is started based on which node is started first, hence it seems to be random node performance issues. We haven't got a definitive answer from IBM , so went ahead and turned off the JCR Search Indexer and that fixed the issue which anyway we are not using the search index in our production server.

Steps to disable JCR Search Indexer.
  • Go to [WPS_ROOT]\jcr\lib\com\ibm\icm\icm.properties
  • Set ‘jcr.textsearch.enabled’ to false
  • You will need to restart the portal server for the changes to take effect.
  • Repeat the steps in each node.
Note this setting won't affect the Portal Search which is different from the Web Content Management AuthorTime Search OR PDM Search where the JCR index is utilized.

Beware of the login attribute length limitation in WebSphere Portal

Beware of the login attribute limitation of 32 characters in length in WebSphere Portal 6.0 using WCM and when connecting to Java Content Repository (JCR) which is nothing but PDM (Portal Document Manager). So when designing and choosing a login attribute ( uid, cn , samAccountName, email) for your portal application you should carefully select or enforce the attribute in such a way that it's not more than 32 characters in length. This really makes the life difficult as you can't even use the basic email address as your login attribute as there is a possibility that some valid email addresses will easily more than characters for example, the world's richest Warren Buffet warren.buffet@berkshirehathaway.com can't even register with your website. Good news to all this is that they support upto 175 character length in the newer WebSphere Portal 6.1 release.

Certain symptoms you might notice are that users with more than 32 characters of login id might complain about missing images or document that is referred in the webpage from PDM or WCM and you might see the following exception in the logs during their login.


Error logging in: com.ibm.content.exception.LoginException:
javax.jcr.LoginException: Unable to establish session with DB2® Content
Manger Runtime Edition for User

Sunday, June 8, 2008

OutOfMemory errors with WebSphere Portal

WebSphere Portal server might throw OutOfMemory (OOM) errors and might got hung and unresponsive when serving or dowloading large documents through WCM (IBM Workplace Web Content Management ) which are stored in PDM (Portal Document Manager). You might see the following error in SystemErr.log and the JVM might have produced a heapdump,



[5/14/08 14:35:32:984 PDT] 00000086 ModuleManager E IWKCT1382X: Major exception caught: com.presence.connect.business.module.ErrorExecutingRequestException: IWKMU1062X: Message: IWKCT1366X: Exception caught servicing a Servlet request for PDMProxy, Cause: java.lang.OutOfMemoryError
[5/14/08 14:35:32:985 PDT] 00000086 ModuleManager E IWKCT1383X: Unexpected error from Module. Details of cause to follow:
[5/14/08 14:35:32:986 PDT] 00000086 ModuleManager E
java.lang.OutOfMemoryError
at com.presence.connect.connector.content.ContentAPIConnection.getBytes(ContentAPIConnection.java(Compiled Code))
at com.presence.connect.connector.content.ContentAPIConnection.getItemContents(ContentAPIConnection.java:516)
at com.presence.connect.connector.content.ContentAPIConnector.getItemContents(ContentAPIConnector.java:216)
at com.aptrix.pluto.resource.PDMResourceUtils.createPDMMime(PDMResourceUtils.java:632)
at com.aptrix.pluto.resource.PDMResourceUtils.getPDMData(PDMResourceUtils.java:419)
at com.aptrix.pluto.resource.PDMResourceServerModule.getResourceMime(PDMResourceServerModule.java:968)
at com.aptrix.pluto.resource.PDMResourceServerModule.buildResponse(PDMResourceServerModule.java:516)
at com.aptrix.pluto.resource.PDMResourceServerModule.retrieveResource(PDMResourceServerModule.java:355)
at com.aptrix.pluto.resource.PDMResourceServerModule.process(PDMResourceServerModule.java:276)
at com.presence.connect.business.module.ModuleManager.launchBusiness(ModuleManager.java:121)
at com.presence.connect.business.module.ModuleManager.launchBusiness(ModuleManager.java:384)
at com.presence.connect.RequestExecutable.execute(RequestExecutable.java:84)
at com.presence.connect.dispatcher.Task.run(Task.java:151)
at com.presence.connect.ConnectClient.processSynchronous(ConnectClient.java:167)
at com.presence.connect.ConnectServlet.process(ConnectServlet.java:298)
at com.presence.connect.ConnectServlet.doGet(ConnectServlet.java:120)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1572)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java(Compiled Code))


In order to resolve the issue please apply the IBM recommended ifix PK66778 and tune the JVM heap size, xloratio , pCluster & kCluster based on your application needs, expected load and the optimum performance. IBM Monitoring and Diagnostic Tools for Java - Garbage Collection and Memory Visualizer (GCMV) which is a part of IBM Support Assistant Tools can help you tune these parameters based on the Garbage Collection logs history.

Sunday, February 10, 2008

PDM portlet not working after upgrading to WPS 6.1.0.2 or WCM 6.1.0.2

You might notice that pdm portlet (Portal Document Library ) might not function properly after upgrading to WPS 6.1.0.2 WP_PTF_6012 (IBM WebSphere Portal, Version 6.0.1.2 Fix Pack)or WCM 6.1.0.2 (WCM_PTF_6012 (Web Content Management, Version 6.0.1.2 Fix Pack), symptoms include,

1) PDM portlet will be unresponsive when you click on any of the folder strcuture and trying to navigate through it as show below.


2) The left navigation file tree view of the pdm portlet will be empty.


3) you may not able to browse the document libraries from the WCM portlet when trying to refer a document component from WCM Authoring portlet.


In order to fix the problem goto the WebSphere Adminconsole (Dmgr or AppServer)and do the following,

When the Document Manager Web module is redeployed, its groups must be mapped to the All Authenticated group in WebSphere. To map the groups, follow these steps:

Select the Document Manager application, as follows:
Expand Applications.
Select Enterprise Applications.
Locate the application that starts with Document Manager.
Click Map Security Roles to Users/Groups.
Assign the Authenticated role to the All Authenticated group.
Save your changes.
Restart the portal or sync the nodes and restart the portal cluster.