+

Search Tips   |   Advanced Search

IBM Support Tools portlet for IBM Web Content Manager


  1. Overview
  2. JCR nodes
  3. Node hierarchy
  4. Locks
  5. XPath Query
  6. WCM Seed List Generator
  7. nodetypes
  8. jcr:versioning
  9. Utility JSP pages
    1. Display Type
    2. Execute SQL queries
    3. Validate database nodes
    4. Clear Caches
    5. Display EventLog
    6. Display Thread Stacks
    7. Count Items
    8. Display Node
    9. Clear Persistence Service Table
  10. Launch Text Search Utilities
    1. TextSearch Index Status
    2. Reindex a node
    3. Search Index Reorg Check
  11. Enable access code
  12. XPath expressions
    1. Example 1: Could not save item
    2. Example 2: Locked WCM libraries
    3. Example 3: Items not syndicating

The IBM Support Tools portlet for IBM Web Content Manager is used to troubleshoot JCR repository issues, allowing one to...

Download IBM Support Tools from the IBM WCM Support page. Install and configure on a page as we would any standard portlet

The tool used to be known as the JCR Explorer.


Browse JCR nodes

Find library items in JCR nodes by either...

  • Searching for UUID/IID of an object
  • Browsing JCR hierarchy links

Browse library items by clicking links...

...where...

    .content-staging Staging content
    contentRoot Default content
    filestore Themes, skins and CSS

Example node hierarchy...

    / (icm:rootNodeType)
        contentRoot (icm:contentRoot)
            icm:libraries[2] (icm:documentLibrary)
                content (ibmcontentwcm:webFolder)
                    exampleData(ibmcontentwcm:siteArea)
                        example (ibmcontentwcm:siteArea)
                            test1 (webContent)
                                element[1] (textElement)
                                element[2] (dateElement)
    

contentRoot library items are mapped to the Authoring portlet view...

    contentRoot
        Library
            Content 
            Authoring templates
            Presentation templates 
            Components 
            Taxonomies 
            Workflow
                Workflows
                Actions
                Stages
            System 
                Deleted items
                Drafts
            UIControls 
                Content
                Site management
                Taxonomy
                Component library
                Authoring template
                Presentation template
                Workflow
    

The Node Locks field displays nodes currently locked. To view, enter the unlock access code.

The Node Information field contains:

    Count children Number node children.
    Get IID Item ID
    Get References References to the library

When access codes are enabled, Node Actions are rendered.

Search the node using UUIDs, the external reference, found in SystemOut.log. JCR database tables are linked using IIDs, the internal reference. IID-to-UUID mapping is in the ICMSTJCRWSNODES table


XPath Query

Run XPath Query to search the JCR repository. XPath queries are translated to SQL.

For example, to query for a particular UUID, use the XPath expression...

//element(*, ibmcontentwcm:siteArea)[@jcr:uuid = '7fab41004d873d72a994fbb569f96be1']


WCM Seed List Generator

Use the Portal Search Engine WCM Seed List Generator to create search URLs for use within content sources.

Select a single library or multiple libraries, select a SiteArea, then generate the URL...


nodetypes

JCR nodetypes define properties and child nodes for WCM data objects...

Example child types and properties...

Items can be created, deleted, and searched for in user workspaces...

Workspace Application Description
ROOTWORKSPACE WCM All libraries
EVENTWORKSPACE PZN Personalization
RULESWORKSPACE PZN Personalization
jcr:versioning Versions All versions

Example RULESWORKSPACE...


jcr:versioning

Item versions can be automatically saved when published, or we can select when to save a version of the item. Items can be restored individually, or in sets that either have the same label or were versioned at, or before, a specified date and time.

Follow links on right-hand side to see actual versioned item...

Namespace prefixes, delimited with a colon (:), prevent naming collisions among items and node types that come from different sources and application domains.


Utility JSP pages


Display Type

Display type with corresponding properties...


Execute SQL queries

Run SQL queries


Validate database nodes

Validate database nodes for a given IID.

Results in first section shows information about the database, including schema...

