IBM Support

Java Content Repository (JCR) information and Frequently Asked Questions (FAQ) for IBM Web Content Management (WCM)

Question & Answer


Question

JCR general information and frequently asked questions relevant to an IBM Web Content Management (WCM) infrastructure.

Answer


What is a "workspace"?

Within the JCR specification, the concept of a workspace is defined to be a container for a collection of nodes. The content repository is divided into the following hierarchy:
    1. Repository - Container for workspaces
    2. Workspace - Container for nodes
    3. Node - Container for properties
    4. Property - Attribute of node

All work in the repository is done by way of a workspace. When a user logs into the repository, he is given a "ticket". Through this "ticket", the user requests a workspace. It is through the workspace that all interaction with the nodes, or content, is performed. All modifications to nodes within a workspace is transient until a save operation. The workspace save operation persists all changes made to the nodes within the workspace to permanent storage, the database.

What are dynamic workspaces?

If one thinks of regular workspaces as a "sandbox" then you may make changes to your workspace and they are not persisted to the back-end data store until save is called on the workspace. A dynamic workspace is a workspace created from a regular workspace. It contains all the nodes that exist in the regular workspace. Except this sandbox is even more specialized. In this sandbox any changes you make to nodes can be persisted by way of a save operation called on the workspace to the back-end data store.

NOTE: Changes made in the dynamic workspace are NOT made in the stable workspace. The changes made in a dynamic workspace are merged into the backing stable workspace when a merge operation is called.

What kind of user permissions are given by default to a workspace?

A workspace itself does not have access/permissions associated with it. All authorization decisions within the repository are made against the nodes in the workspace. Therefore, if you request an operation within a workspace, the authorization check is made against the nodes involved in the operation. There are no workspace authorization checks.

Does each logged in user gets a workspace OR is the workspace shared?

Within the repository there is only one workspace with a given name. However, every user that logs into the repository and requests a workspace with a given name is given a distinct Java object to represent it. Thus, each user has their own personal playground copy of that workspace. Their changes are only persisted if they call save on the workspace object.

NOTE: Applications above the repository may choose to share or cache the workspace object in their own manner.

What specific names correspond to the Personalization workspace, WCM workspace and PDM workspace?

Every workspace in the repository is identified by a unique name. Usage of named workspaces by the various applications vary depending upon the exact WebSphere Portal release level. For WP6.0, the following workspace instance to application usage exists:

    • PZN => RULESWORKSPACE
    • PDM => ROOTWORKSPACE
    • WCM => ROOTWORKSPACE

How does one backup and restore the database?

Each database will provide its own tooling to accomplish a backup or data restore of a database instance. The database administrator should have a regular process of backup for the repository database along with the other portal databases. In the event of a catastrophic failure, a restore may be the shortest path to recovery of the data in the system.

NOTE: Restoring data from backup will not solve the root cause of problems affecting the application server itself.

For Cloudscape, a backup can be as simple as creating a zip file archive of the directory structure that contains the database. For the other database platforms, use the associated vendor tools. Your database administrator should be familiar with how to use them.


How is content stored in the JCR tables, nodes, and UUIDs?

Content is stored in the repository against a complex schema of interrelated tables. For each node within a workspace it is modeled via the following tables at a minimum:

  • ICMSTJCRWSNODES
  • ICMSTJCRLINKS
  • ICMSTJCRNODELOCKS
  • ICMSTUT00XXXX (for each nodetype it will have information stored in it)

Each node is modeled through a graph of information stored across multiple tables. For this reason, deleting a node is not such a simple matter as removing one row from a table in the database. The interrelated connections between all of the tables must be handled. In many cases, the level of logic required is not encoded in any singular SQL command that can be sent to the database.

Does IBM publish the JCR database schema?

No. The data in the JCR is separated across several tables in the database. There is no simple correlation between the WCM objects and database tables or rows.

What data can be safely deleted from the database without causing corruption?

In most cases there is not simply a SQL statement that can be constructed to fix an application issue. The context or semantics for functions are encoded in the application and not the database itself.

How many characters are allowed for a user ID in JCR?

For Portal 6.0.1.x and earlier, there is a limit of 32 characters for user ID's which are using JCR.

For Portal 6.1 and later, the user ID length can be up to 175 characters.

Can you synchronize PDM Document libraries between two servers?

You can use PDM Staging to Production to upload PDM data to a production server. However, you cannot use Staging to Production for complete synchronization, as it requires the user to manually synchronize deletes, renames, and moves.

If restoring databases from backup, do we need to restore all Portal/JCR databases at once?

Yes. It is a best practice to always backup and restore all of the databases at the same time.

Can you share the same JCR database between two different portal (non-clustered) instances?

No. This is not possible unless the schema names are different.

Can you share the same JCR database when the schema names are different?

Yes. Provided that the schema names are unique for each portal instance.



When using the same JCR database with different schemas, the schemas will use the same tablespaces, but different tables/indexes.

You will notice that during the DBTransfer task for the first portal instance, there are 5 tablespaces ICMSFQ04, ICMLNF32, ICMLFQ32, ICMVFQ04 and ICMLSNDX which are created and required for JCR. These tablespace names are hard coded in the script and cannot be changed. The task also creates the necessary tables and indexes in these tablespaces for schema 1. When the DBTransfer is run for the second portal instance, a second set a tables and indexes will be created in these same tablespaces, but these tables and indexes will be for schema 2.

What is the use of icmjcradminwar?

The icmjcradminwar includes a number of functions that are used by the content repository. The primary function however is the InitServlet. The InitServlet is loaded to initialize the content repository for usage by applications.

As part of this initialization, the cache of node types within the system must be initially prepared. This cache is a large cache that requires multiple reads against the tables of the repository. As such, it does take a while for the cache to be loaded.

Due to this time, rather than make the first application request encounter this delay, the InitServlet experiences the delay during the server startup.

This behavior is by design and the application should not be disabled as several of the core portal functions depend upon the content repository.

What database tables belong to JCR?

The following tables in the JCR database below to JCR:

    • All tables that start with ICM*
    • All tables that start with TSS*

What other applications write to JCRDB?

In 6.0x and 6.1, WCM event logging writes directly to JCRDB without going through JCR.

Portal Access Control writes data directly to JCRDB in 6.0x and 6.1. 

Database character sets

All databases must be created using UNICODE Database and National character sets such as UTF8, AL32UTF8, or AL16UTF16

[{"Product":{"code":"SSHRKX","label":"WebSphere Portal"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"Workplace Web Content Management","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF012","label":"IBM i"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"},{"code":"PF035","label":"z\/OS"}],"Version":"6.1;6.0","Edition":"Java edition","Line of Business":{"code":"LOB31","label":"WCE Watson Marketing and Commerce"}}]

Document Information

Modified date:
03 December 2021

UID

swg21321701