Previous Contents Index DocHome Next |
Process Manager 6.0 Programmer's Guide |
Chapter 3 Cluster Management
This chapter discusses the Java classes used for performing cluster administration tasks. This chapter has the following sections:Note: You can find all the necessary classes in the pm60classes.jar file in the api directory on the Process Manager 6.0 CD.
Introduction
A Process Manager cluster contains the following components:
a corporate user LDAP directory service
When deploying an application from Process Builder, application developers must identify the cluster on which to deploy it. All applications in a cluster share the same common database and directories. They access the same Directory Server for their process definitions and they use the same set of cross-application tables in the database, as well as the same corporate users and groups directory.a configuration LDAP directory service that stores the application definitions
a relational database for user data
Using the Process Administrator interface, you can interactively modify a cluster.
You can build Java applications that programmatically perform Process Manager cluster administration tasks. Process Manager has one cluster manager bean, IPMClusterManager. For each separate cluster, there is an IPMCluster bean.
You can use the cluster manager bean to perform administrative tasks such as creating, deleting, joining and unjoining clusters. You can also use the cluster manager bean to get handles to individual clusters beans.
You can use the cluster bean to change properties of the cluster, to access and write to cluster logs, and to retrieve information about the cluster such as getting installed applications, getting path information, getting the finder and getting the deployment manager.
Given an individual cluster bean, you can get individual application beans. Given an application bean, you can access any process instance or work item so long as you have the key, such as the process instance ID.
For details of IPMClusterManager and IPMCluster beans see:
IPMClusterManager
In Process Manager 6.0, there is only one cluster, but in future releases there may be multiple clusters.Clusters have properties. These are represented as IPMClusterProperty objects. Many of the methods for working with clusters take IPMClusterProperty objects as arguments. To create cluster property objects, you use IPMClusterPropertyFactory . For details see:
IPMClusterProperty
At the end of this chapter, there is a coded example of creating a cluster.
Code Samples
IPMClusterManager
The IPMClusterManager bean can be thought as a manager of all the cluster beans in the application server instance. In Process Manager 6.0, there is just one cluster, which is the default cluster. The IPMClusterManager manages the default cluster bean. But in the future, when Process Manager supports multiple clusters, the IPMClusterManager bean will manage all the different clusters for that application server instance.The following code shows how to access the cluster manager:
The IPMClusterManager bean is a stateless session bean that has the following methods:
createCluster -- create a new cluster
getCluster -- get access to a cluster bean
joinCluster -- join to a existing cluster
unjoinCluster -- unjoin from an existing cluster
deleteCluster -- delete an existing cluster
checkLDAPConnection -- check whether the cluster manager can connect to particular LDAP server
checkLDAPEntry -- check whether the cluster manager can read a particular entry from a LDAP server
checkDBConnection -- check whether the cluster manager can establish a connection with a DB
createCluster
This method creates a cluster. Use the IPMClusterProperty class to create the cluster properties needed when creating a new cluster.
IPMCluster createCluster (IPMClusterProperty prop)
This parameter is an IPMClusterProperty object that contains all the properties required to create the cluster. Use the IPMClusterPropertyFactory.create() method to create this. See Table 3-1 for a list of the optional and required properties for a cluster. If any of the required properties for the cluster are not set when this method is called, this method throws a PMException.
Description. This method does the following:
creates a deployment descriptor for a new bean
Process Manager 6.0 supports only one cluster at a time. If you create a new cluster when a cluster exists already, the new cluster overwrites the existing cluster.
Returns . The interface to the cluster bean.
Example. The following example creates a new cluster called cluster1 that overwrites the existing cluster.
IPMCluster getCluster (String name) throws PMException
This is the JNDI name of the cluster bean that is being looked up.
Example. The following example gets the default cluster:
// Get the default cluster
IPMCluster myCluster = myClusterManager.getCluster(
IPMCluster.DEFAULT);
joinCluster
Joins a new cluster to the original cluster.
IPMCluster joinCluster ( IPMCluster cluster )
This is the cluster to join. Use the getCluster method to get the cluster.
Description. This method performs the following tasks:
creates a deployment descriptor for a new cluster bean
unjoinCluster
Unjoins a cluster bean from the Process Manager cluster that it currently belongs to.
void unjoinCluster ( IPMCluster cluster)
This is the cluster to unjoin. Use the getCluster method to get the cluster.
Description. unjoins the cluster bean and unregisters the cluster bean from the JNDI name space.
deleteCluster
Deletes a cluster.
void deleteCluster ( IPMCluster cluster, boolean bDeleteTable )
This is the cluster to delete. Use the getCluster method to get the cluster.
If this parameter is set to true then the backend database tables are deleted otherwise not
Description. deletes the cluster bean and unregisters it from the JNDI name space. If bDeleteTable is true, the backend database tables are deleted otherwise not.
checkLDAPConnection
Checks whether a user can connect to the configuration or corporate directory at the given host name and port number.
void checkLDAPConnection (String hostName, String portNumber,
String userName, String password )
port number of the LDAP server
name of the user who is accessing the configuration or corporate directory
password of the user
Description. Checks whether the cluster bean can connect to the configuration or corporate directory. The userName and password can be empty strings for the corporate directory connection (for anonymous lookups).
checkLDAPEntry
Checks whether a given LDAP entry can be read.
void checkLDAPEntry ( String entry, String hostName,
String portNumber, String userName, String password )
Description . Checks whether the LDAP entry can be read.This method is typically used to verify whether the corporate directory base entry can be read.
checkDBConnection
Checks whether the given user can connect to the database with the given password.
void checkDBConnection ( String dbServerType, String dbServerName,
String dbServerIdentifier, String userName, String password )
The name of the database server. This an be an empty string if the database is ORACLE.
Description. checks whether the given user can connect to the database with the given password.
IPMCluster
IPMCluster objects represent individual clusters. For operations such as creating, deleting, joining and unjoining clusters, you call methods on the cluster manager class, IPMClusterManager, rather than calling methods on the cluster itself.To get access to an IPMCluster method, call the getCluster() method on the IPMClusterManager as illustrated in the following code sample:
The IPMCluster bean has the following methods for changing cluster properties, accessing logs and retrieving information about the cluster:
getClusterProperty
getCorporateDirectory
getClusterProperty
Gets the properties of the cluster as an IPMClusterProperty object.
IPMClusterProperty getClusterProperty( ) throws PMException
Description. Returns an IPMClusterProperty interface that contains all the properties of the cluster.
You can call the getValue() method on the returned IPMClusterProperty object to get a particular property, specifying one of the static ints described in Table 3-1 to identify the property.
// myCluster is an IPMCluster
// Get some properties
IPMClusterProperty myProp = myCluster.getClusterProperty();
String description =
myProp.getValue(IPMClusterProperty.DESCRIPTION);
changeCluster
This method changes the properties of a cluster.
void changeCluster ( IPMClusterProperty prop) throws PMException
The IPMClusterProperty object that contains the properties for the cluster.
Description. This method changes the properties of the cluster.
To change the properties of a cluster, first get an IPMClusterProperty either by:
calling getClusterProperty() on the cluster to get the current one.
To change the properties of an IPMClusterProperty object, use its setValue() method. When you have finished setting properties on the IPMClusterProperty object, call changeCluster() on the IPMCluster object, specifying the IPMClusterProperty object that contains the changes.creating a new one by calling create() on PMClusterPropertyFactory.
log
Logs exceptions to a cluster log.
An exception to be logged. This can be any arbitrary exception including PMExceptions.
Description. The log() method logs exceptions to the cluster log. The cluster maintains three different kinds of logs - error, information, and security.
This method takes any arbitrary exception including PMExceptions. If the exception is a PMException, this method introspects the exception object to determine what type ( error, information, or security) of an exception it is and logs the exception accordingly into the appropriate files.
If the exception is an ordinary Java exception, the exception is logged in the error file.
public Vector getLog( int logType, int size ) throws PMException
Indicates the type of log to access. The value can be:
The number of entries you want to see in the log. To see the entire log specify IPMClusterProperty.MAX_LOG_SIZE.
Description. This method accesses the logs and returns a vector of log objects. Each log object is essentially a single timestamped log entry. So if a particular log contains 1000 timestamped entries, the vector contains 1000 entries. The log entries are given in reverse chronological order.
getInstalledApplications
Returns a vector of the names of applications that are installed in the cluster currently.
Vector getInstalledApplications ( ) throws PMException
Description. This returns a vector of the names of applications that are installed in the cluster currently. Given a vector of currently installed application names you could use the names to look up an application bean in the JNDI name space.
getVersion
returns the version of the cluster
String getVersion( ) throws RemoteException, PMException
isDefined
returns true if the cluster is defined or false if the cluster is not defined.
boolean isDefined( ) throws RemoteException, PMException
Description. In Process Manager 6.0, the installer registers an empty bean as the default cluster bean. When you create a cluster (either interactively through the Administrator interface or programmatically by calling createCluster() on the cluster manager), this bean is filled with the relevant information for the cluster. Until then, the bean is empty - just a place holder. The isDefined() method determines if the cluster has been created or not.
Before calling methods onthe default cluster you can use isDefined() to test if it has been created. If it has not been created, you cannot call methods on it (that is, you get an exception if you try to call methods on it).
if (isDefined(IPMCluster.DEFAULT) )
{ // call methods on the default cluster bean }
returns the full path of the Process Manager applications directory.
String getApplicationsPath( ) throws RemoteException, PMException
returns the full path of the Process Manager applications directory. It is typically $PM_HOME/applications.
getCorporateDirectory
returns the corporate directory object for the cluster.
CorporateDirectory getCorporateDirectory( ) throws PMException, RemoteException
getFinder
returns the Finder object of the cluster.
IFinder getFinder( ) throws RemoteException, PMException
Description. Returns the Finder object for a cluster. Given the Finder object, you can find work items and process instances in the cluster.
getDeploymentManager
returns the DeploymentManager object for the cluster.
IDeploymentManager getDeploymentManager( ) throws PMException, RemoteException
Description. Returns the Deployment Manager object for a cluster. Given the deployment manager, you can access the deployment descriptor for individual applications. Given a deployment descriptor, you can change the application's stage, status, mode and testing state. For details of the deployment manager, see Chapter 4 "Deployment Manager."
The IPMClusterProperty interface is used in various cluster bean APIs. It is used to set and get cluster properties.When creating an IPMCluster, you first need to create an IPMClusterProperty and then use the setValue() method to set the cluster properties. Table 3-1 lists the cluster properties that must be set when creating a cluster. Table 3-2 lists cluster properties that specify URLs for accessing various Process Manager components.
To create an IPMClusterProperty, use the create() method on IPMClusterPropertyFactory as follows:
IPMClusterProperty prop1 = PMClusterPropertyFactory.create ( ) ;
To get the existing IPMClusterProperty for a cluster, call getClusterProperty() on the cluster, as follows:
IPMClusterProperty myProp = myCluster.getClusterProperty();
Other pre-defined variables are listed in Table 3-3.
Table 3-3 Other static int variables
These are used as an argument to the getLog() method on IPMCluster to specify what kind of log to retrieve.
Getting and Setting Property Values
To retrieve or set properties, use the following methods:
getValue
getValue
Gets the value of a particular property.
String getValue ( int propName)
The property whose value is to be retrieved. The value must be one of the static variables listed in Table 3-1. For example:
// myCluster is the default cluster
IPMClusterProperty myProp = myCluster.getClusterProperty();
String description =
myProp.getValue(IPMClusterProperty.DESCRIPTION);
setValue
Sets the value of a particular property.
void setValue ( int propName, String value)
The property to be set. The value must be one of the static variables listed in Table 3-1. For example:
getProperties
Returns a hashtable of all properties and their corresponding values. Clients can iterate through the properties and their corresponding values. The hashtable is indexed by property name.
// Populate the properties in the PMClusterProperty object
Hashtable allprops = prop1.getProperties();
PMClusterPropertyFactory
The purpose of this class is to create new IPMClusterProperty objects, which contain the properties for a cluster.
create
Creates an IPMClusterProperty object.
// Create a PMClusterProperty object
IPMClusterProperty prop1 = PMClusterPropertyFactory.create ( ) ;
This section presents the following code samples:
Mount the Cluster Manager and Get the Default Cluster
Mount the Cluster Manager and Get the Default Cluster
This code sample gets the cluster manager and the default cluster.
Create a Cluster
This code sample creates a new cluster, which overwrites the existing one in Process Manager 6.0, since only one cluster is supported at a time.
Get and Set Cluster Properties
This code sample gets and sets cluster properties.
Previous Contents Index DocHome Next
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.
Last Updated May 02, 2000