WebLogic Portal Propagation Tool

Field Guide

 

Peter Laird, WebLogic Portal Engineering

March 12, 2007

Revision 2.9

 

 

Overview

 

This is a supplemental guide for the Propagation Tool released with WebLogic Portal 9.2. Most of the information also applies to the version of the tool released with WebLogic Portal 8.1 SP4 and later service packs, however that release is not the focus of this document.

 

This guide includes information that supplements the existing documentation on the official BEA documentation site, and is a result of customer experiences with the tool. This document presents the following sections of information:

 

 

The Propagation Tool is an active project within the WebLogic Portal product team. Future releases of the tool will benefit from feedback from users of the tool. The information presented in this document will be used to guide enhancements and fixes for future versions of the tool. As always, BEA encourages users to file Support Cases and post to the BEA newsgroups for issues and ideas on how the tool can be improved.

 

This is a living document. Since the content of this document is derived largely from the feedback of actual users, this document will change over time as new information is obtained from new reports and interactions with users.


Best Practices

 

This section lists a number of best practices to employ when using the Propagation Tool. Most of this information can also be found in the full set of official documentation. This document presents the information in the form of a list and highlights the most common recommendations given to users.

 

New users should use the default Scoping and Policy options

 

The Propagation Tool offers powerful control over a propagation using the Scoping and Policy features. However, with this power can come some complexity. When first starting out with the Propagation Tool it is recommended to retain the default scope (the full application) and the default Policy (accept all Adds, Updates, and Deletes). Once you are comfortable with the concepts and process of propagation, it is appropriate to start using the advanced features.

 

Use the Eclipse User Interface to develop a process, use the Ant tasks for repeatability

 

The Eclipse User Interface (UI) provides many features for defining how the assets to be propagated, and a user interface for visualizing the combined inventory. The UI is the best choice when promoting an application for the first few times from one environment to another. However, over time, the promotion process generally becomes routine with the same options chosen every time. The Ant tasks are more appropriate for supporting a repeatable process when the propagation scope and policy choices are well understood and held constant.

 

The Ant tasks are a more powerful alternative to the Import and Export operations in the UI

 

The Eclipse User Interface allows the user to Import and Export inventories from running WLP applications. However, the UI does not provide access to all of the options available for these operations.

 

It is important to understand that the Eclipse UI is actually using the Ant tasks when invoking Import and Export. It invokes an ant script behind the scenes when these features are used from the UI. The dialog allows the user to save the Ant script it uses, which will help you understand what those operations are doing. The onlineDownload, onlineUpload, and onlineCommit tasks have numerous options that can be used when using the Ant tasks directly.

 

Avoid propagating across a proxy server or load balancer

 

The Import and Export operations in the Eclipse UI, and the onlineDownload, onlineUpload, and onlineCommit Ant tasks open an HTTP connection to the propagation servlet running in the WLP application running on WebLogic Server. The URL specified for these commands indicate how the servlet is addressed.

 

For WLP applications deployed in a cluster, a proxy server or load balancer sits in front of the cluster to marshal traffic to the cluster nodes. While it is possible to target a propagation to the proxy, a better approach is to identify a single cluster managed node and to address it directly. This approach has three advantages:

 

Make sure the Admin Server of the cluster is running when propagating

 

The Propagation Tool primarily commits configuration changes into the WLP application’s database schema. Portal desktops, portlet preferences, content, and most other artifacts are persisted into the database. However, some security information such as entitlements and delegated administration policies are persisted into the embedded LDAP server intrinsic to every WebLogic Server instance.

 

In a cluster, the Admin Server is responsible for distributing updates to the embedded LDAP server to all nodes in the cluster. If the Admin Server is down, the nodes in the cluster can get out of sync if updates are made to entitlements or delegated administration. Therefore, it is strongly recommended to have the Admin Server running when the Propagation Tool is updating an application. This applies specifically to the duration of an Export operation in the Eclipse UI, or an onlineCommit Ant task invocation.

 

Errors seen during a Propagation often are an indication of a deeper problem

 

Unlike any other activity in a WebLogic Portal application, the Propagation Tool iterates through the configuration of the entire WLP application. Therefore, if there is a latent problem in the application configuration, the Propagation Tool is apt to encounter it. While these problems adversely affect the propagation, the source of the error is at a deeper level.

 