Next we get results based on the different types of tables...


Common tables validated include...

    ICMSTJCRWSNODES Nodes in the repository, by UUID and IID
    ICMSTJCRLINKS Parent-child relationships. Used to build node path.
    ICMSTJCRNODELOCKS
    External Locked by specific user
    Internal Locked by workspace or running process
    ICMSTJCRNODETYPES Node types. Single-value properties in a table whose name is defined by the NODETYPECOMPTYPEID column.
    ICMSTJCRPROPDEFS Property definitions. Multi-value properties are stored in a table whose name is defined by the MULTIVALCOMPTYPEID column
    ICMSTJCRGLBLPROPS Property definitions
    ICMSTJCRNSPREFIXES Namespace prefixes
    ICMSTJCRWS Workspaces in the repository

Data tables validated include...

    Table ICMUT01097001
    Column ATTR0000001097


Clear Caches

Clear the following WCM Dynacaches

    services/cache/iwk/strategy
    services/cache/iwk/global
    services/cache/iwk/module
    services/cache/iwk/processing
    services/cache/iwk/site
    services/cache/iwk/session
    services/cache/iwk/summary
    services/cache/iwk/abspathreverse
    services/cache/iwk/menu
    services/cache/iwk/nav
    services/cache/iwk/abspath


Display EventLog

Export the event log...


Display Thread Stacks

Display JVM stack traces. Search by thread ID or display all threads by selecting state.

If we search for a WAITING thread, for example, we see the thread information


Count Items

Count total number of WCM content items in a library

If counting a large number of items, increase session timeout...

    Application Servers | WebSphere_Portal | Container Settings | Web Container Settings | Session Management


Display Node

Search a node with different options like UUID, path, or query. Display children, properties, locks, access control, and references.


Clear Persistence Service Table

Drop persistence table index. Equivalent to...

    ConfigEngine remove-wcm-persistence-tables


Launch Text Search Utilities

JCR text search

Example output...


TextSearch Index Status

Status of the search index, last run, and index directory


Reindex a node


Search Index Reorg Check

Find the number of documents deleted from an index. See: Java content repository TextSearch Support tools for IBM WebSphere Portal


Enable access code

WCM Support Engineers can provide an access code to unlock update features within the Support Tools portlet. These access codes are temporary and should be used only to repair the database problems as directed by the Support Engineer. Any other updates to the database should be done through either WebSphere Portal administration or WCM Authoring.

Once you receive and enable the access code, such as write_all, we will see a message like...

    Write Access Enabled: write_all


XPath expressions

Each step in a location path may have a predicate that selects from the node list at that step in the expression. The predicate contains a Boolean expression, which is tested for each node in the context node list. If the expression is false, then that node is deleted from the list. Otherwise, it's retained.

For example, to find all profession elements whose value is "engineer", use expression...

    //profession[. = "engineer"]

Here the period stands for the string value of the current node, the same as would be returned by xsl:value-of. We can use single quotes around the string instead of double quotes, which is often useful when the expression appears inside a double-quoted attribute value, for example...

    <xsl:apply-templates select="//profession[.= 'engineer']" />

To ask for all person elements that have a profession child element with the value "engineer"...

    //person[profession="engineer"]

To find the person element with id p4567, put an @ in front of the name of the attribute...

    //person[@id="p4567"]

To locate person elements in the document with a born attribute whose numeric value is less than or equal to 1976.

    //person[@born<=1976]

If this expression is used inside an XML document, escape the less-than sign as &lt;, for example...

If the expression appears outside of an XML document, for example, with XPointer, you may not need to escape the less-than sign.

To select person elements with born attribute values between 1910 and 1920 inclusive

    //person[@born<=1920 and @born>=1910]

To select name elements that have a first_name child with the value of either Richard or Dick...

    //name[first_name="Richard" or first_name="Dick"]

Predicates that evaluate to numbers are true if they're equal to the position of the context node, otherwise false. Predicates that indicate node-sets are true if the node-set is nonempty and false if it's empty. String values are true if the string isn't the empty string, false if it is.

