Documentum Composer Quick Start Guide
Documentum Composer Quick Start Guide
ABSTRACT
This white paper explains how to configure the JMS HA/failover and configuring
methods for failover. The white paper describes the steps to track the execution
of methods from logs.
November 2013
TABLE OF CONTENTS
ABSTRACT ............................................................................................................................................. 1
TABLE OF CONTENTS ............................................................................................................................. 2
INTRODUCTION ..................................................................................................................................... 4
Java method server ............................................................................................................................. 4
How does the method server work? ....................................................................................................... 4
Its a web application ..................................................................................................................... 4
Java Method Server for High-Availability ................................................................................................ 5
Failover ........................................................................................................................................ 5
Load balancing .............................................................................................................................. 5
Audience ............................................................................................................................................ 5
JAVA METHOD SERVER FOR HIGH AVAILABILITY .................................................................................. 6
TYPE1: SINGLE HOST SETUP .................................................................................................................. 7
STEPS FOR CONFIGURING JMS HA 7.0................................................................................................... 8
1.
Preparing for Installation/Prerequisite: ......................................................................................... 8
Content Server in HA ..................................................................................................................... 8
Packaging WebApps ....................................................................................................................... 8
2.
Creating second JMS Instance ..................................................................................................... 9
3.
Verification of Instance .............................................................................................................. 15
dm_jms_config : .......................................................................................................................... 15
4.
Associating Content Servers with JMS Instance ............................................................................ 16
5.
Refresh Content Server Cache .................................................................................................... 17
6.
DUMP_JMS_CONFIG_LIST .......................................................................................................... 18
Configuring HA parameters ................................................................................................................. 22
Enabling logs and Understanding logs ................................................................................................... 22
Error Messages: ........................................................................................................................... 23
Sample Logs ..................................................................................................................................... 23
Server.log ................................................................................................................................... 23
Docbase.log ................................................................................................................................. 24
System Methods details ...................................................................................................................... 25
Options for method ............................................................................................................................ 26
Verification steps ............................................................................................................................... 26
Limitations ........................................................................................................................................ 27
Custom Method configurations ............................................................................................................. 27
TYPE2: TWO HOST HA SETUP ............................................................................................................... 28
Digital Signature Verification ............................................................................................................... 28
TYPE3: MULTIPLE HOSTS SETUP .......................................................................................................... 30
STEPS FOR CONFIGURING JMS HA 6.7 SP2 .......................................................................................... 31
TYPE1:SINGLE HOST SETUPFOR 6.7 SP2 ............................................................................................. 31
1.
Preparing for Installation/Prerequisite: ........................................................................................ 31
Content Server in HA .................................................................................................................... 31
Packaging WebApps ...................................................................................................................... 31
2.
Creating second JMS Instance .................................................................................................... 31
3.
Verification of Instance and Associating Content Server with JMS Instance ...................................... 32
INTRODUCTION
Java method server
The Documentum 5 platform introduced the Java method server as a means of improving the performance and scalability of the
Documentum method architecture. In the past couple of years, Documentum has focused on Java as a cornerstone for its
technology. Documentum clients are being written in Java more and more frequently. The core Documentum libraries are
implemented in Java. Running Java-based methods, however, has been the most painful of experiences. The Java method
server aims to fix this.
The method server runs as a process distinct from the Content Server and is responsible for the invocation of the individual
methods. Each method invocation results in a call to the method server which manages the actual execution of the Java-based
method implementation. As the method server is a continuously running process, there is no overhead involved in loading and
tearing-down a Java virtual machine with each invocation. This yields an enormous benefit in overhead.
As methods are typically executed over and over again, the classes involved in the implementation of the method only need be
loaded once. Other overhead, such as the creation of docbase sessions may also be reduced as the method server may reuse
sessions with connection pooling. The result is methods that execute in milliseconds instead of seconds and which use
significantly fewer system resources.
Failover
In a failover setup, if one of the Content Servers fails, the other Content Servers in the failover setup continues with the service.
Load balancing
Load balancing involves operating redundant Content Servers where the service load is balanced between Content Servers to
maximize performance. In a standard Content Server load-balancing scenario, proximity values are used to determine which
Content Server processes an item. In a cluster scenario, third-party load-balancers are used.
Audience
The information in this guide is for application and system administrators who use CS and JMS software to deploy and custom
method. The intended audience is EMC support personnel, professional services, and customers.
Terminology
To extend the system, you must add more content servers. Each content server has its own default local embedded JMS.
Therefore, you can have as many JMSs as the number of CSs in the system.
Limited to one JMS per content server, other CSs JMS are used as backup.
Under normal operation, Content server always communicates to its own default local embedded JMS. It will use failover
JMS only if its default embedded JMS becomes unavailable. Content server will resume using its own default JMS when that
it comes back online.
For a Single Host setup both the Primary and Secondary Content Server are installed on the same Host.
The Primary JMS will be installed and configured during the Primary Content Server Installation.
After the Content Servers are installed the second JMS is installed and configured.
Packaging WebApps
The WebApps are deployed on the first JMS. Using the jmsConfig.exe, package WebApps to be deployed on the second JMS.
ServerApps.ear - WebApp has to be deployed for the JMS server.
In the webappsToInclude.txt, add the names of the WebApps to be packaged. This file is found under
$Documentum\jmsTools\config\webappsToInclude.txt
Run the jmsConfig.exe tool under $Documentum\jmsTools\bin.
Select Package only option. And Click Next
On the Select Configuration mode page, select Create Instance and click Next.
Provide an Instance Name for the JMS and Click Next.
10
11
On Configure repository domain name, by default the fully qualified DNS is given. Verify and click next.
Provide the Primary Instance Installation Owner and Primary Connection Broker details:
12
13
Select Yes in the below screen since the primary content server is installed on same host.
For multi host setup - select No as the primary CS and secondary CS are on different host.
14
3. Verification of Instance
Start the new JMS instance. Run the startsecondJMS.bat or from Services start Documentum Java Method Server
instancename.
dm_jms_config :
This object represents an instance of Java method server. It contains information about servlet_names, base_uris, its
associated content server(s), and respective jms to cs proximity value(s)
Run Iapi query:
?,c,select r_object_id,object_name from dm_jms_config
An additional object will be created. Verify the object name displays JMS secondHost:port
List of jms_config objects
15
16
By Default the first JMS will be associated with primary/first Content Server.
At run time, content server will figure out which JMS object defined in database is considered as default local embedded JMS,
which one is for load balancing, and which one is for failover.
In a multi-server-single-docbase environment, issuing this RPC call on one content server will only refresh that connected
servers cache. It does not refresh other content servers caches.
To force refresh a target content servers JMS config list kept in its cache, this RPC call must be issued from within a connected
session (an established session to the target content server).
17
6. DUMP_JMS_CONFIG_LIST
RPC function DUMP_JMS_CONFIG_LIST is introduced to allow administrators to see the current status of the JMS list kept in
content servers cache (i.e. shared memory), in real time. The typed object returned from this RPC call contains information
about the last time the list was refreshed, which jms are marked as dead in server cache (even though their is_disabled
attribute in dm_jms_config object is set to F as not-disabled, in the database).
If a JMS is marked as dead in server cache, DUMP_JMS_CONFIG_LIST will show when was the last failure that caused server
to believe its dead, and when will the server re-try to POST to this dead JMS again, how many times have we failed to send
HTTP POST requests to that JMS.
In a multi-server-single-docbase environment, running DUMP_JMS_CONFIG_LIST on different servers could result in different
views/output. The same jms config object could be considered as default local embedded JMS for a primary content server, but
it is also considered as a failover jms for secondary content server, but it would not have been considered a failover jms for 3rd
content server if the 3rd is an RCS
Connect to each content server, run REFRESH_JMS_CONFIG_LIST RPC to refresh content server cache, then run
DUMP_JMS_CONFIG_LIST RPC to examine the JMS failover information stored in content server cache. Connect to CS1, then
CS2, run these two RPCs one by one.
API> connect,Repository.CSconfiguration,CS-Administrator,Password
...
s1
API> apply,c,NULL,REFRESH_JMS_CONFIG_LIST
...
q0
API> close,c,q0
...
OK
API> apply,c,NULL,DUMP_JMS_CONFIG_LIST
...
q0
API> next,c,q0
...
OK
API> dump,c,q0
...
USER ATTRIBUTES
jms_list_last_refreshed
incr_wait_time_on_failure
max_wait_time_on_failure
current_jms_index
jms_config_id
18
: 30
: 3600
: -1
[0]: 0800009080000cc3
[1]: 0800009080000d77
jms_config_name
server_config_id
[0]: 3d00009080000102
[1]: 3d00009080000d2e
server_config_name
[0]: RepoJMS1
[1]: csjmsha_RepoJMS1
jms_to_cs_proximity
[0]: 1
[1]: 1
is_disabled_in_docbase
[0]: F
[1]: F
is_marked_dead_in_cache
[0]: F
[1]: F
intended_purpose
[0]: DM_JMS_PURPOSE_DEFAULT_EMBEDDED_JMS
[1]: DM_JMS_PURPOSE_FOR_FAIL_OVER
last_failure_time
[0]: N/A
[1]: N/A
next_retry_time
[0]: N/A
[1]: N/A
failure_count
[0]: 0
[1]: 0
SYSTEM ATTRIBUTES
APPLICATION ATTRIBUTES
INTERNAL ATTRIBUTES
API> close,c,q0
...
OK
19
Content Server 1
20
Content Server 2
21
Configuring HA parameters
Two new configuration parameters are introduced in server.ini for JMS failover.
o
incremental_jms_wait_time_on_failure=30
jms_max_wait_time_on_failures=3600
These two config params are optional, if not present in server.ini, default values are 30 and 3600 seconds (3600 seconds is 1
hour) respectively.
incremental_jms_wait_time_on_failure config value is used for content server to determine what time should it retry to
POST to a previously failed Java method server again. By default, the incremental time interval is set to 30 seconds.
jms_max_wait_time_on_failures config value is to put a cap on wait time so that we dont end up waiting for days or
weeks for the next retry time. Default jms_max_wait_time_on_failures is 1 hr (i.e. 3600 seconds).
To turn on trace_launch at content server level, run the below commands from IAPI
For HTTP POSTs:
apply,c,NULL,SET_OPTIONS,OPTION,S,trace_http_post,VALUE,B,T
For Complete Launch:
apply,c,NULL,SET_OPTIONS,OPTION,S,trace_complete_launch,VALUE,B,T
The debug tracing details are logged in server.log under $Documentum\dba\log\RepositoryName.log
To turn on trace_launch at method level, while running the method enable trace launch option.
The debug tracing details are logged in server.log under $Documentum\dba\log\RepositoryName.log
22
Error Messages:
DM_METHOD_E_HTTP_COMMUNICATION
The app server which the Content Server tried to send POST request to, is unavailable/down
DM_METHOD_E_HTTP_POST_APP_SERVER_NAME_NOTFOUND
Theres no matching app_server_name/servlet_name value found in any of the dm_server_config/dm_jms_config objects
DM_METHOD_E_NO_JMS_AVAILABLE2
Content server believes all of the Java method servers are currently down and not accepting any POST requests. No one is
available.
DM_METHOD_E_HTTP_POST_FAILED
Content server failed to send POST request to app server
Sample Logs
Server.log
03:09:00,212 INFO [stdout] (http--0.0.0.0-8080-2) <DCTM><DEBUG> HTTP request from 10.31.69.85, invoking
com.emc.documentum.server.method.rename.UserRename.execute(), ARGUMENTS []
03:09:00,233 INFO [stdout] (http--0.0.0.0-8080-2) <DCTM><INFO> [http--0.0.0.0-8080-2:Method
name=com.emc.documentum.server.method.rename.UserRename] Completed executing. Total Time Taken: 0 secs
03:09:28,186 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString():
signatureParams=method_verb,__dm_docbase__,__dm_server_config__
03:09:28,189 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString(): paramName=method_verb
03:09:28,192 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString():
paramVals[0]=com.emc.documentum.server.method.rename.UserRename
03:09:28,194 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString():
encodedParamValue=com.emc.documentum.server.method.rename.UserRename
03:09:28,197 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString():
paramName=__dm_docbase__
03:09:28,199 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString(): paramVals[0]=Repo1
03:09:28,200 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString(): encodedParamValue=Repo1
03:09:28,202 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString():
paramName=__dm_server_config__
03:09:28,204 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString(): paramVals[0]=csd70_Repo12
03:09:28,206 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString():
encodedParamValue=csd70_Repo12
03:09:28,209 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> constructQueryString():
queryString=method_verb=com.emc.documentum.server.method.rename.UserRename&__dm_docbase__=Repo1&__dm_serve
r_config__=csd70_Repo12
03:09:28,212 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> validateDigitalSignature(): docbaseName=Repo1
03:09:28,213 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> validateDigitalSignature():
signature=My6j6Mgcbxac1XDy/B1aL64CYnyyH1E4UIPb/yhoHcq3Uet43KvYVIMYEpGrByaSMJvft6wbHoZWs14qmlB6V+ihSFVi+3rN
n9+dnRAUH1ksY0L66qyr8FJbV3alcscOOpaJlPy6VsymCwAv02iptkmw9C3er3p83b5aShJVrF0=, signature.length()=172
03:09:28,218 INFO [stdout] (http--0.0.0.0-8080-3) <DCTM><DEBUG> validateDigitalSignature():
installOwnerName=Administrator
23
Docbase.log
013-10-22T03:08:58.072000 5596[7388]
0100007b800025a3
0100007b800025a3
launch: failed: user: Administrator, session id: 0100007b800025a3, JMS id: 0800007b80000cc7, method:
dm_UserRename_Java, host:csd70.emcccsa.com, port:9080, path:/DmMethods/servlet/DoMethod
2013-10-22T03:08:59.127000 5596[7388]
0100007b800025a3
0800007b80000cc7 (JMS csd70.emcccsa.com:9080 for Repo1.Repo1): Error is "Failed to obtain socket for
host:csd70.emcccsa.com, at port:9080", :Marking this JMS config as dead server cache.
2013-10-22T03:08:59.127000 5596[7388]
0100007b800025a3
0100007b800025a3
launch: successful: user: Administrator, session id: 0100007b800025a3, JMS id: 0800007b8000151e, method:
dm_UserRename_Java, host:csd70.emcccsa.com, port:8080, path:/DmMethods/servlet/DoMethod
2013-10-22T03:09:00.286000 5596[7388]
0100007b800025a3
24
dm_DistOperations_dmcl40
JMS_LOCATION=MAIN
dm_RefreshReplicaMethod
JMS_LOCATION=MAIN
dm_bp_transition_java
JMS_LOCATION=ANY
dm_bp_schedule_java
JMS_LOCATION=ANY
dm_bp_batch_java
JMS_LOCATION=ANY
dm_bp_validate_java
JMS_LOCATION=ANY
dmc_MigrateDbExprsToJava
JMS_LOCATION=ANY
dmc_MigrateDbExprsToJavaForType
JMS_LOCATION=ANY
dmc_SetJavaExprEnabled
LOCAL_ONLY
dmc_AddCustomJavaExpr
LOCAL_ONLY
CTSAdminMethod
JMS_LOCATION=ANY
dm_ldif_export
dm_ldif_copy
dm_ldif_import
dm_ldif_status
dm_LDAPSynchronization
LOCAL_ONLY
LDAPSync
LOCAL_ONLY
LDAPSyncOnDemand
LOCAL_ONLY
dm_LDAPCertDbAutomation
LOCAL_ONLY
dm_dcfEdit
LOCAL_ONLY
dm_run_dependent_jobs
LOCAL_ONLY
dm_getClientDocbrokers
LOCAL_ONLY
dm_webcache_publish
LOCAL_ONLY
dm_bpm_transition
JMS_LOCATION=ANY
dm_bpm_timer
JMS_LOCATION=ANY
dm_WfmsTimer
JMS_LOCATION=ANY
TCFActivityMethod
JMS_LOCATION=ANY
TCFWorkitemActivityMethod
JMS_LOCATION=ANY
dm_FTCreateEvents
JMS_LOCATION=ANY
dm_FTStateOfIndex
JMS_LOCATION=ANY
dm_FTIndexAgentBoot
JMS_LOCATION=ANY
dm_FTOptimizeIndex
LOCAL_ONLY
dm_event_template_sender
JMS_LOCATION=ANY
dm_AsynchronousWrite
JMS_LOCATION=ANY
dm_PreCacheContent
JMS_LOCATION=ANY
dm_noop_auto_method_java
JMS_LOCATION=ANY
BPMCreateFolder
JMS_LOCATION=ANY
25
BPMLifecycleAttach
JMS_LOCATION=ANY
BPMLifecycleDemote
JMS_LOCATION=ANY
BPMLifecyclePromote
JMS_LOCATION=ANY
BPMLinkToFolder
JMS_LOCATION=ANY
BPSFTIntegration
JMS_LOCATION=ANY
BPSHTTPIntegration
JMS_LOCATION=ANY
BPSJMSIntegration
JMS_LOCATION=ANY
BPSMQJMSIntegration
JMS_LOCATION=ANY
BPSSMTPIntegration
JMS_LOCATION=ANY
BPSWebServiceIntegration
JMS_LOCATION=ANY
BPSIntegration
JMS_LOCATION=ANY
dm_bps_mail
JMS_LOCATION=ANY
dm_QmCheckVerificationThreshold
JMS_LOCATION=ANY
dm_QmPriorityAging
JMS_LOCATION=ANY
dm_QmPriorityNotification
JMS_LOCATION=ANY
dm_QmSetRequiredSkill
JMS_LOCATION=ANY
dm_QmThresholdNotification
JMS_LOCATION=ANY
dm_WFCheckPoint
JMS_LOCATION=ANY
dm_WFExportData
JMS_LOCATION=ANY
dm_WFReporting
JMS_LOCATION=ANY
dm_WFReportPackageData
JMS_LOCATION=ANY
dm_WFSuspendTimer
JMS_LOCATION=ANY
DmSampleActivityTemplate
JMS_LOCATION=ANY
ECISMethod
JMS_LOCATION=ANY
ObservationPoint
JMS_LOCATION=ANY
PostEventtoParentWorkflow
JMS_LOCATION=ANY
StartSub-Process
JMS_LOCATION=ANY
XSLTransformation
JMS_LOCATION=ANY
Verification steps
Method should be executed via second JMS. Verify the logs. Logs for second JMS would contain the method execution
information.
26
Method should be executed via first JMS. Verify the logs. Logs for first JMS would contain the method execution information.
Limitations
Some java method must be run on primary content server, some must be run on same host as originating content
servers host
Default JMS for Content File Server/Remote Content Server (aka RCS) do not participate in JMS failover
We do not support JMS load balancing. A single content server cannot be explicitly associated to multiple Java method
servers.
If JMS is crashed during ASYNC method execution, content server cannot detect the crash, hence will not failover to
another JMS
If custom methods wish to take advantage of the JMS failover feature, make sure the method is failover aware. Set
Is_restartable parameter to True (default is false
If the method is failover aware, but method must be run on a JMS thats on the same host as originating content server host,
then set a_extended_properties[0] = JMS_LOCATION=ORIGINAL
If method can be run on any CS-bound JMS, then set a_extended_properties[0] = JMS_LOCATION=MAIN
If method can be run on any JMS, then leave a_extended_properties attribute blank or assign value JMS_LOCATION=ANY. If
left blank, it is assume the method can be run on any JMS. Default value is blank.
27
Two Host HA Setup the primary and secondary Content Servers are installed on different hosts.
On the Second Content Server, the second content server has to be installed and configured.
For creating a second JMS, the same steps as single host JMS HA are followed. During the screen Is Primary Content Server,
select the option NO.
To Install Content Server in HA refer to Content_Server_Enterprise_Edition_7.0_Installation_Guide.
In a single JMS model, JMS and CS are always hosted on same machine.
Before running the Java method, to prevent malicious cyber-attacks, to make sure the HTTP POST request is legit, JMS
Do_Method servlet performs IP validation to make sure request is originated from the same host as JMSs host.
In a JMS failover environment, IP validation would fail if content server tries to send method requests to a failover JMS on a
different host.
28
To address this IP security restriction, weve introduced digital signature validation instead.
Signature is signed by using the repositorys private key, and is then verified using the repositorys public key.
29
More than 2 Content servers can be clustered. Similarly the Java method server associated with each Content Server can be
configured for High Availability.
Same steps are followed for configuring the JMS HA as for 2 nodes.
30
Packaging WebApps
The WebApps are deployed on the first/primary JMS. Using the jmsPackager.bat, package WebApps to be deployed on the
second/additional JMS.
ServerApps.ear - WebApp has to be deployed for the JMS server.
In the webappsToExclude.txt, add the names of the WebApps to exclude from packaging. This file is found under
$Documentum\jmsTools\config\webappsToExclude.txt.
Run jmsPackager.bat file under $Documentum\jmsTools\bin.
After the Packaging is complete the WebApps are located at $Documentum\jmsTools\webapps\jmsWebApps.jar.
Copy the jmsWebApps.jar file on the machine to install second JMS under $Documentum\jmsTools\webapps path.
The steps are similar as for creating second JMS instance for 7.0.
31
Click on Next.
32
CONCLUSION
This whitepaper explains configuration of JMS High Availability with failover support setup. Describes the steps to enable
methods for failover and track the execution of methods from logs.
References
CONTACT US
To learn more about how
EMC products, services, and
solutions can help solve your
business and IT challenges,
contact your local
representative or authorized
reselleror visit us at
www.EMC.com.
33
www.EMC.com
EMC2, EMC, the EMC logo, and the RSA logo are registered trademarks or trademarks of EMC
Corporation in the United States and other countries. VMware a registered trademark of VMware,
Inc. in the United States and/or other jurisdictions. All other trademarks used herein are the property
of their respective owners. Published in the USA. 08/12 White Paper H12673