When troubleshooting such a problem, it is important to attempt to exercise the area having trouble using another means such as the Portal Administration Tool (PAT). Doing this will expedite the resolution of the issue with BEA Support because it more correctly identifies the actual problem, and may provide a simpler reproducible test case.

 

Some cases have arisen where an unsupported database driver or corrupt security repository have negatively impacted the Propagation Tool. While these problems affect the Propagation Tool, the solution lies in addressing the root cause.

 

Use Verbose Logging to Help Isolate Issues

 

The Propagation Tool contains a rich verbose logging facility. Verbose logging can be enabled in multiple places.

 

Client Side

 

When working with offline features (most Eclipse UI features, offline ant tasks), verbose logging is enabled on the client side. This can be done using the verboseLogFile attribute available on some tasks, as seen in the official documentation:

 

http://edocs.bea.com/wlp/docs92/prodOps/scripts.html

 

For verbose logging in the Eclipse UI, follow these instructions:

 

http://edocs.bea.com/wlp/docs92/prodOps/propTool.html#wp1056339

 

Server Side

 

For verbose logs on operations that are invoked against a running application (like download, commit), verbose logging is enabled on the server side. Configuring verbose logging requires an update to the Propagation web.xml, or the use of a deployment plan (covered later in this document). See:

 

http://edocs.bea.com/wlp/docs92/prodOps/propToolAdvanced.html#wp1071690

 

In the deployment plan, you must provide a valid directory to output the verbose logs. This folder must already exist for the log files to be written.

 

An Eclipse Export or Ant onlineCommit operation can be restarted in case of failure

 

During an Export (Eclipse) or onlineCommit (Ant) operation, the Propagation Tool will process a list of changes to make against the destination application. At times, this list can be enormous, with thousands of necessary changes. This operation can take a significant amount of time.

 

The Propagation Tool does not create an encompassing transaction for all changes for several reasons:

Each change is executed in its own transaction. If the propagation is interrupted in the middle of the list of changes, the configuration will be left in an incomplete state. This can happen if the managed server hardware fails during the operation, for example.

 

Fortunately, the Propagation Tool operation can simply be rerun in such a case. The tool will detect the new, shorter, list of remaining changes that need to be applied and will start again where the previous run stopped.

 

Improve the speed of the online operations by improving the speed of the database

 

The Import and Export operations in the Eclipse UI, and the onlineDownload, onlineUpload, and onlineCommit Ant tasks are considered the online operations because they communicate with the propagation servlet running in the WLP application. These operations read and write large amounts of database records while working with the WLP application configuration. These operations are notable in that they tend to take the longest amounts of time to execute.

 

The solution to improving the speed of these operations is to improve the performance of the database. Allocating more powerful hardware is an effective but expensive solution. Often, having a DBA tune the database is effective.

 

Guard against file system issues when running on Windows OS computers

 

The Microsoft Windows file system is more restrictive than those of other operating systems. Specifically, there are file path length limitations that are problematic when working with deeply nested folder structures.

 

The Propagation Tool makes use of the file system extensively when doing certain operations. It uses a designated working folder to write large numbers of files for the artifacts that it is exporting, importing, differencing and committing. This ordinarily is not a problem because the Propagation Tool uses the working folder judiciously and does not create deeply nested folders. However, if the working folder itself is set to be a deeply nested folder, the Propagation Tool may fail while trying to create, read, delete or update some of its files because the file path may exceed the limit.

 

By default, the propagation servlet will use the temporary folder provided by the WebLogic Server servlet container as the working folder. This path is a nested folder under the domain directory, like:

 

C:\bea92GA\user_projects\domains\wlpHome_domain\servers\AdminServer\tmp\_WL_user\wlpBEA\c0b5ju\public

 

This path can grow very long, especially if the domain folder path is lengthy. In some cases, this will cause the Propagation Tool to fail because the file path exceeds the limit.

 

A best practice for Windows computers is to not allow the Propagation Tool servlet to use the servlet container temporary space for its working directory. The working folder should have a small folder path length, like C:\bea92GA\propagation. The working folder may be set in web.xml for the Propagation Tool web application, as described in the official documentation at:

 