The expression //name selects all name elements.

To only name elements that have middle_initial child element. For example, to return Afred E. Neuman, but not Charles Babbage...

    //name[middle_initial]

Any or all of the location steps in a location path can have predicates. For example, the expression...

    /people/person[@born < 1850]/name[first_name = "Charles"]

...first selects all people child elements of the root element. Then from those it chooses all person elements whose born attribute has a value numerically less than 1850. Finally, from that group of elements, it selects all name child elements that have a first_name child element with the value "Charles."


Example 1: Could not save item

Syndicating from HostA --> HostB. Getting errors.

  1. WebSphere_Portal log has...

    Could not save item with id DepRef(id:c6e601804d873d73a9a0fbb569f96be1 type: com.aptrix.pluto.site.SiteArea nonDraft:true draft:false purged:false parentId:7fab41004d873d72a994fbb569f96be1 timeStamp:1238183752676 stateUpdate: false versions:null moved: false) because it could not find its parent.

  2. From XPath Query Analyzer on HostA, we search for UUID...

    //element(*, ibmcontentwcm:siteArea)[@jcr:uuid = '7fab41004d873d72a994fbb569f96be1']

    ...and find...

    /contentRoot/icm:libraries[6]/Content/site1/accounting(7fab41004d873d72a994fbb569f96be1)@1076052003

  3. From XPath Query Analyzer on HostB we search for same parentID and find nothing.

To fix:

  1. On HostB delete accounting site area and all children of accounting site area.

  2. On HostA, edit accounting site area and all accounting site area children. Save each to update time stamp.

  3. Re-syndicate using "Update" button.


Example 2: Locked WCM libraries

Vault_Content_Library on HostB is showing up as locked after restart.

  1. Unlock lib

    http://hostb:10040/wps/wcm/connect?MOD=UnlockLibrary&library=Vault_Content_Library

  2. Set trace...

    com.ibm.workplace.wcm.services.library.*=finest

  3. Restart server.

  4. Check log files for...

    s_log.log(Level.FINER, "Entering deleteLibrary() for library: " + p_library.getName()); 11:14:37 AM

  5. Using library name derived from trace, pull up page for locked library:

    Current path: [Root]/contentRoot/icm:libraries[8] [PAC]
    Properties Children
    icm:capabilities[library.enabled=true, security.inheritance=TRUE, admin.deletable=false, admin.live.item.gatherer=7c9649004d50079a99a49b86d280d817, admin.all.item.gatherer=7c9649004d50079a99a39b86d280d817, LANGUAGE=en]
    icm:categories->[_6QR_003C7EBR5B0S1M9U_2R3]
    icm:created[2009-03-13T19:11:46.333Z - 1236971506333]
    icm:creator[]
    icm:description[]
    icm:effectiveDate[ - 0]
    icm:expirationDate[ - 0]
    icm:hidden[]
    icm:isdoc[true]
    icm:label[clienty_content_library]
    icm:language[]
    icm:lastModified[2009-03-20T22:55:12.460Z - 1237589712460]
    icm:lastModifier[]
    icm:searchable[true]
    icm:title[Vault_Content_Library]
    jcr:baseVersion[]
    jcr:created[2009-03-13T19:11:46.333Z - 1236971506333]
    jcr:isCheckedOut[false]
    jcr:lastModified[2009-03-20T22:55:12.460Z - 1237589712460]
    jcr:nodeType[icm:documentLibrary]
    jcr:uuid[7c9649004d50079a99a29b86d280d817]
    jcr:versionHistory[]

  6. Unlock library


Example 3: Items not syndicating

Some WCM items are not syndicating from hosta --> hostb.

In hostb SystemOut.log, messages like...

# grep DepRef SystemOut.log | cut -d" " -f7-100 | sort | uniq
Could not save item with id DepRef(id:127e0f804d814af39094dbb569f96be1 type: com.aptrix.pluto.site.SiteArea nonDraft:true draft:false purged:false parentId:edad42004d81483d9076dbb569f96be1 timeStamp:1238016447593 stateUpdate: false versions:null moved: false) because it could not find its parent.

