SEO tips for WebCenter Content Presenter

Introduction When building a public facing website, it is important that search engines like Google and Bing can understand the content on your page. This will allow those engines to properly index your site which will result in better rankings and traffic. WebCenter Portal provides several techniques to deliver content in dynamic way which can […]

Configure Coherence for Oracle WebCenter Portal Framework Content Presenter Task Flow

This guide aims to give you complete configuration overview for how to configure Coherence Cache for Oracle WebCenter Portal Framework Application using the Content Presenter Task Flow.

This document is intended for WebCenter Portal Application administrators who have to improve performance by configuring Coherence cache for Content Presenter.

For more information about the Coherence Cache for Content Presenter have a look at the following link:

http://docs.oracle.com/cd/E21764_01/webcenter.1111/e12405/wcadm_documents.htm#BABHFCJH

Details

 

 

The Content Presenter and the Content Management Interoperability Service (CMIS) are delivered out of the box with in-memory Coherence cache. This cache is NOT enabled by default. You can enable it by adding the file content-coherence-cache-config.xml to the application class path of the WebCenter Portal Application. This guide describes how to configure the cache when you deploy applications based on WebCenter Portal Framework.

The Content Coherence Configuration file below uses the distributed cache mode in combination with local cache mode depending on the type of objects to be cached. Here the example Coherence cache file to use for the configuration:

<!DOCTYPE cache-config SYSTEM “cache-config.dtd”>
<cache-config>
  <caching-scheme-mapping>
    <cache-mapping>
      <cache-name>repo.ucm.nodeUidCache.*</cache-name>
      <scheme-name>ContentNodeCaches</scheme-name>
    </cache-mapping>
    <cache-mapping>
      <cache-name>repo.ucm.nodePathToUidCache.*</cache-name>
      <scheme-name>ContentNodeCaches</scheme-name>
    </cache-mapping>
    <cache-mapping>
      <cache-name>repo.ucm.securityInfoCache.*</cache-name>
      <scheme-name>ContentNodeCaches</scheme-name>
    </cache-mapping>
    <cache-mapping>
      <cache-name>repo.ucm.typeNameCache.*</cache-name>
      <scheme-name>ContentTypeCaches</scheme-name>
    </cache-mapping>
   <cache-mapping>
      <cache-name>repo.ucm.typeNamesCache.*</cache-name>
      <scheme-name>ContentTypeCaches</scheme-name>
    </cache-mapping>
    <cache-mapping>
      <cache-name>binaryCache.*</cache-name>
      <scheme-name>ContentBinaryCaches</scheme-name>
    </cache-mapping>
    <cache-mapping>
      <cache-name>repo.ucm.searchCriteriaCache.*</cache-name>
      <scheme-name>ContentSearchCaches</scheme-name>
    </cache-mapping>
    <cache-mapping>
      <cache-name> repo.ucm.indexedFieldsCache.*</cache-name>
      <scheme-name>ContentSearchCaches</scheme-name>
    </cache-mapping>
    <cache-mapping>
      <cache-name>repo.ucm.securityUserCache.*</cache-name>
      <scheme-name>ContentSecurityCaches</scheme-name>
    </cache-mapping>
    <cache-mapping>
      <cache-name>repo.ucm.profileTriggerValueCache.*</cache-name>
      <scheme-name>ContentProfileCaches</scheme-name>
    </cache-mapping>
  </caching-scheme-mapping>

  <caching-schemes>
    <distributed-scheme>
      <scheme-name>ContentNodeCaches</scheme-name>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>BM_ContentNodeCaches</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <backup-count>0</backup-count>
      <autostart>true</autostart>
    </distributed-scheme>

    <distributed-scheme>
      <scheme-name>ContentTypeCaches</scheme-name>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>BM_ContentTypeCaches</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <backup-count>0</backup-count>
      <autostart>true</autostart>
    </distributed-scheme>

    <distributed-scheme>
      <scheme-name>ContentBinaryCaches</scheme-name>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>BM_ContentBinaryCaches</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <backup-count>0</backup-count>
      <autostart>true</autostart>
    </distributed-scheme>

    <distributed-scheme>
      <scheme-name>ContentSearchCaches</scheme-name>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>BM_ContentSearchCaches</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <backup-count>0</backup-count>
      <autostart>true</autostart>
    </distributed-scheme>

    <distributed-scheme>
      <scheme-name>ContentSecurityCaches</scheme-name>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>BM_ContentSecurityCaches</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <backup-count>0</backup-count>
      <autostart>true</autostart>
    </distributed-scheme>

    <distributed-scheme>
      <scheme-name>ContentProfileCaches</scheme-name>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>BM_ContentProfileCaches</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <backup-count>0</backup-count>
      <autostart>true</autostart>
    </distributed-scheme>

    <local-scheme>
      <scheme-name>BM_ContentNodeCaches</scheme-name>
      <expiry-delay>5m</expiry-delay>
      <high-units>100</high-units>
    </local-scheme>

    <local-scheme>
      <scheme-name>BM_ContentTypeCaches</scheme-name>
      <expiry-delay>30m</expiry-delay>
      <high-units>50</high-units>
    </local-scheme>

    <local-scheme>
      <scheme-name>BM_ContentBinaryCaches</scheme-name>
      <expiry-delay>5m</expiry-delay>
      <high-units>1000000</high-units>
      <unit-calculator>
        <class-scheme>
          <class-name>com.tangosol.net.cache.SimpleMemoryCalculator</class-name>
        </class-scheme>
      </unit-calculator>
    </local-scheme>

    <local-scheme>
      <scheme-name>BM_ContentSearchCaches</scheme-name>
      <expiry-delay>5m</expiry-delay>
      <high-units>50</high-units>
    </local-scheme>

   <local-scheme>
      <scheme-name>BM_ContentSecurityCaches</scheme-name>
      <expiry-delay>10m</expiry-delay>
      <high-units>50</high-units>
    </local-scheme>

   <local-scheme>
      <scheme-name>BM_ContentProfileCaches</scheme-name>
      <expiry-delay>1h</expiry-delay>
      <high-units>100</high-units>
    </local-scheme>
  </caching-schemes>