http://edocs.bea.com/wlp/docs92/prodOps/propToolAdvanced.html#wp1071690

 

Choose the appropriate inventory file transport protocol

 

The Import/Export or onlineDownload/onlineUpload operations allow for inventory files to be retrieved/pushed to a remote server that is hosting a WLP application. Because these operations use a servlet, this transfer uses HTTP. When firewalls are an issue, this can be a convenient approach to move the inventory files. It is also the only approach supported by the Import and Export operations in the Eclipse UI.

 

To ensure that the Export/onlineUpload operation succeeds, it is sometimes necessary to increase the allowed upload size of the servlet. Because upload capabilities have historically been used in Denial of Service attacks on web applications, the default limit for any uploaded inventory is one megabyte. This can be increased in a deployment plan by following the instructions here:

 

http://edocs.bea.com/wlp/docs92/prodOps/propToolAdvanced.html#wp1070764

 

Additionally, the user must be granted upload rights in the WebLogic Server console. Only users in the Administrator and Deployer roles are granted this right by default. Other users can be given this right in the WebLogic Server Console. For more information see:

 

http://e-docs.bea.com/wls/docs92/secwlres/types.html

 

While using HTTP to download and upload inventory files works well in most cases, some users would prefer to use an out of band approach to moving the files such as FTP, a source code control client, or a physical medium such as a DVD.

 

For these users, the onlineDownload and onlineUpload tasks support an option to avoid using HTTP for the file transfer. They allow the administrator to position the inventory file on the server’s local file system, and reference the file location in the ant task.

 

For example:

 

<target name="downloadProductionInventory">

    <onlineDownload

      servletURL="http://myhost/propagation/inventorymanagement"

      username="weblogic” password="weblogic" allowHttp="true"

      outputInventoryFile="/opt/inventories/prod.zip"

outputToServerFileSystem=”true”

    />

</target>

 

This invocation would not download the inventory file to the machine running the ant task. This invocation would cause the inventory file to be written to the file system of the server machine, at location /opt/inventories/prod.zip.

 

The onlineUpload task has a similar flag, called readFromServerFileSystem.

 

Be careful to note and configure the Manual Changes

 

The Propagation Tool can commit nearly all of the changes to configuration artifacts that it detects. However, there are a few types of changes that the Propagation Tool can detect, but cannot automatically commit. These types of changes are called Manual Changes. The administrator must manually make these changes using the Portal Administration Tool or the WebLogic console.

 

The following is a list of changes that are detected, but always manual:

 

To view the required Manual Changes in the Eclipse UI, the best approach is to right click on the Merged Inventory view, and filter for Manual Changes only. When using the Ant tasks, the offlineExtractTask can produce a file that lists the Manual Changes.

 

Ensure the propagation user has appropriate Delegated Administration rights

 

Any user invoking the Propagation Tool online tasks must be a member of the PortalSystemAdministrators role. However, unless the user is also a member of the Administrators role, that user will not be able to view or update any configuration artifacts in the WLP application by default. That user must be granted DA rights to the artifacts he wishes to propagate.

 

In most cases, it is recommended that the propagation user be a member of the Administrators role. This allows the user to propagate any artifact in the application. This is the safest approach to propagation because the Propagation Tool has full visibility into the application configuration.

 

However, there are use cases in which the propagation is targeted to a specific area of the application and this advice does not apply. For example, a content administrator may want to propagate a single folder of content items. This user will likely not have DA rights to any Portal Framework assets, but that is not a problem in this use case.

 

In these cases it is acceptable for a user without full DA rights to the application to do the propagation. It is important to understand that this may cause errors in cases where the user is attempting to add items that exist in destination, but are not visible to the user because of the absence of DA rights. The user will see errors on the console about the conflicted artifacts failing to add because they already exist.

 

 

Mitigate performance issues when propagating against large content repositories

 

There are two mechanisms to improve the experience when propagating Content Repositories. In general, repositories are more susceptible to performance issues due to the number of items stored, and the size of the binary properties (images, documents) that are stored.

 

Two approaches can help mitigate performance issues seen while propgating content. First, putting large numbers of content items under a single parent (thousands of documents under a single folder) is known to cause slower response times from the Content Repository (see CR306895 below). Second, use scoping to exclude parts of the Content Repository that are not related to the particular propagation use case.

 