On hostb, we run XPath query...

//element(*, ibmcontentwcm:siteArea)[@jcr:uuid = '(id:127e0f804d814af39094dbb569f96be1']

Nothing found.

We disable automatic syndication and do a Rebuild.

Subscriber ID: 78cac3004d90851db616f72461e8faba 
Name: hostbSubLive 
Subscriber URL: http://hostb.int.clienty.com:10040/wps/wcm/connect/?MOD=Subs 
Syndicator Name: hostbSyndLive 
Syndicator ID: 6692c7804d7209418571bf1eec0f03e1 
Syndicator URL: http://hosta.int.clienty.com:10040/wps/wcm/connect/?MOD=Synd 
Current State: 7c9649004d50079a99a49b86d280d817:1238605822693,29b855004ba24a639624d71c959cad1d:1238601233357 
Enabled: true 
Type Full update 
Result Update completed with errors 
Detail IWKSY1030X: Syndication completed with 5 item related errors.  
Subscriber's old state ICE-ANY 
Subscriber's new state 
7c9649004d50079a99a49b86d280d817:1238605822693,29b855004ba24a639624d71c959cad1d:1238601233357 
 
Update Summary
45736 total updates sent
    45695 updates succeeded
    41 updates failed
 
Update Details
44218 item updates attempted
    43881 items did not require updating
    3 items created
    324 items updated
    10 updates failed
 
1518 item removals attempted
    1479 items were already removed
    8 items removed
    31 item failed to be removed

Unlock hostb libraries...

    http://hostb:10040/wps/wcm/connect?MOD=UnlockLibrary&library=Lib1

On hosta, capture invalid items from logs...

grep re-creating SystemOut.log > recreate.log

Problem uuids

//element(*, ibmcontentwcm:siteArea)[@jcr:uuid = 'edad42004d81483d9076dbb569f96be1']
//element(*, ibmcontentwcm:siteArea)[@jcr:uuid = 'cc8647804d81494a907cdbb569f96be1']
//element(*, ibmcontentwcm:siteArea)[@jcr:uuid = '127e0f804d814af39094dbb569f96be1']
//element(*, ibmcontentwcm:siteArea)[@jcr:uuid = '633c58004d814c1a90aadbb569f96be1']
//element(*, ibmcontentwcm:siteArea)[@jcr:uuid = '1a6edb004d8158799120dbb569f96be1']
//element(*, ibmcontentwcm:siteArea)[@jcr:uuid = 'b71253004d92ee058d22dfb569f96be1']
//element(*, ibmcontentwcm:webContent)[@jcr:uuid = '822a16004d93e1f7bff8ffb569f96be1'] ???
//element(*, ibmcontentwcm:webContent)[@jcr:uuid = '098123004d967f858a0bbe234711edaf']
//element(*, ibmcontentwcm:webContentLink)[@jcr:uuid = 'a93287804d93dbfabf63ffb569f96be1']

Parent id of each of the above is different on hostb. Deleted each of the above items on hostb, edit and save items on hosta, re-run syndication.

JCR explorer search on hosta

//element(*, ibmcontentwcm:webCategory)[@jcr:uuid = '08da99004d92f6a28e23dfb569f96be1']

http://hostb:10040/wps/wcm/connect?MOD=UnlockLibrary&library=Lib1Design

We now have a clean syndication...

Result Update succeeded 
Detail IWKSY1029X: Syndication completed with no errors.  
Subscriber's old state 7c9649004d50079a99a49b86d280d817:1238705375303,29b855004ba24a639624d71c959cad1d:1238702912684 
Subscriber's new state 7c9649004d50079a99a49b86d280d817:1238705787941,29b855004ba24a639624d71c959cad1d:1238709255196 

Update Summary
150 total updates sent
    150 updates succeeded
    0 updates failed
 
Update Details
141 item updates attempted
    52 items did not require updating
    12 items created
    77 items updated
    0 updates failed
 
9 item removals attempted
    0 items were already removed
    9 items removed
    0 item failed to be removed