</cache-config>

 

The cache entries are described in the following documentation:

http://docs.oracle.com/cd/E21764_01/webcenter.1111/e12405/wcadm_documents.htm#BABEDDBI

NOTE: You have to put this file into the application classpath. If you use the file in the managed server class path or node manager class path it will NOT work.

 

Step by Step Installation Process

 

 

Step 1: Create JAR file with the Coherence Cache Config file

 

 

Create JAR file which contains the example content-coherence-cache-config.xml shown above. For how to create JAR files follow the tutorial from the Java documentation here:

http://docs.oracle.com/javase/tutorial/deployment/jar/build.html

You will use this JAR file to put it inside your WebCenter Portal Framework Application. As mention above this works only if this JAR file is part of the WebCenter Portal Framework Application class path.

 

Step 2: Create WebCenter Application EAR Lib folder

To put the created JAR file into the APP-INF/lib you have to update your project settings:

·From the JDeveloper WebCenter Portal Application Project click on Application->Application Properties.

 

·From the new window select Deployment. From the deployment profile select the EAR profile you want to use and then click on Edit button.

 

· From the new window select File Groups and then click on New button. From the new opened window select Packaging and type a name for the file group as shown bellow. Then click OK to add your new packaging file group. Click then OK again the save the changes.

 

·Create the APP-INF/lib folder into your project. Go to the file system where you create the WebCenter Portal Application Project as shown bellow

 

·<!–[endif]–>You have to create the APP-INF/lib folder under the src/ folder:

 

·<!–[endif]–>Inside the newly created APP-INF/lib folder you can place your JAR file with the Coherence Cache configurations.

 

·<!–[endif]–>To make sure that the file will be picked go back to JDeveloper and open the Application Properties again by clicking on Application->Application Properties and then click on Deployment. Select the EAR Profile which you used to add the Packaging File Group and click on Edit button. Inside the new window you should see that your APP-INF/lib folder is selected and inside there, there is also the JAR file you copied.

 

·<!–[endif]–>WebCenter Portal Framework Application is ready for deployment now. Redeploy your application and bounce(load your application one in an browser) to make sure that the configurations are loaded.

Step 3: Check your configuration

NOTE: You have to open your application once to make sure that the Coherence Configuration is loaded.

Make sure that you open the application once in the browser then open your <managed_server>_diagnosting.log file and search for coherence inside. If you see message like this:

[APP: AviTrustSamplePortal#V2.0] Unable to load Coherence configuration file content-coherence-cache-config.xml. Using in-memory (local) caches.

 

… then it means that your application did not find the configuration file. The reason for that is that the JAR file was not inside the application classpath. In this case you may used the Managed Server Classpath which is not working. You have to place the JAR file inside the application classpath as described above.

 

If you don’t see the message above you can go for the next step and look for the Coherence configuration inside the MBean.

To do so open your Enterprise Manager and go to the application configuration like shown bellow:

 

 

Then from the Application Deployment click on the System MBean Browser to have a look in the MBeans. Inside the MBean Tree search for the word <coherence>:

 

You should be able to see the configurations as shown above.

 

Another very good why to check if the cache works is to have a look inside the WCC request audit. It shows if queries were fired against the Content Server.

To do so login as Administrator to WCC.

 

After you login in as administrator select System Audit Information and from the Active Sections select only system and requestaudit as well as Full Verbose Tracing checkbox.

 

Click on Update button to update the configuration.

 

 

After that click from the upper right menu on View Server Output to trace the Content Presenter queries to the Content Server.

If you open a example page where the content presenter is used, like this:

 

You can see after that in the audit log the queries used by the content presenter to get the information:

 

Refresh the page by click on F5 or just the browser refresh button. There’re should be no new queries visible in the audit log anymore, since the content presenter should use the coherence cache now:

 

 

 

Step 4: Configuration for Cluster Environment

 

 

If you run your application in cluster environment you have to make sure that the coherence configuration works inside the cluster. If you have two managed servers in one cluster you can configure following parameters in the startup arguments. If Node Manager is used to start the Managed Servers, you can put the argument in the Server Start argument option.

First server:

-Dtangosol.coherence.wka1=server1.mycompany.com

-Dtangosol.coherence.wka1.port=8088

-Dtangosol.coherence.wka2= server2.mycompany.com

-Dtangosol.coherence.wka2.port=8088

-Dtangosol.coherence.localhost= server1.mycompany.com

-Dtangosol.coherence.localport=8088

 

Second server:

-Dtangosol.coherence.wka1= server1.mycompany.com

-Dtangosol.coherence.wka1.port=8088

-Dtangosol.coherence.wka2= server2.mycompany.com

-Dtangosol.coherence.wka2.port=8088

-Dtangosol.coherence.localhost= server2.mycompany.com

-Dtangosol.coherence.localport=8088

 

NOTE: If the two server are running on the same physical machine, you have to make sure that they use different ports.

 

Workaround for Contributor Mode Can Be Accessed By Anonymous User

Currently, there have been many requests to fine tune the accessibility of the Composer Edit mode, and for changing the default “blue” border when Edit mode is active.  This blog will detail how this can be done through custromization to the Content Presenter taskflow.