Maintain a Store of Historical Inventories

 

It is a best practice to periodically download and retain a series of historical inventories for the environment. This is a good idea for so many reasons that we recommend that inventories be retained in source code control (if size allows) or a backed up disk drive (for huge inventories). The recommendation is to automate a script to periodically take an inventory snapshot of the environment and store that inventory. Think of your inventory as a peer to your code assets - the same care you put into maintaining historical versions of your code should be applied to inventories.

Note: inventory snapshots do not replace the need to do database and file system backups.

 

Consult the Sample Ant Script

 

Before embarking on authoring your own  Ant script, be sure to review and consult the sample that has been provided. The sample contains a comprehensive set of steps for a propagation. You will likely need a reduced set to perform your propagation. Using the sample Ant script as a start is a good practice.

 

You may find the sample in the install at this location:

 

BEA_HOME/weblogic92/portal/bin/propagation/ propagation_ant.xml


Embedded LDAP Issue

 

The section following this one will list a number of known issues that have been found by users of the Propagation Tool. While all issues are important to note, those in the following section generally have workarounds and are usually isolated to specific use cases.

 

This section discusses a more serious problem that can occur in any WLP application with or without the Propagation Tool. This problem is being discussed in this document because it manifests itself most clearly during the use of the Propagation Tool and it can cause the operations to fail.

 

For customers using WebLogic Portal 9.2, an important patch has been made available to prevent problems with the LDAP repository. See:

 

http://dev2dev.bea.com/pub/advisory/223

 

 

What is the Embedded LDAP Repository?

 

Every WebLogic Server instance has an internal LDAP repository that stores certain security information for the server. Every WebLogic Portal application additionally stores security information such as visitor roles, visitor entitlements, delegated administration (DA) roles, and DA policies in the repository.

 

What are the ER tables in the WebLogic Portal schema?

 

To aid in management of the entitlement and DA policies for the application, the Portal Administration Tool needs to perform queries over the set of policies in the LDAP repository. To make such queries perform adequately, additional information about the policies in LDAP are written into the ER tables in the WLP database schema. The tables which contain data that relate to embedded LDAP can be found in:

 

BEA_HOME/weblogic92/common/p13n/db/[vendor]/er_create_tables.sql.

 

The Synchronization Issue

 

In some cases, the embedded LDAP and the ER tables in the database may become out of sync, and they will disagree on the policy data. For runtime operations involved in servicing WLP requests, the application functions as per the embedded LDAP repository.

The runtime services do not consult the database tables, and so will operate without any problems.

 

On the other hand, the policy management tools will be affected by the issue. For the Portal Administration Tool, the policies or roles that are in dispute will not appear. The Propagation Tool however uses different APIs and is more negatively affected by this problem.

 

Avoiding the Synchronization Issue

 

The possible reasons for these two stores to get out of sync are as follows:

 

  1. Resetting the database: resetting the database tables or changing to a new database schema without also resetting the embedded LDAP store
  2. Resetting LDAP: resetting the embedded LDAP store without also resetting the database tables
  3. Updates without Admin Server: doing updates to DA or entitlement data via the Portal Admin Tools or Propagation Tool without a running Admin Server
  4. Download the patch referred to by this security advisory:

 

http://dev2dev.bea.com/pub/advisory/223

 

 

The following is a list of tips to avoid this issue:

 

  1. Understand and honor the coupling between the embedded LDAP store and database tables; do not reset one without the other.
  2. Ensure the cluster Admin Server is running while doing Propagations or manually administering DA and entitlements.
  3. Contact Support for the WebLogic Server patch for CR294340.

 

 

WebLogic Portal 9.2 GA Propagation Tool Symptoms

 

Users of the Propagation Tool on WLP 9.2 GA have noted serious problems with the Propagation Tool when the embedded LDAP and database have become out of sync. In general, the problem will cause any propagation operation on the affected application to fail. The following are partial stack traces seen while performing propagations on affected applications:

 

Stack Trace 1:

 

java.lang.NullPointerException

        at com.bea.p13n.entitlements.management.internal.

RDBMSRolePolicyManager.getRolePolicy(RDBMSRolePolicyManager.java:394)

        at com.bea.p13n.entitlements.management.internal.

RDBMSRolePolicyManager.getRolePolicy(RDBMSRolePolicyManager.java:297)

 

Stack Trace 2:

 

java.lang.NullPointerException

at com.bea.p13n.management.inventory.hierarchy.nodes.appresident.security.roles.nodes.

DARoleMainServiceNode.getDARoleXML(DARoleMainServiceNode.java:143)

at com.bea.p13n.management.inventory.hierarchy.nodes.appresident.security.roles.nodes.

DARoleMainServiceNode.><init>(DARoleMainServiceNode.java:128)

 

Stack Trace 3:

 

<Error> <Entitlements> <BEA-402726> <Attempt to access Entitlement Policy Mgmt API by user in invalid role. Entitlement Policy operation attempted by disallowed user ["principals=[portaladmin, Administrators, PortalSystemAdministrators]"].>

 

Recovery Procedure

 

A support case should be opened with BEA Customer Support and reference CR299272. The support organization will provide the official recovery procedure.

The following is an unofficial recovery procedure that can be followed for non-critical environments. All entitlement and delegated administration data will be lost using this procedure.

 

Quick Fix:

 

  1. Shutdown all servers in the domain.
  2. On the admin server, delete the internal LDAP directory at \servers\AdminServer\data\ldap
  3. Delete all entries from p13n_entitlement_role, p13n_entitlement_resource, p13n_entitlement_policy, p13n_entitlement_application and p13n_delegated_hierarchy tables
  4. Start the admin server
  5. Start the managed servers

 

New Domain:

 

  1. Make a backup of the Admin Server domain directory.
  2. Recreate the Admin Server domain directory using the configuration wizard.
  3. Configure the new domain, using the backup files as a reference.
  4. Truncate the ER database tables in the WLP database schema.
  5. The application code in the .EAR file, and the rest of the WLP database schema can be retained without changes.

 

 

 

 


Known Issues

 

This section contains a list of issues that users may encounter while using the Propagation Tool. Not all of these are product issues – some are common user mistakes that get reported as product issues. In all cases, future versions of the Propagation Tool should improve upon these issues.

 

If you encounter any issue listed as a product bug and the provided workaround is not sufficient, you may open a case with BEA Support and request a patch.

 

General

 

                    Propagation fails to propagate Security Roles and Entitlements

Reference: CR305936

Status: Product Bug, or Works by Design

Symptom: Security roles and entitlements that were set to propagate will not appear on the destination server.

 

Errors may or may not appear on the console indicating that there are problems adding an artifact such as a Role or Entitlement. The Roles and Entitlements will not propagate. Exceptions will appear such as:

  • Failure updating a security policy. com.bea.p13n.entitlements.common.PolicyExistsException
  • can_vis_create__Entitlement cannot be processed further

Causes: There are two causes for this problem. One is “Works by Design”, and the other is a Product Bug.

 

Cause 1:

The enterprise application name must match between the two environments. If they don’t, the Propagation Tool will add the Roles and Entitlements using an incorrect application scope to add those artifacts. Changing the application name is not supported in WLP 9.2 Propagation Tool, and so the solution is to make the application names the same.

 

Cause 2:

Due to a Product Bug, this can also be caused by the source and destination using different form factors for deployment. If the source is an Exploded Directory, while the destination application is deployed as a compressed EAR, this problem will occur. This causes a subtle change in the application name.

Workaround:  Cause 1: use matching application names between source and destination environments. Cause 2: use matching application deployment formats in both environments as a temporary solution. Request a patch for CR305936 for a fix to the application deployment problem.

 

 

         Propagation fails trying to add an artifact because the artifact already exists

Reference: CR296677

Status: Works as designed

Symptom: Errors will appear on the console indicating that there are problems adding an artifact in any area of the inventory (Content, Portal, Security, etc)

Cause: The user invoking propagation has more DA rights to the source application than the destination application. Because of this, the source inventory contains more artifacts than the destination inventory. The Propagation Tool therefore believes that those artifacts need to be added to the destination. Upon doing so, the Add operation fails because that artifact already exists in the destination, but is obscured by DA.

Solution:  Works by design. In general, it is best to propagate with a user that has full DA rights to an application. See the Best Practice above.

 

 

Propagation onlineUpload task will not work if user is not given Upload permission in WLS Console

Reference: CR296752

Status: Works as designed

Symptom: Errors will appear on the console indicating that there are problems reading the uploaded inventory.

<Error> <InventoryServices> <000000> <FAILURE: There was no uploaded

inventory in the request.>

<Error> <InventoryServices> <000000> <The files in the upload directory could not be read.

Cause: WebLogic Server restricts the right to uploading files to a server to the Administrator and Deployer roles. This is a security mechanism to defend against Denial of Service attacks.

Solution:  Works by design. The user invoking propagation must be in the Administrator or Deployer roles, or explicitly granted this right in the WebLogic Console. See http://e-docs.bea.com/wls/docs92/secwlres/types.html

 

 

Cannot propagate between Applications that are not identical in the J2EE sense

Reference: N/A

Status: Works as designed

Symptom: Errors will appear on the console indicating nodes cannot be added because its parent does not exist. The parent is usually a web application name, or a resource that comes from files within the web application, like .portlet, .shell, .laf files for example.

Cause: The Propagation Tool assumes that the .EAR file that was used in source will be moved to destination and the core J2EE structure will not be modified by deployment plans. This includes maintaining the same name for the application, and context paths for all web applications.

Solution:  Works by design. However, BEA is currently evaluating a feature that would allow for certain aspects of the EAR to change during promotion, like web application context paths.

 

FileNotFoundException due to “Too many open files” on Unix platforms

Reference: CR266997

Status: Product bug.

Symptom: Invoking the onlineCommit task (or Eclipse Export) on a WLP application will cause errors to appear on the console like:

 

java.io.FileNotFoundException  and  (Too many open files)

 

Cause: a bug causes a certain number of file descriptors to be left open in certain cases.

Workaround:  Increase the number of file descriptors (limits.conf).

 

Content Propagation

 

 

Small incremental propagation to a large content repository can take too long.

Reference: CR300178

Status: Performance problem.

Symptom: The onlineCommit Ant task and Eclipse Export operations takes a very long time against an environment that has a large amount of data in the content repository. This can result in messages on the server console such as:
 
<Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "705" seconds working on the request "Http Request: /webapp/inventorymanagement", which is more than the configured 
time (StuckThreadMaxTime) of "600" seconds.

 

The propagation will eventually complete successfully, but the amount of time taken is undesirable. This performance issue will occur even if the number of changed items is small (adding 3 content nodes, for example).

 

Cause: The Propagation Tool is being overly cautious about processing changes against the target content repository. It does extensive validation that the set of proposed changes will be accepted by the repository.

Workaround:  The validation work that Propagation is doing is generally too pessimistic. It does not assume that Maintenance Mode was set on the target repository and therefore wants to reconfirm the validity of the proposed changes.

 

However, even in the rare case that Propagation attempts an invalid change, the content repository itself will reject the change. The cases in which this can occur involve Propagation use cases in which types that are in use within the repository are being substantially changed or deleted. Stack traces will appear in those edge cases, and so Propagation is being cautious to avoid these scenarios.

 

Since those cases are rare, and the content repository will not allow destructive changes, it is generally acceptable to decrease the amount of validation being done for content propagations. For the onlineCommit task, the “pessimistic” mode is the default option. Changing that mode for content propagations to “optimistic” will improve performance dramatically.

 

This change will not resolve the problem entirely. If performance is still not acceptable a Support case should be opened referencing CR300178.

 

 

Propagation cannot alter the inheritance of a Content type

Reference: CR299114

Status: Product bug.

Symptom: Errors will appear on the console indicating that a type could not be added because the type already exists:

<Error> <InventoryServices> <000000> <Encountered an UNRECOVERABLE exception while processing election Application:ContentServices:BEA

Repository:ContentTypes:book.  Problem: (Could not add content type book because the type already exists.).  This election will not be processed further.>

Cause: This is a product bug. A type is being propagated that has changed its inheritance hierarchy. For example, if in destination type book inherits from type product, but in source the book type does not inherit any type. The Propagation Tool is not handling this case properly.

Workaround:  Manually update the type in destination or request a patch.

 

 

Propagation download fails when propagating content repository; could not

read InputStream for a binary property.

Reference: CR297422

Status: Configuration error.

Symptom: Errors will appear on the console indicating that there are problems reading or writing InputStreams for Content items.

<Error> <ContentManagement> <000000> <com.bea.content.RepositoryException: java.io.IOException: Stream closed
        at com.bea.content.internal.server.dao.

           DaoBase.doDatabaseAction(DaoBase.java:248)
        at com.bea.content.internal.server.dao.

           DaoBase.doExecuteActionAndCloseConnection(DaoBase.java:204)

Cause: This has only been seen by Oracle database users using an unsupported Oracle 9i Thin  database driver.

Solution:  Use a supported database driver, such as 10G Thin. See:
http://e-docs.bea.com/platform/suppconfigs/configs92/92_over/supported_db.html

 

 

Problem with Content boolean properties with value "undefined"

Reference: CR295866

Status: Product bug.

Symptom: An exception will appear on the console:

java.lang.NullPointerException
        at com.bea.content.management.inventory.online.util.
          XmlBeanTranslator.constructPropertyChoicesAsXmlBean(
          XmlBeanTranslator.java:834)

Cause: This is a product bug. A type is being propagated that has a Boolean property with default value “undefined”, which is not properly handled.

Workaround:  Set the default value to be “true or “false”.

 

 

Timeouts seen while exporting a content repository.

Reference: CR306895

Status: Product bug.

Symptom: Errors will appear on the console while exporting a content repository. These

errors will also be seen when browsing certain nodes of the repository using the Portal

Admin Tools. The exception stack trace begins with:

 

com.bea.content.RepositoryException: java.sql.SQLException: The transaction is 
no longer active - status: 'Marked rollback. 
[Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out 
after 29 seconds BEA1-5437CAD06B6C505EB8E6]'. No further JDBC access is allowed 
within this transaction.
        at com.bea.content.internal.server.dao.DaoBase.doDatabaseAction(DaoBase.java:243)
        at com.bea.content.internal.server.dao.DaoBase.
doQueryWithMetaDataActionAndCloseConnection(DaoBase.java:187)
        at com.bea.content.repo.internal.server.dao.NodeDao.
findByPrimaryKey(NodeDao.java:424)
        at com.bea.content.repo.internal.server.logic.NodeOpsLogic.
findByPrimaryKey(NodeOpsLogic.java:413)
        at com.bea.content.repo.internal.server.bean.NodeOpsBean.
findByPrimaryKey(NodeOpsBean.java:158)

 

Cause: This has been seen in cases where a single node contains thousands of direct children. For example, a content folder that has 3000 image nodes directly underneath it.

Workaround:  Limit the amount of direct children for a node to number in the hundreds, not thousands.

 

 

 

Problems propagating the Groupspace Sample Application

Reference: CR297924

Status: Samples bug.

Symptom: Errors will appear on the console while propagating the Groupspace Sample application. The exception stack trace begins with:

Caused by: javax.ejb.TransactionRolledbackLocalException: EJB Exception: ; nested exception is: 
java.lang.StringIndexOutOfBoundsException: String index out of range: -1

 

Cause: Several sample forum entries in the Content Repository created by the Sample data loader scripts have invalid entries in the FULL_PATH column.

Workaround:  Remove the sample data from the repository.

 

 

Portal Framework

 

Failure propagating a desktop that contains duplicated portlets

Reference: CR298084, CR300695

Status: Product bug.

Symptom: Within the Portal Administration Tool, it is possible to duplicate an existing library portlet using the “Copy” feature. This new portlet exists only in the database, and does not have a corresponding .portlet file in the web application. It is possible to propagate these duplicated portlets. However, if a duplicated portlet is added to a desktop, the propagation will fail with SAXParseExceptions such as:

 
Parser Error...
 
org.xml.sax.SAXParseException: 
cvc-complex-type.3.2.2: Attribute 'categoryIds' is not allowed to appear in element 'netuix:portlet'.

 

org.xml.sax.SAXParseException: 
cvc-complex-type.3.2.2: Attribute 'instanceLabel' is not allowed to appear in element 'netuix:portlet'.
 
org.xml.sax.SAXParseException: 
cvc-complex-type.3.2.2: Attribute 'placementId' is not allowed to appear in element 'netuix:portlet'.

 

 

Cause: This is a product bug.

Workaround:  None. Open a Support Case to receive a patch.

 
 

Propagation Incorrectly Attempts to Propagate Deleted Portal Framework Assets

Reference: CR306139

Status: Product Bug.

Symptom: During a propagation, errors related to portlet files, look and feel files, and other file based resources will appear on the console:

 

<Warning> <InventoryServices> <000000> <A file based portlet (.portlet file) can only be deleted by removing it from the WAR. webapp myWebapp portlet myOldPortlet.portlet>
<Warning> <InventoryServices> <000000> <Add election 
Application:portalservices:myWebapp.WebApp:myWebapp.Library:oldBrand.LaF:
oldBrand.Localization cannot be processed because the items parent does not exist.>

 

Cause: File based artifacts associated with the Portal Framework (.portlet, .laf, .shell, .etc) are loaded into the database at web application deployment. This allows these artifacts to be managed in the Portal Admin Tools. If those files are deleted from the web application, the database is updated to mark those entries as deleted, but the entry itself still exists. The Propagation Tool does not properly filter those entries out when generating an inventory, and so it will try to propagate deleted resources. This will result in errors, as Propagation cannot, and should not, recreate the files in the web application.

Workaround:  These messages can be ignored, or a patch can be obtained through Support.

 
 
 

Improve support and documentation for WSRP Portlet Propagation

Reference: CR292151

Status: Documentation enhancement.

Symptom: Currently, only the WSRP portlet library definitions are propagated. Instance level settings for desktops, such as preferences, are not propagated. Also, the documentation on WSRP is not clear on what is propagated, and what Shared Registration means.

Cause: WLP 9.2 currently supports WSRP 1.0, which does not have many necessary features to properly propagate instance level information. WSRP 2.0 has been ratified, and contains the necessary features. Improved propagation support will be included in a future release of WLP along with WSRP 2.0. The documentation will continue to be enhanced to reflect the current status and more details of what exactly is propagated.

Solution:  Support for WSRP 2.0 will make improvements possible.

 

Windows Operating System

 

 

Problem uploading an inventory to a Windows server

Reference: CR266997

Status: Product bug.

Symptom: Invoking the onlineUpload task (or Eclipse Export) on a WLP application will cause errors to appear on the console like:

<Error> <InventoryServices> <000000> <Could not delete file

[filepath]\content_0.zip.>

 

Cause: a bug causes a certain number of file descriptors to be left open in certain cases.

Workaround:  Restart the affected Managed Server.

 

 

Infinite loop during Propagation download on Windows

Reference: CR298133

Status: Product bug.

Symptom: Invoking the onlineDownload task (or Eclipse Import) on a WLP application will cause the propagation servlet to enter an infinite loop on the method WinNTFileSystem.getBooleanAttributes (). This can be seen by taking a thread dump of the application server.

Cause: This is a product bug and should be a rare problem. The Propagation Tool is trying to find an available filename for a configuration artifact in the inventory, using the name of the artifact as the base filename. Due to an issue with Windows file systems, it will never find an available name and loop indefinitely. There are a set of special filename patterns (called phantom files) that can never be used because they map to logical device names. Windows will say they already exist (case insensitive):
·        CON.*
·        NUL.*
·        LPT1.*, LPT2.*, LPT3.*
·        COM1.*, COM2.*, COM3.*, COM4.*
·        AUX.*
·        PRN.*

If any inventory artifact name matches any of these phantom filename patterns, the infinite loop will occur on a Windows machine. For example, creating a desktop with desktop path con.dor will result in the Propagation Tool trying to create a file called con.dor.dti, which will fail. It will then try con.dor1.dti, con.dor2.dti, and so on without succeeding.

Workaround:  Avoid using these naming patterns in Windows environments.

 

 

Eclipse User Interface

 

Importing large inventories with Eclipse Prop Tool causes SocketException

Reference: CR297423

Status: Under observation.

Symptom: Invoking Import Inventory from Server from the Eclipse UI will result in a delay, and then the propagation fails. A SocketException: Broken pipe is the listed cause.

Cause: This problem has not been reproduced within BEA. It may relate to the size of the inventory or network connection issues. One customer found this to be caused by an intervening proxy server that was timing out the network connection.
Workaround: Use the onlineDownload task fro