PK W@oa,mimetypeapplication/epub+zipPKW@iTunesMetadata.plistu artistName Oracle Corporation book-info cover-image-hash 637407716 cover-image-path OEBPS/dcommon/oracle-logo.jpg package-file-hash 743623710 publisher-unique-id E24458-02 unique-id 65551019 genre Oracle Documentation itemName Oracle® Application Integration Architecture Pre-Built Integrations 11.1: Utilities Guide, Release 11.1 releaseDate 2012-05-03T11:46:58Z year 2012 PKEzuPKW@META-INF/container.xml PKYuPKW@ OEBPS/toc.htm?. Table of Contents

Contents

List of Examples

List of Tables

Title and Copyright Information

Preface

1 Session Pool Manager

2 AIA Composite Scheduler

PKmD.?.PKW@ OEBPS/loe.htm; List of Examples

List of Examples

PKkXPKW@ OEBPS/toc.ncx Oracle® Application Integration Architecture Pre-Built Integrations 11.1: Utilities Guide, Release 11.1 Cover Table of Contents List of Examples List of Tables Oracle Application Integration Architecture Pre-Built Integrations 11.1: Utilities Guide, Release 11.1 Preface Session Pool Manager AIA Composite Scheduler Copyright PKuPKW@OEBPS/cover.htmO Cover

Oracle Corporation

PK[pTOPKW@OEBPS/sessionpoolmanager.htm Session Pool Manager

1 Session Pool Manager

This chapter introduces Session Pool Manager (SPM) and includes the following sections:

1.1 Introduction to SPM

SPM is a service in the Oracle SOA Suite web server whose primary function is to manage a pool of web server session tokens that can be reused by BPEL flows.

Reusing session tokens significantly enhances the overall performance of BPEL flows that call web services. This is because the session token creation process is a time-consuming operation in the application web server.

Some features of SPM include:

1.2 Working with SPM

Understanding the functionality covered in this section helps you configure and tune SPM.

This section includes the following topics:

1.2.1 Understanding SPM Configuration

SPM is configured using the AIAConfigurationProperties.xml file located in <aia.home>/config/. Its properties are located under Module Configuration: SessionPoolManager.

For more information about SPM configurations, see Section 1.3, "Setting SPM Configuration Properties".

1.2.2 Understanding the Initialization Process

The initialization process is a time-consuming operation because the SPM must perform the following tasks:

  • Read settings in the AIAConfigurationProperties.xml file.

  • Create pool tables in memory.

  • Call the application web server to generate session tokens and store them in the pool, so that they are available for use.

    The number of session tokens that are initially loaded is determined by the PoolInitialLoad property. You can configure the wait interval between session token requests to the application web server by setting the ServerSessionRequestRate property. These properties are set in the SessionPoolManager module configuration in the AIAConfigurationProperties.xml file located in <AIA_HOME>/aia_instances/<aia_instance_name>/AIAMetadata/config/.

  • Initialize and start the Sentinel.

  • When SPM is initialized, the session token pool is stored in memory, ready to provide session tokens.


Note:

If the initialization process fails, SPM is set to a STOPPED state. Any concurrent and subsequent attempts to initialize SPM using the Get() operation fails. This prevents infinite loops or queuing up BPEL processes requesting a session token that fails. To reset this state, the administrator should call the Terminate() or Start() operation after fixing the problem.


1.2.3 Understanding the Get() Operation

SPM may follow multiple paths when you invoke the Get() operation. The paths taken depend on the pool state and the session token state.

If SPM has not been initialized, then the initialization process is invoked.

When SPM is initialized, it proceeds to get a session token from the pool table by way of the following paths.

1.2.3.1 Getting an Available Session Token from the Pool Table

This is the first path taken. SPM's ability to take this path is possible when a session token is available in the pool table and SPM predicts that it is not expired. The printout enables SPM to immediately assign and pass the session token to the caller.

For more information about SPM's ability to predict the expiration status of a token, see Section 1.2.3.3, "Predicting an Expired Session Token".

If no session token is available in the pool table, SPM proceeds with the Getting a Session Token When One is Not Available in the Pool Table path.

1.2.3.2 Getting a Session Token When One is Not Available in the Pool Table

When no session token available in the pool table, SPM waits some milliseconds, determined by the GetFromPoolTable_WaitInterval property, in anticipation that a session token becomes available. SPM then checks the pool table again. SPM continues to check and wait until the maximum number of attempts is reached. The maximum number of attempts is defined by the GetFromPoolTable_MaxAttempts property. These properties are set in the SessionPoolManager module configuration in the AIAConfigurationProperties.xml file located at <AIA_HOME>/aia_instances/<aia_instance_name>/AIAMetadata/config/.

If SPM successfully gets a session token from the pool table, the session token is checked for expiration, and if it is not expired, it is assigned and passed to the caller.

For more information about SPM's ability to predict the expiration status of a token, see Section 1.2.3.3, "Predicting an Expired Session Token".

When SPM is not able to get a session token from the pool table, then it proceeds to create a session token, if the number of existing session tokens in the pool does not match the maximum pool size. The maximum pool size is defined by the PoolSize_Max property.

If the number of existing session tokens in the pool matches the maximum pool size, the creation of a session token is denied, and the Get() operation throws a fault to the caller.

1.2.3.3 Predicting an Expired Session Token

Session tokens can be expired due to their idle time or age on the application web server. To avoid providing an expired session token to a caller, SPM contains logic that tries to predict whether the session token has expired. The properties that provide the values used to predict session token expiration are PredictExpiration_Idle and PredictExpiration_Age

If SPM predicts that the session token has not expired, then it uses it.

If SPM predicts that the session token has expired, it renews it according to the following logic:

  • If SPM predicts that the session token has expired due to its age, it calls the application web server to terminate the session token and calls it again to create a one.

    For more information about how SPM creates a session token, see Section 1.2.3.4, "Creating a Session Token".

  • If SPM predicts that the session token has expired due to idle time, it calls the application web server to reset the idle time, and then assigns and passes it to caller.

  • If resetting the idle time or creating a session token is not successful, SPM throws a fault to the caller.

1.2.3.4 Creating a Session Token

This is a slow service.

SPM calls the application web server to get a session token. If the call is not successful, SPM waits some milliseconds, determined by the ConnectServer_WaitInterval property, and tries again. SPM repeats this wait-and-try logic until it obtains a session token, or the maximum number of attempts is reached. The maximum number of attempts is defined by the ConnectServer_MaxAttempts property.

Between attempts, SPM checks the pool table for an available session token. If one becomes available, it stops calling the application web server, assigns the available session token, and passes it to caller.

1.2.4 Understanding the Sentinel Process

You can optionally configure the initialization process to activate a process that prevents session tokens from expiring, while also keeping a minimum number of sessions in the pool table. This process is called the Sentinel.

Sentinel guards session tokens in the pool table and keeps them from expiring due to idle time or age. It uses the logic behind predicting session expiration to detect the tokens that must be renewed. Sentinel runs in its own low-priority thread, sleeping most of the time. It awakes every x milliseconds, determined by the PredictExpiration_Idle property, to check the session tokens in the pool table.

1.2.4.1 Keeping Session Tokens Alive

The Sentinel resets the idle time of session tokens that it has predicted are expired. To reset the idle time, it calls the application web server that is passing the session token.

For those session tokens that it has predicted are expired due to age, the Sentinel terminates the session token, by calling the logoff operation of the application web server, and creates one for replacement by calling the application web server again.

The Sentinel terminates (removes) session tokens that have not been reused for some time. The Sentinel_Renew_Max configuration property controls this function.

SPM keeps a tally on the number of consecutive times the Sentinel renews a session token that has not been used between renewals. When the value of the Sentinel_Renew_Max property is reached for a session token, it is terminated (removed) from the pool table.

The activation of the Sentinel is also controlled by the Sentinel_Renew_Max configuration property.

For more information about the Sentinel_Renew_Max configuration property and activating the Sentinel, see Section 1.3.9, "Sentinel_Renew_Max".

1.2.4.2 Keeping a Minimum Number of Session Tokens in the Pool Table

Each time the Sentinel awakes and finishes renewing expired session tokens, it checks the size of the pool table. If it is smaller than the value set in the Sentinel_PoolSize_Min property, the Sentinel replenishes the pool table with new session tokens up to this minimum value.

Before and during session token creation, the Sentinel checks if any Get() operations are trying to create session tokens. If yes, then the Sentinel stops replenishing session tokens in the pool table. The next time the Sentinel awakes, it tries to replenish the remaining session tokens again, up to the Sentinel_PoolSize_Min property value. This logic should prevent the Sentinel from competing against business flows for application web server time.

The Sentinel creates session tokens sequentially, not concurrently, checking for active Get() operations between creating session tokens.

1.2.5 Understanding Statistics

SPM keeps cumulative tallies of the operations it has implemented and the actions it has taken. These statistics can help administrators optimize their SPM configurations. These statistics are available in the Pool Status report. You generate the report using the Status operation of AIASessionPoolManager.

For more information about generating the Pool Status report, see Section 1.4, "Administering the AIASessionPoolManager Service on the SOA Server".

SPM starts tallying statistics when an administrator calls the ActivateStatistics() operation and stops when the DeactivateStatistics() operation is called. By default, this feature is deactivated.

The tallies are not reset between activation and deactivation. They are reset when the ResetStatistics() operation is called or SPM is terminated.


Note:

These tallies cannot provide exact counts because this functionality is not multi thread-safe. These statistics are solely meant to provide bulk data to help you tune SPM.


Table 1-1 shows SPM tallies statistics for the following operations:

Table 1-1 Operations Statistics

OperationStatistic

getSession

Count of get() session token operation invocations, regardless of the outcome.

getSession_Successful

Count of successful get() session token operations.

getSession_Failed

Count of failed get() session token operations. The primary causes for these failures include SPM not being able to get a session token from the application web server or no session tokens were available in the pool table and the pool size had reached the maximum pool size. Severe errors are printed in the logs with causes indicated. SPM uses the AIALogger APIs to write to the Oracle Application Integration Architecture trace log. The trace log can be viewed in Oracle Enterprise Manager.

Tuning tip: If the cause of the failure is that the maximum pool size was reached, increase the pool size in the SPM configuration to match or exceed the number of maximum threads in the BPEL server.

getSession_ReleaseAhead

Count of get() session token operations that were preceded by the invocation of the release operation. Two primary causes for this scenario include:

The application web server was slow.

Some SOA server threads used too much bandwidth, causing other threads "starve" and timeout.

In either case, the BPEL server sent a timeout to the client. The client knows that a session token is eventually assigned by SPM, so the client calls the release operation to prevent SPM from assigning a session token.

Tuning tip: Balance the number of active tasks in application web server with the number of active threads in the BPEL server, with the application web server number being greater than or equal to the BPEL server number. Then set the SPM maximum pool size property value to be at least the same as the number of threads in the BPEL server.

releaseSession

Count of invokes to the release() operation regardless of the outcome.

releaseSession_Successful

Count of successful release session token operations with the updated session token passed by the caller.

releaseSession_NoUpdST_Successful

Count of successful release session token operations without the updated session token passed by the caller. This does not indicate that a problem exists.

releaseSession_Failed

Count of failed release session token operations. This is rare. SPM may be terminated or terminating while a client tried to release a session token. Check BPEL server logs for clues.

releaseSession_NoUpdST_Failed

Count of failed release session token operations without an updated session token passed by the caller. Similar to releaseSession_Failed. Check BPEL server logs for clues.

releaseSession_Successful_OfaFailedGet

Count of release session token operations for which corresponding get session token operations failed. This is expected to be the same or less than the getSession_Failed value.

releaseSession_AheadOfGet

Count of release session token operations for which corresponding Get session token operations have not been completed or implemented. This scenario occurs when SPM takes too long to respond to the Get operation. Therefore, the BPEL server sends a timeout to the client. The client knows a session token is eventually assigned by SPM, so the client calls a Release operation to let SPM know that it should not assign a session token when the Get operation becomes active.

Tuning tip: See getSession_ReleaseAhead.

Sessions_Validated

Count of session tokens that were predicted to be expired, thus confirming that the session validation occurred. The validation outcome is unknown.

Tuning tip: Reducing the number of validations can help free up the application web server and prevents BPEL from sending timeouts to clients. Increase the Max Idle Session Token value in the application web server and set the PredictExpiration_Idle value in SPM to a longer idle time.

Sessions_Created

Count of session tokens that were created. Renewed session tokens are not included.

Sessions_Discarded

Count of session tokens that were discarded, primarily because they could not be validated. This may be an indication that the application web server may be overloaded. Check BPEL logs for clues.

Tuning tip: Reduce the number of threads in the BPEL server and SPM maximum pool size accordingly.

Sentinel_SessionIdleTime_Refreshed

Count of session tokens for which idle times were refreshed by the Sentinel.

Tuning tip: See Sessions_Validated.

Sentinel_SessionAge_Renewed

Count of session tokens that the Sentinel renewed because it predicted that the session was expired. The over-aged session is terminated on the application web server and a new one is created.

Sentinel_SessionDiscarded_NotReused

Count of session tokens that were discarded by the Sentinel because they reached the maximum number of consecutive renewals.

Sentinel_SessionDiscarded_Error

Count of session tokens that the Sentinel discarded because their idle time could not be reset or because a new session token could not be obtained from the application web server.

Tuning tip: See Sessions_Discarded.


1.2.6 Understanding Trace Logging to a CSV File

SPM logs the operations being implemented in the session pool in comma-separated values (CSV) files. You can use the data in these CSV files as a troubleshooting tool.

To enable trace logging in CSV files, set the TraceToAIA-SPM-CSVFile_Enabled property to TRUE.

For more information about the TraceToAIA-SPM-CSVFile_Enabled property, see Section 1.3.17, "TraceToAIA-SPM-CSVFile_Enabled".

The trace log CSV files are located in the <home>Middleware/user_projects/domains/soa_domain/servers/soa_server1/logs directory. The CSV file naming convention is aia-spm-<HostId-Time>.csv, where HostId is the value of the host ID and Time is the date and time at which the CSV file was created. For example, the directory may contain the following files:

  • aia-spm-CRMOD_01-20110617080010.csv

  • aia-spm-CRMOD_01-20110617143000.csv

A new CSV file is created after every 10,000 records logged. Terminating the SPM causes the closure of the current CSV file.

Table 1-2 shows data captured by the trace log CSV file.

Table 1-2 Data Description of CSV File

ColumnDescription

Date-Time

Date and time when the operation was implemented.

Client Instance Id

Instance ID passed in Get or Release operations.

A value of Sentinel indicates that the operation was implemented by Sentinel functionality.

Operation

Operation implemented.

Record ID

ID of the session token used for the operation.

Session Token

Session token value.

Created Date

Date and time when the session token was created. A value of N/A stands for Not Available.

Age (milliseconds)

Age of the session token in milliseconds.

Assigned Since

Date and time when the session token was assigned to the client. A value of N/A stands for Not Available, meaning the session token is not assigned.

Idle Since

Date and time when the session token moved into an idle state. A value of N/A stands for Not Available, meaning the session token is not in an idle state.

Renewed by Sentinel

Number of times the Sentinel has renewed the session token.


Table 1-3 shows the operations SPM logs in the trace log CSV file.

Table 1-3 Operations in Trace Log CSV File

OpertaionDescription

getSession()

Session token assigned to requester.

releaseSession()

Session token returned to the pool for reuse.

releaseInvalidSessionToken()

Session token discarded from the session pool table because the client reported an Invalid Session error code.

sessionTerminated()

Session token terminated and removed from the session pool table because the SPM is being terminated.

sessionCreated()

Session token added to the pool by the SPM Start operation.

SessionIdleTime_Refreshed()

The Sentinel validated the session token against the application server. The outcome of the validation can be that the idle time was reset, or a new session token was created because the previous one had expired.

SessionDiscarded_Error()

An unexpected error occurred while the Sentinel was validating the session token against the application server. The primary reason for this error is that the SPM was not able to connect with the application server, so the Sentinel removed the session token from the SPM pool table.

SessionDiscarded_NotReused()

Session token reached the renewal limit allowed by the Sentinel so the Sentinel terminated the session token and removed it from the SPM pool table.

AgedSession_Terminated()

Session token reached its maximum age so the Sentinel terminated the session in the application server and removed the session token from the SPM pool table.

SessionAge_Replaced()

The Sentinel created this new session token to replace a session token terminated due the age.

SessionAdded()

The Sentinel added this session to replenish the minimum number of session tokens in the pool threshold.


1.3 Setting SPM Configuration Properties

SPM is automatically configured when a integration utilizing SPM is installed. SPM is installed with a default configuration. When implementing or administering the integration, these configurations can be changed to tune the configurations to better suit your integration environment and the needs of the implemented integration.

SPM configuration properties are set in the AIAConfigurationProperties.xml file as a Module Configuration. The module name is SessionPoolManager.

SPM has the following configurable properties:

Defaults can be defined for all application web servers by using the all_hosts prefix value.

For example, the following line defines 40 as the default maximum pool size:

<Property name="all_hosts.PoolSize_Max">40</Property>

Specific values can be defined for individual application web servers by using the HostId prefix.

For example, the following line defines 50 as the maximum pool size value for the CRM On Demand application web server, where the HostId for CRM On Demand is CRMOD_01:

<Property name="CRMOD_01.PoolSize_Max">50</Property>

All properties must be defined by application web server or default. If a property is not defined for a specific application web server, then the default property (all_hosts) is used. If no all_hosts default property is defined, the caller receives a fault indicating the missing property.

SPM can work with multiple hosts (application web servers). Therefore, each property can be set as a default for all hosts, and overridden for a specific host. The only exception is the TRACE.LOG.ENABLED property, which cannot be set to be server-specific.

Each property has a prefix that indicates the application web server. For example:

<Property name="all_hosts.PoolSize_Max">40</Property>

<Property name="SBL_03.PoolSize_Max">20</Property>

The first line defines 40 as the default maximum pool size for all hosts.

The second line overrides the default pool size to 20 for the application web server SBL_03.

The concept of system ID and HostId are synonymous.

For example, a customer installing an integration for Siebel may use SEBL_01 as the system ID for the Siebel application web server. They see SEBL_01 in the AIAConfigurationProperties.xml file as the Default.SystemID property for the services connecting to the Siebel application web server. This SEBL_01 value should also be used as the HostId value in SPM to refer to the Siebel application web server.

Another customer installing a integration for CRM On Demand may use CRMOD_01 as the system ID for the CRM On Demand application web server. Likewise, they should use CRMOD_01 as the HostId value in SPM to refer to the CRM On Demand application web server.

Example 1-1 is an example of an SPM module configuration:

Example 1-1 SPM Module Configuration

  <ModuleConfiguration moduleName="SessionPoolManager">
   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    AIA Session Pool Manager 
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   <!-- === Default values: all_hosts === -->
   <!-- List Host IDs that can have an SessionPoolManager-->
   <Property name="all_hosts">SEBL_01 CRMOD_01</Property>
   <Property name="all_hosts.PoolSize_Max">40</Property>
   <Property name="all_hosts.PoolInitialLoad">1</Property>
   <Property name="all_hosts.GetFromPoolTable_MaxAttempts">5</Property>
   <!--GetFromPoolTable_WaitInterval:  Milliseconds -->
   <Property name="all_hosts.GetFromPoolTable_WaitInterval">250</Property>
   <Property name="all_hosts.ConnectServer_MaxAttempts">2</Property>
   <!--ConnectServer_WaitInterval:  Milliseconds -->
   <Property name="all_hosts.ConnectServer_WaitInterval">500</Property>
   <!-- PredictExpiration_Idle: Milliseconds -->
   <!-- 780000 = 13 Minutes -->
   <Property name="all_hosts.PredictExpiration_Idle">780000</Property>
   <!--PredictExpiration_Age:  Milliseconds-->
   <!-- 82800000 = 23 Hours -->
   <Property name="all_hosts.PredictExpiration_Age">82800000</Property>
   <Property name="all_hosts.Sentinel_PoolSize_Min">4</Property>
   <!--Sentinel_Renew_Max:  -1 means do not start it. 0 means always renew; >0 max renew. -->
   <Property name="all_hosts.Sentinel_Renew_Max">2</Property>
   <!-- ServerSessionRequestRate: milliseconds. -->
   <!-- 50 = 1/20th second wait time between requests.-->
   <Property name="all_hosts.ServerSessionRequestRate">50</Property>
   <!-- InvalidSessionErrorCodes: Regular expressions accepted. -->
   <Property name="all_hosts.InvalidSessionErrorCodes">404</Property>
   <!-- Login -->
   <Property name="TRACE.LOG.ENABLED">true</Property>
   <Property name="all_hosts.Sentinel_LogLevel">ERROR</Property>
   <!-- Enable/Disable logging SPM operations into aia-spm-host-time.csv file. 
         "true" enables logging. 
         The location of the CSV file is SOA_HOME/opmn/logs folder.
         This property is independent of other logging properties-->
   <Property name="all_hosts.TraceToAIA-SPM-CSVFile_Enabled">FALSE</Property>
   
   <!-- === -->
   <!-- === Specific values for SEBL_01 === -->
   <Property name="SEBL_01.UserId">SiebelUser1</Property>
   <Property name="SEBL_01.Password">TheEncryptedPassword</Property>
   <Property name="SEBL_01.EndpointURI">http://mySiebel:8080/eai_enu/start.swe?SWEExtSource=SecureWebService&amp;SWEExtCmd=Execute&amp;WSSOAP=1</Property>
   <Property name="SEBL_01.GetFromPoolTable_MaxAttempts">3</Property>
   <Property name="SEBL_01.GetFromPoolTable_WaitInterval">300</Property>
   <Property name="SEBL_01.ClassName">oracle.apps.aia.core.sessionpool.CRMSiebelSession</Property>
   <Property name="SEBL_01.InvalidSessionErrorCodes">10944642|SBL-BPR-00162|SBL-DAT-00175</Property>
   <!-- === -->
   <!-- Specific values for CRMOD_01 -->
   <Property name="CRMOD_01.UserId">MyCompany/CRMUser1</Property>
   <Property name="CRMOD_01.Password">MustBeEncrypted</Property>
   <!-- CRMOD_01.EndpointURI example: http://xxx.siebel.com/Services/Integration -->
   <Property name="CRMOD_01.EndpointURI">http://xxx.siebel.com/Services/Integration</Property>
   <Property name="CRMOD_01.GetFromPoolTable_MaxAttempts">3</Property>
   <Property name="CRMOD_01.GetFromPoolTable_WaitInterval">1000</Property>
   <Property name="CRMOD_01.PredictExpiration_Idle">120000</Property>
   <Property name="CRMOD_01.PredictExpiration_Age">600000</Property>
   <Property name="CRMOD_01.ServerSessionRequestRate">50</Property>
   <Property name="CRMOD_01.InvalidSessionErrorCodes">SBL-ODU-01006</Property>
   <Property name="CRMOD_01.ClassName">oracle.apps.aia.core.sessionpool.CRMOnDemandSession</Property>
   <!-- === -->
   <!-- Specific values for NOSERVER. 
        Class NoSvrCRMSiebelSession emulates a server with random errors and successes. 
        Use it for simulation/testing. .-->
   <Property name="NOSERVER.UserId">fakeusername</Property>
   <Property name="NOSERVER.Password">26bf4moKoU0=</Property>
   <Property name="NOSERVER.EndpointURI">http://any.fake.value.is/good</Property>
   <Property name="NOSERVER.ClassName">oracle.apps.aia.core.sessionpool.NoSvrCRMSiebelSession</Property>
  </ModuleConfiguration>
 </SystemConfiguration>
</AIAServiceConfiguration>

Whenever the AIAConfigurationProperties.XML file is updated, the file must be reloaded to SOA-MDS for updates to be reflected in the applications or services that use the updated properties.

For more information about how to update the AIAConfigurationProperties.xml file, see Oracle Fusion Middleware Developer's Guide for Oracle Application Integration Architecture Foundation Pack, "Building AIA Integration Flows" and "How to Set Up AIA Workstation".

1.3.1 All_hosts

SPM can work with multiple application web server instances.

In this property, list the hosts for which SPM can create a session token pool. Separate the host names by spaces. Each host has its own pool.

This property is not prefixed with a HostId value.

1.3.2 PoolSize_Max

It limits the number of session tokens that the pool can have.

When the Get() operation is invoked, the SPM creates a session token if none is available and adds it to the pool. If the number of session tokens in the pool has reached this property value, the Get() operation returns a fault error indicating that no session tokens are available and that it cannot create a new one because the pool size has reached its maximum value.

We recommend that you set this value to match the Dispatcher Invoke Threads value set for the BPEL server.

In addition, setting the BPEL server Dispatcher Invoke Threads value to be the same or lower than the maximum number of tasks that the application web server allows is recommended. For example, for Siebel, this is the value of the App Max Tasks parameter.

1.3.3 PoolInitialLoad

It indicates the number of session tokens to be initially loaded into the pool and made available when the pool is initialized for the first time.

Subsequently, if additional session tokens are needed, they are added one per Get() operation.

1.3.4 ConnectServer_MaxAttempts and ConnectServer_WaitInterval

When creating session tokens, SPM has the logic to retry connecting to the application web server when the first attempt fails. These two properties determine the maximum number of attempts SPM makes to connect and the wait time between the failed attempt and its next attempt.

  • ConnectServer_MaxAttempts

    Determines the maximum number of attempts SPM makes to connect. The minimum value should be 1.

  • ConnectServer_WaitInterval

    Determines the amount of time in milliseconds that SPM waits between the failed attempt and its next attempt. The value should be the same as the value you set for the ServerSessionRequestRate property, which helps ensure that the host does not mistake the connection attempts for a server attack.

For more information, see Section 1.3.5, "ServerSessionRequestRate".

1.3.5 ServerSessionRequestRate

It determines the amount of time in milliseconds that SPM waits between making calls requesting a session token. This property is used to slow down successful connections requests to help prevent the host from mistaking the request calls for a server attack.

For example, CRM On Demand expects a 50 millisecond wait time between requests.

1.3.6 GetFromPoolTable_MaxAttempts and GetFromPoolTable_WaitInterval

If no session tokens are available in the pool for the Get() operation, SPM waits some milliseconds in anticipation that a process releases a session token and then tries to get it. If after n number of attempts without a session token being released in the pool, SPM proceeds to call the application web server to create a session token.

These properties determine the maximum number of attempts and wait time SPM uses when getting a session token from the pool before proceeding to call the application web server to create a session token.

  • GetFromPoolTable_MaxAttempts

    Determines the maximum number of attempts SPM makes to obtain a session token from the pool. The minimum value should be 1.

  • GetFromPoolTable_WaitInterval

    Determines the amount of time in milliseconds that SPM waits between attempting to obtain a session token from the pool.

1.3.7 PredictExpiration_Idle and PredictExpiration_Age

Usually, session tokens can expire due to idle time or age on the application web server. To prevent providing an expired session token to a Get() operation, SPM uses logic that tries to predict session token expiration. These properties provide values for predicting session token expiration.

  • PredictExpiration_Idle:

    Indicates the maximum time in milliseconds that a session token can be idle before expiring. We recommend that you set this value to a value lower than the actual maximum idle time configured for the application web server. We recommend a value lower than the actual value to compensate for the gap between the time at which the application web server responded and the time at which the BPEL flow called SPM to release the session token.

  • PredictExpiration_Age:

    Indicates the maximum age in milliseconds that a session token can reach before expiring. We recommend that you set this value to a value lower than the actual maximum age configured for the application web server. The creation time registered in the application web server is some seconds earlier than the one registered in SPM. A value of 1 or 2 minutes is a good start. For example, if the maximum age configured on the application web server is 15 minutes, set this property to 13 minutes.

1.3.8 TRACE.LOG.ENABLED

To enable trace logging for SPM, set this property to TRUE.

SPM uses the AIALogger APIs to write to Oracle Application Integration Architecture trace log. The trace log can be viewed in Oracle Enterprise Manager.

For more information, see Oracle Fusion Middleware Infrastructure Components and Utilities User's Guide for Oracle Application Integration Architecture Foundation Pack, "Using Trace and Error Logs."

1.3.9 Sentinel_Renew_Max

It determines the maximum consecutive number of times a session token can be consecutively renewed by the Sentinel.

SPM tallies the consecutive number of times the Sentinel has renewed a session token. A consecutive renewal is defined as a renewal of a session token by the Sentinel without any Get() + Release() operations between the previous and latest renew.

This tally is reset to zero each time the session token is acted upon by the Release() operation

When a session token reaches the maximum number of consecutive renews, the session token is terminated in the application web server and it is removed from the pool table.

For more information, see Section 1.3.10, "Sentinel_PoolSize_Min".

Table 1-4 shows sample values.

Table 1-4 Sample Values

Sentinel_Renew_Max ValueUsage

-1

Do not activate the Sentinel.

0

No maximum number of consecutive renewals. Session tokens can be renewed an infinite number of times.

1, 2, 3 and so on

Maximum number of consecutive renewals.


1.3.10 Sentinel_PoolSize_Min

It determines the minimum number of session tokens the Sentinel keeps in the pool table.

This functionality is activated only when Sentinel is activated.

1.3.11 Sentinel_LogLevel

It determines the trace logging level for the Sentinel. By default, only SEVERE messages are written into the log. Sentinel uses the AIALogger APIs for writing to the trace logs. The trace log can be view in Oracle Enterprise Manager. The TRACE.LOG.ENABLED property must be set to TRUE for this property to work.

For more information, see Section 1.3.8, "TRACE.LOG.ENABLED".

The Sentinel_LogLevel value should be a java.util.logging.Level value. These are the levels in descending order:

  • SEVERE (highest value) (default)

  • WARNING

  • INFO

  • CONFIG

  • FINE

  • FINER

  • FINEST (lowest value)

For more information, see Oracle Fusion Middleware Infrastructure Components and Utilities User's Guide for Oracle Application Integration Architecture Foundation Pack, "Using Trace and Error Logs."

1.3.12 UserId

It determines the user ID that is used to connect to the application web server.

1.3.13 Password

It determines the password that is used to connect to the application web server. This value should contain the XPATH into AIAInstallProperties.xml. Following are some examples:

  • For CRM On Demand:

    <Property name="CRMOD_01.Password">participatingapplications.lto.crmod.ws.password</Property>
    
  • For CRM Siebel:

    <Property name="SEBL_01.Password">participatingapplications.siebel.server.eai.password</Property>
    
  • For AECM Siebel:

    <Property name="SEBL_01.Password">participatingapplications.aecm.server.eai.password</Property>
    

For more information about how to update the password, see Oracle Fusion Middleware Developer's Guide for Oracle Application Integration Architecture Foundation Pack, "Post Install Configurations" and "Modifying Passwords Used for AIA Deployments".

1.3.14 EndpointURI

It determines the endpoint URI that uses to connect to the application web server. Following are some examples:

  • For Siebel application web server:

    http://mySiebel.com/eai_enu/start.swe?SWEExtSource=SecureWebService&amp;SWEExtCmd=Execute&amp;WSSOAP=1
    
  • For CRM On Demand application web server:

    http://myCRMOD.com/Services/Integration
    

Note:

AIAConfigurationProperties.xml content is XML sensitive. Therefore, if the URI contains &, use &amp; to represent it.


1.3.15 ClassName

It determines the full class name that SPM uses to get the session tokens from the application server. The class listed in this property implements the oracle.apps.aia.core.sessionpool.PoolableResource interface.

Table 1-5 shows the list of the host types and the class names.

Table 1-5 Class Names

Host TypeDelivered Class Name

Siebel On Premises

oracle.apps.aia.core.sessionpool.CRMSiebelSession

Host simulator (for testing purposes)

oracle.apps.aia.core.sessionpool.NoSvrCRMSiebelSession

CRM On Demand

oracle.apps.aia.core.sessionpool.CRMOnDemandSession


1.3.16 InvalidSessionErrorCodes

It determines the list of error codes that the application web server can return for a fault when the session token is not valid.

You can use regular expressions to set up multiple error codes or patterns. For example, if for application web server XXX_01 the error codes are inv-300, exp-301 and dny-303; the property can be set as follows:

<Property name="XXX_01.InvalidSessionErrorCodes">inv-300|exp-301|dny-303</Property>

For more information about Regular Expressions, see http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html.

The following error codes are configured when SPM is installed:

  • For CRM On Demand application web server:

    <Property name="CRMOD_01.InvalidSessionErrorCodes">SBL-ODU-01006</Property>
    
  • For Siebel application web server:

    <Property name="SEBL_01.InvalidSessionErrorCodes">10944642|SBL-BPR-00162|SBL-DAT-00175</Property>
    

1.3.17 TraceToAIA-SPM-CSVFile_Enabled

To enable SPM trace logging in CSV files, set this property to TRUE.

Set this property to FALSE to disable trace logging in CSV files.

This property works independent of the other trace logging properties.

For property value changes to take effect, ensure that you terminate and restart the SPM for the host ID.

For more information, see Section 1.2.6, "Understanding Trace Logging to a CSV File".

1.3.18 ProxySettings_Enabled

To enable SPM use proxy settings while calling the application web server, set this property to TRUE.

Set this property to FALSE to not use proxy settings.

1.3.19 ProxyHost

It determines the server to be set in the system properties for http.proxyHost property.

In the java.net API used by SPM, proxies are supported through two system properties: http.proxyHost and http.proxyPort. They must be set to the proxy server and port respectively.

This value is only set when ProxySettings_Enabled is set to TRUE.

1.3.20 ProxyPort

It determines the port to be set in the system properties for the http.proxyPort property.

In the java.net API used by SPM, proxies are supported through two system properties: http.proxyHost and http.proxyPort. They must be set to the proxy server and port respectively.

This value is only set when ProxySettings_Enabled is set to TRUE.

1.3.21 Describing Recommended Configuration Settings for Siebel Web Server and SPM

To help optimize the performance of SPM with your Siebel web server, balancing your Siebel web server and SPM configuration settings according to the information is this section is recommended.

Table 1-6 shows the Siebel web server parameters and the corresponding SPM configuration properties.

Table 1-6 Values to Configure Siebel Web Server

Siebel Web Server ParameterSPM Configuration Property

SessionTimeout

N/A

SessionTokenTimeout

PredictExpiration_Idle

SessionTokenMaxAge (session tokx_en maximum age)

PredictExpiration_Age


For more information about setting Siebel web server parameters, see "Session and Session Token Timeout-Related Parameters" in Integration Platform Technologies: Siebel Enterprise Application Integration available at http://download.oracle.com/docs/cd/B40099_02/books/EAI2/EAI2_WebServices32.html.

For more information about these SPM configuration properties, see Section 1.3.7, "PredictExpiration_Idle and PredictExpiration_Age".

1.3.22 SessionTimeout

The Siebel web server SessionTimeout parameter value should be set to a low value.

The value should not be so low that sessions are created too frequently. The value should also not be so high that adapter and database connections drop before sessions expire, and thus creating vulnerabilities.

A SessionTimeout parameter value of 300 seconds (5 minutes) is a good starting point.

1.3.23 SessionTokenTimeout and PredictExpiration_Idle

The Siebel web server SessionTokenTimeout parameter value should be set to a value that is greater than the SessionTimeoutLength value.

The parameter value is set to 15 minutes by default and is a good starting point.

In SPM, the PredictExpiration_Idle configuration property value should be set to a value less than the Siebel web server SessionTokenTimeout parameter value. A PredictExpiration_Idle configuration property value of 720,000 milliseconds (12 minutes) is a good starting point for a SessionTokenTimeout parameter value of 15 minutes.

1.3.24 SessionTokenMaxAge and PredictExpiration_Age

The Siebel web server SessionTokenMaxAge parameter value should be set to a value that is greater than the SessionTokenTimeout value. The parameter value is set to 2880 minutes (2 days) by default and is a good starting point.

If you choose to lower the value, just ensure that you do not set it to a value that is lower than the SessionTokenTimeout value.

In SPM, the PredictExpiration_Age configuration property should be set to a value less than the Siebel web server SessionTokenMaxAge parameter value. 82,800,000 milliseconds (23 Hours) is a good starting point.

1.3.25 SWSENoSessInPref

The Siebel web server SWSENoSessInPref parameter should be set to TRUE.

1.3.26 Example Configurations for Siebel Web Server and SPM

Based on the recommendations discussed in this section, here are example configurations for the Siebel web server and SPM.

1.3.26.1 Siebel Web Server

  • SessionTimeout = 300 (in seconds, equivalent to 5 minutes)

  • SessionTokenTimeout = 15 (in minutes)

  • SessionTokenMaxAge = 2880 (in minutes, equivalent to 2 days)

  • SWSENoSessInPref = TRUE

1.3.26.2 SPM

  • PredictExpiration_Idle = 720000 (12 minutes)

  • PredictExpiration_Age = 82800000 (23 Hours)

1.4 Administering the AIASessionPoolManager Service on the SOA Server

This section discusses how to run the following AIASessionPoolManager administrator operations as needed on the SOA server:

This section also describes scenarios that require manual intervention.

1.4.1 Running AIASessionPoolManager Administrator Operations

To run the administrator operations, call the AIASessionPoolManager web service. You can use the test web service functionality provided by Oracle Enterprise Manager Fusion Middleware Control.

To call the AIASessionPoolManager web service through the test web service functionality provided by Oracle Enterprise Manager Fusion Middleware Control:

  1. Log in to Oracle Enterprise Manager Fusion Middleware Control.

  2. Search for AIASessionPoolManager.

  3. Click Test.

  4. Select the required operation and provide the relevant value in the HostID field.

  5. Click Test Web Service. The outcome appears.

1.4.1.1 Start(string HostId)

  • Initializes SPM.

  • Intended to be used by: the SOA server administrator can use this operation to manually start SPM.

  • Caller responsibilities: none.

    The HostId element is optional. If not specified, an SPM is started each host.

  • Implementation details:

    • SPM creates an instance in the SOA server if it has not been previously initialized.

    • SPM reads the configuration values and loads session tokens into the pool.

1.4.1.2 Terminate(string:HostId)

  • Terminates SPM.


    Note:

    Use care when using this operation.


  • Intended to be used by: the SOA server administrator can use this operation to terminate SPM.

  • Caller responsibilities: SPM is terminated immediately.


    WARNING:

    Ensure that no BPEL flows that are requesting or releasing session tokens are currently running. Forced termination of any concurrent Get() or Release() operation is aborted and a fault is thrown to each caller.


    The HostId element is optional. If not specified, SPMs running on all hosts are terminated.

  • Implementation details:

    • SPM aborts any Get() or Release() operations currently running.

    • For each session token in the pool, SPM calls the application web server to terminate it regardless of its In UseAvailable or state.

    • Clears statistic values and the pool.

    • After termination, the next Get() or Start() operation initializes SPM.

1.4.1.3 Status(string HostId)

  • Provides an SPM text status report.

    The report includes SPM state, configuration values, current pool size, some operation statistics, session token idle times and ages, and Available or In Use state.

  • Intended to be used by: SOA server administrator.

  • Caller responsibilities: none.

    The HostId element is optional. If not specified, all hosts are reported.

  • Implementation details:

    Regardless of the state of the Statistics property (Active or Deactivated), the current statistics are reported.

1.4.1.4 TerminateSentinel(string HostId)

  • Terminates the Sentinel daemon thread for the specified HostId.

  • Intended to be used by: SOA server administrator.

  • Caller responsibilities: none.

    The HostId element is required.

  • Implementation details:

    SPM stops the daemon thread in which the Sentinel is running.

1.4.1.5 RestartSentinel(string HostId)

  • Restarts the Sentinel daemon thread for the specified HostId.

  • Intended to be used by: SOA server administrator.

  • Caller responsibilities: none.

    The HostId element is required.

  • Implementation details:

    SPM creates a daemon thread on which to run Sentinel.

1.4.1.6 ActivateStatistics(string HostId)

  • Activates the functionality that tallies operations performed by SPM.

  • Only operations that have statistics with a value of 1 or greater are displayed by the Status() operation.

  • Intended to be used by: SOA server administrator.

  • Caller responsibilities: to improve SPM performance, deactivate statistics functionality when they are no longer needed.

    The HostId element is optional. If not specified, statistics are activated for SPMs on all hosts.

  • Implementation details: by default, this functionality is deactivated.


WARNING:

The logic for these statistics is not multi thread safe. Therefore, some tallies may occasionally miss one or two counts. The reason for not making the logic multi thread safe is to avoid decreasing performance of SPM.


1.4.1.7 ResetStatistics(string HostId)

  • Resets the statistics counts for SPM.

  • Intended to be used by: SOA server administrator.

  • Caller responsibilities: none.

    The HostId element is optional. If not specified, statistics are reset for SPMs on all hosts.

  • Implementation details: all statistic counts are reset to zero.

1.4.1.8 DeactivateStatistics(string HostId)

  • Deactivates the statistics functionality that tallies operations performed by SPM.

  • Intended to be used by: SOA server administrator.

  • Caller responsibilities: to improve SPM performance, deactivate the statistics functionality when they are no longer needed.

    The HostId element is optional. If not specified, statistics functionality is deactivated for SPMs on all hosts.

  • Implementation details:

    • By default, this functionality is deactivated.

    • SPM stops tallying the operations implemented, but does not reset current counts.

1.4.2 Describing Scenarios Requiring Manual Intervention

When any of these scenarios arises, an administrator must manually terminate SPM for the host IDs in place. This cleans up invalid session pool tokens and prevents leaving open session tokens on the application web server. While Sentinel can handle this clean-up automatically for most scenarios, it cannot handle the following scenarios.

  • Restarting the application web server instance invalidates session tokens in SPM for the restarted application web server instance.

    You must terminate the AIASessionPoolManager service for the restarted application web server instance.

  • Before shutting down the SOA server, you must terminate the SPM for all host IDs, otherwise existing session tokens in SPM are left open on the application web server.

  • Before redeploying or reinstalling any of SPM components, you must terminate SPM for all host IDs, otherwise existing session tokens in SPM are left open on the application web server.

For more information about terminating SPM, see Section 1.4.1.2, "Terminate(string:HostId)".

1.5 Developing Integrations to Use the AIASessionPoolManagerService

The AIASessionPoolManager web service is the interface to SPM. If the integration you are developing, interfaces with a Siebel instance and can benefit from using SPM, you can develop your integration to call SPM client operations that get and release session tokens.

This section includes the following topics:

1.5.1 Get(string HostId, string InstanceId)

  • Provides a session token with a high probability that the session token is not expired. If no session token is available, a fault is thrown.

  • Intended to be used by: BPEL flows calling application web services. These BPEL flows are referred as callers.

  • Caller responsibilities: the caller shall call the Release() operation immediately after it has finished using the session token.

    Table 1-7 shows a list of the caller responsibilities.

    For more information, see Section 1.5.2, "Release(string HostId, string InstanceId, string UpdatedSessionToken, string ErrorCode)".

    Table 1-7 Caller Responsibilities Details

    CallerRequired (Yes/No)Description

    Hostid

    Yes

    The caller must pass the system ID that identifies the application web service in the SessionPoolManager module configuration in AIAConfigurationProperties.xml. For example, SEBL_01 or CRMOD_01.

    InstanceId

    Yes

    The caller must pass a unique ID for the current caller instance. You can use the BPEL XPath function ora:getInstanceId().

    The caller should implement logic to catch an "invalid/expired session token" fault response from the application web service in the remote case that the session token is expired.

    If the caller receives a fault when calling the application web service that is using the session token fetched by the Get(), then the caller shall call the Release() operation, pass the HostId, InstanceId, and ErrorCode values, ensuring to pass the fault error code into the ErrorCode element.


  • Implementation details:

    • If SPM has not been started, the Get() operation starts it.

    • If the initialization process fails, SPM is set to a STOPPED state.

      Therefore, concurrent and subsequent attempts to initialize SPM using the Get() operation fails. This prevents infinite loops.

    • To reset this STOPPED state, the administrator must call the Terminate() or Start() operation.

    • SPM flags the session token as In Use associating the HostId and InstanceId to it. Therefore, this session token is not available for reuse until a Release() operation completes.

1.5.2 Release(string HostId, string InstanceId, string UpdatedSessionToken, string ErrorCode)

  • Makes a session token available for reuse.

  • Intended to be used by: BPEL flows calling application web services. These BPEL flows are referred as callers.

  • Caller responsibilities: the caller should call this operation as soon as it no longer needs the session token. This keeps the session idle time synchronized with the application web server. Table 1-8 shows a list of the caller responsibilities

    Table 1-8 Caller Responsibilities Description

    ResponsibilyRequired (Yes/No)Description

    HostId and InstanceID

    Yes

    The caller shall pass the same HostId and InstanceId values used by the Get().

    UpdatedSessionToken

    Optional

    If the application web service does not return a session token, the caller should pass an empty value in the UpdatedSessionToken element.

    If the application web server returns a session token as its response, the caller should capture it and pass it in the UpdatedSessionToken element. In a case in which the session token was used by the caller multiple times, the last session token captured is expected to be passed in the UpdatedSessionToken element.

    ErrorCode

    Optional

    If the caller does not get a fault response from the application web service, the caller shall pass an empty value in the ErrorCode element.

    If the caller gets a fault when calling the application web service when using the session token fetched by the Get() operation, then the caller shall call the Release() operation, pass HostId, InstanceId, and ErrorCode values, ensuring to pass the fault error code into the ErrorCode element.

    An empty value can be passed in the UpdatedSessionToken element. If an updated session token was passed back in the fault response, the caller should pass that updated session token to the Release() operation.



    Note:

    Be aware that depending on the application web server being called, the Error Code may not be mapped into the code element of the RuntimeFaultMessage. It may come in the summary or detail element. Therefore, map the element that contains the error code.

    For Siebel on Premises web services, the error code is mapped to the summary element of the RuntimeFaultMessage.

    For CRM On Demand web services, the error code is mapped to the detail element of the RuntimeFaultMessage.


  • Implementation details:

    • When called, SPM flags the session token as Available and disassociates the InstanceId from it.

      In addition, the internal idle time counter is restarted. This internal idle time counter is used to predict the session expiration.

    • If a value was passed in the UpdatedSessionToken element, the value is updated in the pool.

    • If a value was passed in the ErrorCode element and it matches an error code listed in the InvalidSessionErrorCodes configuration property for that HostId, then the session token is removed from the pool and the application web server is called to request termination of the session. Otherwise, the session token is marked as available for reuse and the idle time counter is restarted.

PK:Շ_x_PKW@OEBPS/title.htmt Oracle Application Integration Architecture Pre-Built Integrations 11.1: Utilities Guide, Release 11.1

Oracle® Application Integration Architecture

Pre-Built Integrations 11.1: Utilities Guide

Release 11.1

E24458-02

May 2012

Documentation for administrators that describes how to setup Session Pool Manager (SPM) and AIA CompositeScheduler. This guide provides configuration and deployment steps, property configurations and how to develop integrations to use SPM.


Oracle Application Integration Architecture Pre-Built Integrations 11.1: Utilities Guide, Release 11.1

E24458-02

Copyright © 2001, 2012, Oracle and/or its affiliates. All rights reserved.

Primary Author:  Oracle Corporation

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

PKytPKW@OEBPS/preface.htm  Preface

Preface

Welcome to Oracle Application Integration Architecture Pre-Built Integrations 11.1: Utilities Guide.

What's New in this Guide

Common Oracle AIA Pre-Built Integration Guides

Oracle Application Integration Architecture Pre-Built Integrations 11.1 includes the following guides shared by all products delivered with this release:

Documentation Accessibility

For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.

Access to Oracle Support

Oracle customers have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.

Additional Resources

The following resources are also available:

PKQ% PKW@OEBPS/content.opf Oracle® Application Integration Architecture Pre-Built Integrations 11.1: Utilities Guide, Release 11.1 en-US E24458-02 Oracle Corporation Oracle Corporation Oracle® Application Integration Architecture Pre-Built Integrations 11.1: Utilities Guide, Release 11.1 2012-05-03T11:46:58Z Oracle® Application Integration Architecture Pre-Built Integrations 11.1: Utilities Guide, Release 11.1 PK>PKW@OEBPS/aiacomscheduler.htm^R AIA Composite Scheduler

2 AIA Composite Scheduler

This chapter introduces AIACompositeScheduler and includes the following sections:

2.1 Introduction to AIACompositeScheduler

AIACompositeScheduler is a utility component that is used by integrations to schedule a Service-Oriented Architecture (SOA) composite to be invoked at the specified time interval. For example, it can schedule a SOA composite to be invoked every 30 seconds. It supports scheduling composites in cluster environment as well.

AIACompositeScheduler is implemented as a J2EE application. It uses Weblogic Timer and Job Scheduler Application Programming Interfaces (API). These APIs are used to schedule a job to run at a specific time interval. When a job is run, it invokes SOA composite using composite's direct binding.

Currently, CRM On Demand - JD Edwards EnterpriseOne and CRM On Demand - Oracle E-Business Suite integrations use this utility component to invoke the CRMOnDemandActivationAgent composite every 30 seconds.

2.2 Deploying AIACompositeScheduler

For CRM On Demand - JD Edwards EnterpriseOne and CRM On Demand - Oracle E-Business Suite integrations, the deployment of this utility on the server is done automatically when the supplementary deployment plan of the integration is run. The supplementary deployment plan is run automatically when the integration deployment plan is run. When AIACompositeScheduler is deployed, it invokes CRMOnDemandActivationAgent every 30 seconds.

2.2.1 Deploying AIACompositeScheduler on Weblogic Cluster

Similar to the deployment on the Weblogic server, deployment of AIACompositeScheduler on the Weblogic cluster is done automatically by running the integration deployment plan. However, in the Weblogic cluster, the following additional configurations are required for scheduler to work properly:

  • Weblogic job scheduler table and data source

    During installation, these are created if the Create default Job Scheduler table and data source if one does not exist option is selected when the configuration wizard is run. This option is selected by default and it creates a default table and data source, if these are not created. The default table is created in the AIA database with the name weblogic_timers and the name of the data source is JobSchedulerDataSource.

    Table and data source are used in the cluster environment to persist scheduled jobs in the database. It supports load balancing and failures in the cluster environment. When a server fails or must load balance, another server can pick up the job. In a non-cluster environment, this is not needed because scheduled jobs are in memory.

  • Leasing

    Leasing must be enabled for Job Schedulers. You can use either high-availability database leasing or non-database consensus leasing.

    AIACompositeScheduler uses the Weblogic Job Scheduler to schedule jobs in the cluster environment. It is a requirement from the Weblogic Job Scheduler for the required configurations to be in place.

For more information about Job Scheduler table, Data source, and Leasing, see Oracle Fusion Middleware Timer and Work Manager API (CommonJ) Programmer's Guide for Oracle WebLogic Server, "Using the Job Scheduler."

2.3 Configuring AIACompositeScheduler

For CRM On Demand - JD Edwards EnterpriseOne and CRM On Demand - Oracle E-Business Suite integrations, all configurations are automatically done to invoke CRMODActivationAgent every 30 seconds.

If you want to modify the preconfigured settings or to schedule more composites, perform the steps mentioned in Section 2.3.1, "Creating Direct Binding" and Section 2.4, "Modifying AIACompositeScheduler Properties".

2.3.1 Creating Direct Binding

AIACompositeScheduler uses direct binding to invoke a composite. Composites that must be scheduled by AIACompositeScheduler must have a direct binding service exposed.

To create a direct binding:

  1. In Jdeveloper, select composite.

  2. On the component palette, select Direct Binding Service.

  3. Add Direct Binding Service to the exposed services side of the composite.

  4. Provide the Web Service Definition Language (WSDL) for the direct binding. You can use WSDL of other exposed services.

  5. Add a wire to the component.

  6. In the source view of the composite, see if this service uses the direct binding.

  7. Deploy the composite on the SOA server to be invoked or scheduled by AIACompositeScheduler.

2.4 Modifying AIACompositeScheduler Properties

Properties of AIACompositeScheduler are specified in web.xml. Administrators can change these properties dynamically through a weblogic deployment plan. For example, administrator can change the time interval to invoke the composite from 30 seconds to one minute.

For CRM On Demand - JD Edwards EnterpriseOne and CRM On Demand - Oracle E-Business Suite integrations, these properties are preconfigured to invoke CRMOnDemandActivationAgent every 30 seconds. Administrator can change the preconfigured properties, if required, by completing the steps mentioned in this section.

Table 2-1 lists the properties required by the AIACompositeScheduler:

Table 2-1 Properties for AIACompositeScheduler

Property NameDescription

timeInterval

Scheduling time in seconds

For example, If it is set to 30 seconds, composite is invoked every 30 seconds.

For CRM OD - JD Edwards EnterpriseOne and CRM OD - Oracle E-Business Suite integrations, this property is preconfigured to 30 seconds.

compositeName

Name of the composite to be invoked

For CRM OD - JD Edwards EnterpriseOne and CRM OD - Oracle E-Business Suite integrations, this property is preconfigured as CRMOnDemandActivationAgent.

compositeDomain

SOA domain on which the composite to be invoked is deployed

For CRM OD - JD Edwards EnterpriseOne and CRM OD - Oracle E-Business Suite integrations, this property is preconfigured as default.

compositeVersion

Version of the composite to be invoked

For CRM OD - JD Edwards EnterpriseOne and CRM OD - Oracle E-Business Suite integrations, this property is preconfigured as 1.0.

compositeDirectBindingName

Direct binding name of the composite

For CRM OD - JD Edwards EnterpriseOne and CRM OD - Oracle E-Business Suite integrations, this property is preconfigured as client.

bpelOperationName

Name of the operation that must be invoked

For CRM OD - JD Edwards EnterpriseOne and CRM OD - Oracle E-Business Suite integrations, this property is preconfigured as process.

bpelOperationPartName

Operation part name

For CRM OD - JD Edwards EnterpriseOne and CRM OD - Oracle E-Business Suite integrations, this property is preconfigured as command.

bpelOperationMessageValue

XML input for the operation

For CRM OD - JD Edwards EnterpriseOne and CRM OD - Oracle E-Business Suite integrations, the following script is preconfigured:

CDATA[<?xml version="1.0" encoding="windows-1252" ?>

<ns1:CRMOnDemandActivationAgentRequestMessage

xmlns:ns1="http://xmlns.oracle.com/CRMOnDemandActivationAgent">

<ns1:input>Test</ns1:input>

</ns1:CRMOnDemandActivationAgentRequestMessage>]]

bpelOperationType

Operation type

This can be either one-wayrequest-responseone-way or . The option signifies one-way operation and the request-response option signifies request response operation.

For CRM OD - JD Edwards EnterpriseOne and CRM OD - Oracle E-Business Suite integrations, this property is preconfigured as request-response.


AIACompositeScheduler can invoke multiple composites. To specify multiple composites, first composite is named as compositeName and subsequent ones as compositeName1, compositeName2, and so on. You might have to append the suffix 1, 2, and so on for all properties except timeInterval. Therefore, it is compositeName1, compositeDomain1, compositeVersion1, compositeDirectBindingName1, bpelOperationName1, bpelOperationPartName1, bpelOperationMessageValue1, and bpelOperationType1.

In the cluster environment, timeInterval property less than 30 seconds is not valid, because minimum time for recurring implementation of a timer is 30 seconds.

2.4.1 To View Properties

You can view the properties in a web browser by completing the following steps:

  1. Log in to Oracle Enterprise Manager Fusion Middleware Control.

  2. Expand Application Deployments.

  3. Click AIACompositeScheduler.

  4. Under the Web Modules, find the Test point URL.

  5. Append compositeScheduler to the URL.

  6. View the properties.

2.4.2 To Modify Properties

After AIACompositeScheduler is deployed, you can specify the properties of the composite to be invoked through a deployment plan.

Complete these steps to modify the properties:

  1. Log in to Weblogic Console.

  2. Open your_domain and select deployments.

  3. Select AIACompositeScheduler.

  4. In the Overview tab, find the path for the deployment plan.

  5. On the file system, navigate to the path for the deployment plan found in the Overview tab.

  6. Search for the deployment plan.

  7. Open the deployment plan to modify.

  8. Search for the property under variable-definition that must be modified.

  9. Modify the value.

  10. Return to Weblogic Console.

  11. Select AIACompositeScheduler.

  12. Redeploy AIACompositeScheduler with the updated deployment plan.

2.4.3 To View Logs

AIACompositeScheduler writes to the server logs. Depending on the Weblogic server setup, location of the logs may vary. An example of the location of the log files: oracle/Middleware/user_projects/domains/soa_domain/servers/soa_server1/logs.

2.5 Starting and Stopping AIACompositeScheduler

This section includes the following topics:

2.5.1 Starting and Stopping AIACompositeScheduler on Weblogic Server

This section includes the following topics:

2.5.1.1 To Start AIACompositeScheduler

After AIACompositeScheduler is deployed, it automatically starts invoking composites for the time interval specified.

2.5.1.2 To Stop AIACompositeScheduler from Weblogic Server

If you stop composites, these are no longer invoked. Complete the following steps to stop it:

  1. Log in to Weblogic Console.

  2. Open your_domain.

  3. Select deployments.

  4. Search for and select AIACompositeScheduler.

  5. Select Stop.

2.5.1.3 To Stop AIACompositeScheduler from Oracle Enterprise Manager Fusion Middleware Control

  1. Log in to Oracle Enterprise Manager Fusion Middleware Control.

  2. Open Application Deployments.

  3. Select AIACompositeScheduler.

  4. Right click and select Control, Shutdown.

2.5.1.4 To Restart AIACompositeScheduler from Weblogic

After stopping the AIACompositeScheduler, you can restart it again to invoke composites. Complete the following steps to restart it:

  1. Log in to Weblogic Console.

  2. Open your_domain.

  3. Select deployments.

  4. Search for AIACompositeScheduler and select it.

  5. Select Start.

2.5.1.5 To Restart AIACompositeScheduler from Weblogic Server

  1. Log in to Oracle Enterprise Manager Fusion Middleware Control.

  2. Open Application Deployments.

  3. Select AIACompositeScheduler.

  4. Right click and select Control, Start up.

2.5.2 Starting and Stopping AIACompositeScheduler on Cluster Server

In a cluster environment to stop a composite from being invoked, you must cancel the AIACompositeScheduler job. This job has the description - AIACompositeSchedulerTimerListener.

Complete the following steps to cancel this job:

  1. Log in to Weblogic Console.

  2. Select Environment, Servers.

  3. Select the server on which the jobs you want to cancel are scheduled.

  4. Select Control, Jobs.

    The list of scheduled jobs for that server appears.

  5. Select the AIACompositeSchedulerTimerListener job option.

  6. Click Cancel.

PK_ĔcR^RPKW@!OEBPS/dcommon/O_signature_clr.JPG"(JFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?O '~MQ$Vz;OlJi8L%\]UFjޙ%ԯS;rA]5ފ<׈]j7Ouyq$z'TQuw7Ŀ KX߁M2=S'TQt?.5w'97;~pq=" ~k?`'9q6 E|yayM^Om'fkC&<5x' ?A?Zx'jß={=SßM gVC.5+Hd֪xc^)Җufz{Cީ|D Vkznq|+Xa+{50rx{|OG.OϞ~f/ xxX[2H )c+#jpUOZYX\=SG ߨC|K@;_߆'e?LT?]:?>w ڔ`D^So~xo[Ӡ3i7B:Q8 Vc-ďoi:FM292~y_*_闱YN\Fr=xZ3鳎OwW_QEzW~c]REeaSM}}Hӏ4&.E]u=gMѠ+mF`rNn$w9gMa꺢nTuhf2Xv>އ a(Û6߭?<=>z'TQuw7Ŀ KX߁M2=S'TQt?.5Kko\.8S$TOX߀Gw?Zx汴X)C7~.i6(Щ=+4{mGӭ¸-]&'t_kV*I<1)4thtIsqpQJ+> \m^[aJ5)ny:4o&QEnyAEPEEss 72,PDۢ׃K W{Wjr+wگ iM/;pd?~&?@;7E4gv8 $l'z'TQuw7Ŀ Gֱ=ɿ&G?. iR(5W*$|?w᫼gkmIbHe/_t>tg%y.l}N5[]+Mk0ĠeHdPrsst'UiC,y8`V%9ZIia|ܪvi מYG,o}+kk{YbyIeb*sAtի82zWoEK5z*o-eo;n(P u-I)4Š(HQEQEQEQEhz(X/Đ?}Bk˩ ݏrk0]4>8XzV? }6$}d^F>nU K ?Bտk_9׾x~w'ߞ  uDŽtL ؈5c-E/"|_Oo.IH쐍=i*Iw5(ںw?t5s.)+tQ2dUt5Vĺ.jZ"@IRrZƅY4ߡ_;}ų(KyQf1Aǵt?sZg+?F5_oQR&Dg߿]6FuRD u>ڿxl7?IT8'shj^=.=J1rj1Wl$얲cPx;E,p$֟ˏkw qg"45(ǛkV/=+ũ)bYl~K#˝J_כ5&\F'I#8/|wʾ_Xj Q:os^T1.M_|TO.;?_  jF?g N 8nA2F%i =qW,G=5OU u8]Rq?wr'˻S+۾.ܼ 87Q^elo/T*?L|ۚ<%<,/v_OKs B5f/29n0=zqQq(ª=VX@*J(э(f5qJN_EVǞQEOuoѕOuoa5}gO?:߂8Wא|cڽ~]N&O( (<]>͠@VQ=^~U ̴m&\խ5i:}|}r~9՝f}_>'vVֲ$~^f30^in{\_.O F8to}?${φ|#x^#^n~w=~k~?'KRtO.㌡h![3Zu*ٷճ(ԟ]z_/W1(ԟ]v~g|Yq<ז0 ; b8֮s,w9\?uEyStKaª@\,)) (!EPEPEPEPEPzѧts{v>C/"N6`d*J2gGӧWqBq_1ZuΓ\X]r?=Ey88Mp&pKtO-"wR2 K^-Z< \c>V0^@O7x2WFjs<׻kZ(<Т(OFw/6$1[:ޯԯ#q~4|,LVPem=@=YLUxӃV}AUbcUB.Ds5*kٸAeG>PJxt͝ b88?*$~@ׯD VkraiJs}Q.20x&mXξ,Z]“A-J#`+-E/"<]\a'tZGy.(|lދ~gMK OZdxDŽU9T6ϯ^<Ϡt5CZ]].t۫S=s`ڳ%8iVK:nqe+#<.T6U>zWoy3^I {F?J~=G}k)K$$;$de8*G Uӟ4Ocºw}|]4=ݣ\x$ʠms?q^ipw\"ȿPs^Z Q_0GڼU.t}ROM[G#]8wٞ ӫ87}Cgw vHȩBM55vof =A_٭`Ygx[6 P,5}>蚊(0(+?>+?> k|TuXq6_ +szk :u_ Z߶Ak_U}Jc2u/1[_»ݸG41-bሬ۴}}Eȹפ_c?5gi @cL\L<68hF_Ih>X4K7UТ sMj =J7CKo>Օ5s:߀t ~ηaٿ?|gdL8+gG%o?x`دOqȱwc¨&TW_V_aI=dpG!wu۞սZ1yL50$(l3(:~'ַo A}a3N*[0ǭ HKQV}G@֜$ 9of$ArNqUOgË05#m?D)^_h//5_/<?4}Jį+G"p`ƒFF "a"E|ժOC&xCRz OBtX>XE*O>tdqAJ +,WxP!CYpQ HQzDHP)T njJM2ꔀJ2T0d#+I:<жk 'ꤱF AB @@nh Wz' H|-7f\A#yNR5 /PM09u UjćT|q~Yq@&0YZAPa`EzI /$AD Al!AAal 2H@$ PVAB&c*ؠ p @% p-`@b`uBa l&`3Ap8槖X~ vX$Eh`.JhAepA\"Bl, :Hk;PKx[?:PKW@OEBPS/dcommon/oracle-logo.jpgJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222'7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE!KEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEzE7V%ȣOΏ9??:a"\fSrğjAsKJ:nOzO=}E1-I)3(QEQEQEQEQEQEQE֝Hza<["2"pO#f8M[RL(,?g93QSZ uy"lx4h`O!LŏʨXZvq& c՚]+: ǵ@+J]tQ]~[[eϸ (]6A&>ܫ~+כzmZ^(<57KsHf妬Ϧmnẁ&F!:-`b\/(tF*Bֳ ~V{WxxfCnMvF=;5_,6%S>}cQQjsOO5=)Ot [W9 /{^tyNg#ЄGsֿ1-4ooTZ?K Gc+oyڙoNuh^iSo5{\ܹ3Yos}$.nQ-~n,-zr~-|K4R"8a{]^;I<ȤL5"EԤP7_j>OoK;*U.at*K[fym3ii^#wcC'IIkIp$󿉵|CtĈpW¹l{9>⪦׺*ͯj.LfGߍԁw] |WW18>w.ӯ! VӃ :#1~ +މ=;5c__b@W@ +^]ևՃ7 n&g2I8Lw7uҭ$"&"b eZ":8)D'%{}5{; w]iu;_dLʳ4R-,2H6>½HLKܹR ~foZKZ࿷1[oZ7׫Z7R¢?«'y?A}C_iG5s_~^ J5?œ tp]X/c'r%eܺA|4ծ-Ե+ْe1M38Ǯ `|Kյ OVڅu;"d56, X5kYR<̭CiطXԮ];Oy)OcWj֩}=܅s۸QZ*<~%뺃ȶp f~Bðzb\ݳzW*y{=[ C/Ak oXCkt_s}{'y?AmCjޓ{ WRV7r. g~Q"7&͹+c<=,dJ1V߁=T)TR՜*N4 ^Bڥ%B+=@fE5ka}ędܤFH^i1k\Sgdk> ֤aOM\_\T)8靠㡮3ģR: jj,pk/K!t,=ϯZ6(((((((49 xn_kLk&f9sK`zx{{y8H 8b4>ÇНE|7v(z/]k7IxM}8!ycZRQ pKVr(RPEr?^}'ðh{x+ՀLW154cK@Ng C)rr9+c:׹b Жf*s^ fKS7^} *{zq_@8# pF~ [VPe(nw0MW=3#kȵz晨cy PpG#W:%drMh]3HH<\]ԁ|_W HHҡb}P>k {ZErxMX@8C&qskLۙOnO^sCk7ql2XCw5VG.S~H8=(s1~cV5z %v|U2QF=NoW]ո?<`~׮}=ӬfԵ,=;"~Iy7K#g{ñJ?5$y` zz@-~m7mG宝Gٱ>G&K#]؃y1$$t>wqjstX.b̐{Wej)Dxfc:8)=$y|L`xV8ߙ~E)HkwW$J0uʟk>6Sgp~;4֌W+חc"=|ř9bc5> *rg {~cj1rnI#G|8v4wĿhFb><^ pJLm[Dl1;Vx5IZ:1*p)إ1ZbAK(1ׅ|S&5{^ KG^5r>;X׻K^? s fk^8O/"J)3K]N)iL?5!ƾq:G_=X- i,vi2N3 |03Qas ! 7}kZU781M,->e;@Qz T(GK(ah(((((((Y[×j2F}o־oYYq $+]%$ v^rϭ`nax,ZEuWSܽ,g%~"MrsrY~Ҿ"Fت;8{ѰxYEfP^;WPwqbB:c?zp<7;SBfZ)dϛ; 7s^>}⍱x?Bix^#hf,*P9S{w[]GF?1Z_nG~]kk)9Sc5Ո<<6J-ϛ}xUi>ux#ţc'{ᛲq?Oo?x&mѱ'#^t)ϲbb0 F«kIVmVsv@}kҡ!ˍUTtxO̧]ORb|2yԵk܊{sPIc_?ħ:Ig)=Z~' "\M2VSSMyLsl⺿U~"C7\hz_ Rs$~? TAi<lO*>U}+'f>7_K N s8g1^CeКÿE ;{+Y\ O5|Y{/o+ LVcO;7Zx-Ek&dpzbӱ+TaB0gNy׭ 3^c T\$⫫?F33?t._Q~Nln:U/Ceb1-im WʸQM+VpafR3d׫é|Aү-q*I P7:y&]hX^Fbtpܩ?|Wu󭏤ʫxJ3ߴm"(uqA}j.+?S wV ~ [B&<^U?rϜ_OH\'.;|.%pw/ZZG'1j(#0UT` Wzw}>_*9m>󑓀F?EL3"zpubzΕ$+0܉&3zڶ+jyr1QE ( ( ( ( ( ( ( (UIdC0EZm+]Y6^![ ԯsmܶ捆?+me+ZE29)B[;я*wGxsK7;5w)}gH~.Ɣx?X\ߚ}A@tQ(:ͧ|Iq(CT?v[sKG+*רqҍck <#Ljα5݈`8cXP6T5i.K!xX*p&ќZǓϘ7 *oƽ:wlຈ:Q5yIEA/2*2jAҐe}k%K$N9R2?7ýKMV!{W9\PA+c4w` Wx=Ze\X{}yXI Ү!aOÎ{]Qx)#D@9E:*NJ}b|Z>_k7:d$z >&Vv󃏽WlR:RqJfGإd9Tm(ҝEtO}1O[xxEYt8,3v bFF )ǙrPNE8=O#V*Cc𹾾&l&cmCh<.P{ʦ&ۣY+Gxs~k5$> ӥPquŽўZt~Tl>Q.g> %k#ú:Kn'&{[yWQGqF}AЅ׮/}<;VYZa$wQg!$;_ $NKS}“_{MY|w7G!"\JtRy+贾d|o/;5jz_6fHwk<ѰJ#]kAȎ J =YNu%dxRwwbEQEQEQEQEQEQEQEQEQE'fLQZ(1F)hQ@X1KEQE-Q@ 1KE3h=iPb(((1GjZ(-ʹRPbR@ 1KE7`bڒyS0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+5/5u9n Hݵl8n;qHq5k!oY!eH7z(((+k_iךŌlmw=(I$ tW_'<=oy}#R'O2Km9 3ӟz4+i林[vdi`0yEPEPEko-ıH^I$`I$$麶۵ƗZ_@QeP#8 Tz叇;:ZK-; *rr@Т9jzd!7Z'6poD$_$(8?A::΍c[w Fp}Mp1urMH^K.KT(]:]$|MDFnFn~ads\+}O㯄/#-ndFk FA=+l,8- ;!1.I' 8$ƀ8|Xaˣ\Ϥkncrs!P2T Hb,JW/\U$ԴO YYxzSQl`ry+>QbwDŽ-!Kh-啅mڠc{ߎxW_)>x^nZzͩ}l;ca8_N 21VFo1W jIaY?TU;y_]覠 :[;M[y^"6_Wa:ܯc;u[PWտ]X;n1da[WY诵sRp!Ah'cRQ_|aۍJߗ`$ =BxA'/^%Ö%FQA`dk+fVW bwKy̪b* @,ۏ}@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@GVyQ 8Y-)B)9H#9)///ZnW"{SQAλbcDlsI@_| mއ{RhӛI+30Npkv:_x^Óϛ>S,9;qaHz>i7yhލ !\<}(>1_[|'y'kk>vXrp^k_t/ཱུl vêʜEx?8_ۏv?jDnUXI!][o\ap(h;Լ:9 kH$m(#1x?yV?-va~]H^Pѐ+Fp} X񯂴hzp+Z ˃Xc{zVƓãh:]HY[oHAbA8gP =5o( >HXneq+*! dJ[cHU I9s~,{Y.)9#6 0 x狃ul7Jz0l`EX'Թ.dkKˈ{_^я.:#6pwlτ_t/#ol[G<ϯ˶I9\hxv{E g%@ 2Nr00 gh|7'ۜqݎ8O$u?-'{$IAg?? +H88A5ׁ|CooO.rgcO_A {FŜt.ZeF;Un `[Io GÖkkc$:@W7-]OG1h%]syLq7)823;y_]覮?Y_Q{ȖMߒʫbI$+m.0w?/97c1C²訫_M.y?yF.`A< V=m/Kh%kkV`Up6aoZ9xKm7Zи}JaЫ)OQGϷgh^|xݿwM=1^ ?$tE7pۈ:1l`g8$t>U4 ik1Z/Ibzf$2I ?;IaXTyZ襨k7ǚ4:^=0Ep ֮łVÞޕ5n4VX(PNk uGk~ydt\ۜVPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEs~5=STh%[u[TV`Yw2aJu(uTY x#Y 0EP8G-/7}^LpːȻRO$q]PX)ݟ9w./̛c O&[cHU I9eOzewҭ.ɠ7\ G^?gE<./.$yw2i`۽r@<H'w'8ϙfv x-h%@WR2#5i'ƜxD@Sz]’qޫ<95^l氙$l$}㜜pxmm常8` $Q@$ ??a;wyRy{vmgn99;y}?í:1n8RıBwgq'z? |tƚ`(ɽ.9evGXgMn5h٩Of,#BT sҷ/:O.'gNPKN=+xV|i]\ZOWoI$׽Iu+E燧]2Zex M\frOlՏ xþ1Wϲs${wgoQn~#S}I-$ϵ ;y|pCy:U3gq^ x]-c\up,J@X s1OFQK ;_hy$dU đJ'hZ5k Y%d2˻-y!A`ds4SΌ5ֈ;n`z޷xsGVծ>c2]w0Q‚O$x*ZS ki cߐp08{~Ѥ})<*+W$6zq^!B:NҬn,`gm5KYGȘɂ)&CTxָ']'Zn.bOF+y{oM9,0ZkVGlIgp\3@V3up^ƿ|!! nC\8G}oi7yv<>vXrp^CDUi2]id پuC9>BF>}Ofg'ku\M #r4 T2@4xk[x?-f4L+u a #xh]IH<  =T{k(((((((((((((((((((((iEK^O'UZKǞ!+ԸfvU*j\vZl7t.i쬡$d@q(߿+ 8<9O>({K>Lp̝d]syPf_kQM̭oF5?63}g;:gt>AⱚwVm"BH8%Hq+ωZ-;Yq%xP.ŅH1M#w|%/We=6öֱmf6w`p1] KKb)q ,'$ нr<7¾d]Iɔ$0GUy~-xr#2%hVM1p2kWocͫx1m;+T+~pGylj_Kޤn ˖2'' ^+:gmZZXH OYaRP1sK׿hˤ{ $> 8nz^'%Ujc^>~np#O#o,@(ĺlυu}.ݣYl$(gBqhg'dQWk'=[i-ϕn[npqc85&V? izO-+Z2(T({zWq<[oqsA*92<G ew4fҬC:7+)ݹ<=Y' _~Ҵ\Utiij9mT*NNO5|S/.l^RO.E'Yp*h~EcOO?"㞠c_9^6NUGCنOAׇ":oqc.B]@P6hأ g&+:͚x{I4GLFK5m6mpѴ^Fة# dz «tj2  z{=g& dH#} Ȥ`rz+_??v&ػZUS L~lb?(oķ$$VlrB$ ǩ: x]Ե7X,dm &:Ҁ2G> lk[X#":f?k~ydt\31޾#MI䵵߱`\vsX +ٗft;y_]覠IaY?TU|q:Z[Kodq!U99 M}Ex |Mg{Uf:A:lRKUFpOIgǷ ltkI'ֵwxl&A!z*99J+,=;:5[$~f0:eQr?8>]1X|'ayku3&7#\dr2 ]:\R61<rLx̼ nxm~>>X$y$(rI'5z/hsKd,63-Ď$N3e#$f<1xk϶Xnj RP1A{mU4{/TK{2bPQȑKq gӭ}/H]Wq>׵[vlu$eXpK.g`d|{}.F}kWw͂o>]B1m`D_SӾӯU ~Gc îUG, sc៊53:_}k=^MiT֜X  r 5Y~3GÖt-mwy#.w;9Տj$u/|uR|9o5p0C6wa9@4|M];JK/, 荀Q3xRN6 fWş붒GAgvdvv2,X~{$'ym"h%BG"WR0A4x:߆5;ѥm!I22IUW9 |n?Vxĝ XFJ~u6Ƕٷ0€>,W왹lfR}_@W30BePs-à 60Q2;8;px='|#g_krG7VrF$Vndh+p +zOx(fTn ; eOڸ:}:}qcmm˳n`00'={|7y¾??ǖ߿{xow:> !пJ$/5?͝wRy!3#'( >X^i tk;I.>>*⦳4I#%eu#gqKxqf$`:++} A X{o|)d md ),3ֽsZkh3pklTIߒ)?F-_4nrT2>2۾`rrExl-fI#Ƴ"cH퓏S^kvÖ -](v (f_kW󦓤ߌu] 벢ۃ+H3" `mb^妧ϤM}g*:̿4ۧ֯`*E5xƋxϋuo k%Rj`cwdYUH*HQZ~&{SUҧmi-ŶZuCv r p8i:[}SO9cbTC 0gĝ XFJ~u6Ƕٷ0=¾p OROڵ(5Vw,V9z>k,vlqq)ۂ sՏ ||wiϫ]Cx14c.dc#˰'6˿,EȁnwUpĀ1kLO,!#v*zu\?ĝ XFJ~u6Ƕٷ0€ /J޾k|#W0}ι8ܻ6sPWx)z[VJv@R+Ooygvglvǥq(k+=wQ$C:\JN2qijiEK[ ΄#QTd[E#LA19hc[+Ɔ{neH-v]IVC$lN㑌 (~V}#5a7^S3.ߙwga}#▷sƭi7gدtȧ (?nƓjh%ةlΣ g> >u&I&P!#H?|aC}_^fuIY>FW+ƧO2OghԱdҼ6yep0P H?h'cRנxI熿kyV?-umwgDWYjY}y(Xdnt=|GG-Sv}t"ːFHbO$c q]|;7Cm66!?n\NMn>QҾUtiij9mT*N@i<־ żCXR`9 k[q]qGjJ2:*N7c$@xKj^W$(5$1X92x_@ӵ'L' cm*Xe@^:qw1Yۦe~?$9$2M\N>#I|>"\ޢQe\PRVPqq^kssd%˅BvJC)j*]\sgp:0`AAv_+G5iԭ-并-^s:lʷelOɹn@ylqu "? K`S$!FG72z~$^tovZ\.vVm,wG ov?hwO>+>:QT/Ѭe! Ak9TޣljQEQEQEQEQEQEQEQEQEQEQEQEQEx$O*Z4 ׼\˧o}y%RoȬ,~1w?±jDŽ/LnaywV}3'';]cP!0pA@> DuI/c{fkx“ \RU.1גx\g/AMwQy[HUڧX(z5[Ӭ̺hTKnP%BH _Ht/x҉+iEKX ~+WAkaTQ/@"9rs|_¶%Hҁ=ˀ2 O$ I熿kg/JҽO<5`_ ?|koV~O4 @' *E-y$O*Z<R,ZWe ~?Z}Ry $SH%Y#.]B߆SxNC]rY$a=~t\xW_)O'x{΃e)^5!/ uc/}qK<&: sׁ#~»4x&Q4B{Q!v8 @h82yh[I!ӄvRbdHhJ.qw6fmagkkC n'j(FO'w?±k/-YZER(QJ ?{}.MwNad|9.X1l֗or^OO1i e+Ccq\IJ|V>ɚ(w2:TC²訪lj~()9kSԭ% mnڣ~s8+7X |9 ~\m1ȢG<1QPk8n#]>iF52!ѕO9h-;3N22(ۖVڠ Ok5ޡjB/@X6 ᬐ&5 ambIyr o',Q2Qҫ;YGbGz+v:4IKMI} BA ?|koV|2nZf_kPYsᦥۍ?^iW散iUIx08WV:g,6~4—AKw&'.\U Wx~iݍZĒE {{+cqg:=7NZ#BmEĤȀ|j:o1&N? ypE\7#S0}"(?Bq#89((((((((((((((ͺ} ;VU 23F}e 4?CAEW,㳰<h$(dE}? w^_J9b2p\Դ7Y[}SO\:u ʡF@`FpHϹPpA VG  HB(qkh:co}>:tI$w6'$sօORtfmM>p+*#>A6[0D#5 `*J(ͺ} ;VU 23F}no03haX r*9[{ PȡԌA8IESt7Fk}/OGk ĥHPpϰ-QQҬn/n${Nd`F:Т ?}ݿzqZPXާy%1i죑#'VV~hߕX9n38=hQ@zo4MIkj1\Tq*?xrY6Si˨vfآ<㯀nmR{)9{I V^zO_^+^o~L+ZAik#2pIhwKxM/;7z@ +$;Q^KIoQ%zq~5Ci5גȶְa,7WB1?ⶥo^h$zTO$* 66#jϰYhhy^G|yyݳw]3^Nƿi@@QEW/O^}bI̗yv p⺊5֐Iuk<`[kW#y⏈g/5K-4&H(L`>_?(:}[;uy^oc]m{Lռ'֑\[lށ83@QEykk~ydG\31޽BiO_@PRˡ>(-dh`&8S;K=2K--cFI''uQy&mxeVRT 'c|g^>,o;8,.໵;&A"6  88 ±m'/>_m伻"|C)cǥxÿ$| 5]Z7eMWcDÂHzWxB_>nS`ӵ uo:a No3ζ^-~W%T)ּwXվ/?[vzuC>':3ol{9۞?PxU4O_j:8|&ywEVP8RǏJ<߄,u~gm[1#*K Sϭ6?!ϲ|ۤT8T?)C}"O=%OS#Hѳ@rK~7?t[?BywwNօ| oD {z~u⿷kxJ@7n7Fwh韼:P%^0S?nvz{u@?{/~O;~w  !y$($s96\J>i9cWE.@7iSʎG~&h?lĖ=nB>8@iEe_5II b8@^|85-1 F1۠ +W5iv\5յҀ̪w H+E.IJ+Y HԀzJ¶ oNj;LF9&li @<>*x-G~Ot~6ZBFYe G^OA$o~&i8n]^'+( zNX"{ok SW(?I!~7go*6 gvzcQEy/𱿵?Q+^|~|MW<37?sOmٷY~&¹Gylg;WPX~4k_Y!-26*& 9s\2X >дeTŔ@\rAR+־1Z^W^?_@Ww|+ (zqj03Y.X ,@85b ặXTeu# 8 s@QE3Ojp}) m6QW363Y$98E<6\K0DF dOhC'C?IWAInQszD^ cs[HOn >35My I\$NU #1PI=&#%$B(Huw҈Vᅅr]6!J# ?J>_W@$](_Ht/x҉($](_Ht/x҉(?WƱ}oک5-^OX·)T!~\tͨݝ\о*9=/C?hvZE%Kf[Y 'Mr/\xvx~,"ywraf\@r kq7~+.wڒ;X:˫;#p[$opp&8?^O!ck+KxsL2G;\'nɮ?#Fl9>,%UviO<5msKb]Z (gɎYbo͂DžHs)Zn U+Y0'4cgyawݬ4 H8a~b| s4^:&]x]I!i- mv7F>|nf_kWxZ_)f6ճlpH@d$2p̿4ۧ֠[zno|753[*6CF08a*_wu+V^7D? :͍c4l$rK=(C|7ME|TWaVUF1f1l,kl'Ό?"]sцNW:H4ǐK変ܸ 79RqN7[yº֍uݔȬ\a|dg@C²訫Լo|~5ZOkv,-[@ 0CyqyVOs¨ugM Zeavr~Q% .X&ޤo> '\'d 2%'Su)ѵ-?"+`++1w={{egvgdH$F Q ͜7pIuk[WrW#bI¾c5_]ISɔ$rGU?uQEQEQEQEQEQEQEQEQEW8?ZWQ@? k5^E6fSTԡ+uU&Jf܌s=+q`9x+M6w455ӫ0bUF0c6fSTԡ+uUJf܌s=+ uGk~ydt\ۜVQ@? k5]~hs}7ۼ3n=sڻ (񯂴hzp+Z ˃Xc{zVƓãh:]HY[oHAbA8gU((_9;rΝ$ÎHr\<aWgDpp;cB+( ÚGt[-ؤf=K3X$hO7VEJ$E `*J(g]I<2Q1 Q03sגzq^ ×zku{8:[P?7gZhvO%;sǵc¸cq?<>WM?{] ×zku{8:G7gZhvO%;sǵlQ@sHHq&ȯ-dpC089 G웛ktll݌mUQ@+?'i[StۻUQEy~x+_Ik>'5$~!VU? 䓓Q{_<=#Wۺ \.V 6*A #k( ÚGtu ĩV TpHMyfT`Grw@O'$Rk( ÚGt[-ؤf=K3X$jQE^S Y1#`2*z녖jZz b W9qd>M~tWs('\AsP+Xu~]I )<:ۯwg GT nTgQ@?[7n{%5` :qaU8&oy~g7cUzvP㯇?k\C3#~rLwŠ(QW)R+ ]wPLrd'$Ս4=GKy5 ^UԔb6|21yEs~ V=m/Kh%kkV`Up6aoZt=/:sj^ڶNɓ;InS[(#ulʗzYb2 tdtMv ;9q)wib 1|kaxmm常8` $Q@$ ??a;wyRy{vmgn99⊎ ặXTeu# 8 sU-[MѭT-,`g]L)lXqh~Wn=N; .dɠHA# U=KVtku5 K,S,J[ g{(Q)dPI,r@xn⸷9$l]H #=g\==oNYdp(Bo~ ӵ&Hw@ EPIQ€ ()Z[ƩZXdbR'87ΈwdѴ;4CG•۾`~0z($HB(@V?|7g]wOkꣵsz?x}v>rH,y_2|u~٤t@1' dn ( EG#֠ x+唚5u& RK#I$E/rp<@぀{u(uTY x#Y 0\?xkV)k(((((((((((((((((((iEK\Ğ ki Z !Ip~O4 pCuG4$r(eu0 qX~"[Dnigdw Q,A%c:[ڮ{[vhfV k4) M}[<'85̊ĨI<FkិX't,d*Kܑ@_Vw*޵뺜N0ƤX8 =}+^M^C\#d+U  > #4tj4sjw / " 0J9\z)//IԡtkRdX/m㸍d0WP3kf_kWXXu~]I )<:׃̿4ۧ֠ |A ]3RPirI'7s!V!Qg$ dg<Tޗp\c'vO9Myĭ,u<(bŤFܑS%^l氙$l$}㜜PG4YKZti*\LA$lsOGῇ~%}H,hL b:{xݯ7OQ^|sp 4wwERc) mF #dW4_\Ixͬ24i|FPq>;X|/H$mG#/8 i,oی)!@ p!6RÖCEKV 0N;?WڄU-5K[wլ'Yp6F9`FA|=NJ>Z{<rc2)#$H9R’yBN<7m:t-d漙r'.I ( g/JҾ߿( (>V_@Wk (+h'cRװWO4 @' *E-tI熿k (((((((((((((((((((,+Rmt.{Hg.Juڬsk֛6]#Kh{+(mh*Y)# dz Ԣ8Q~U'|vO^ᾉO x^-3X䵞y$f$p1p06PfdIjNؒ-SmTʖ(C8P*?E5]^xJ_%@HxbN32u`)6si5ܗ2gt̪sNIz5klfwݱw*|tz (񟁴_iicE 1>n !e񝤂0@x=@#kÑ78Lhޡ.(BrlQ 3^Ep~ ߍuox=Aͻ[Gej`r / nJ=7Z|Qee`Ug6vqJ( 1Ie_İ:,o8*UL/#*C `>x>Pֵcm담i]ܻ[o c*v{w^Ep~5.0UދCnW& ps90~PxKO[.ePJV8 :HP?<1GCH 噹y\w=~@r9OQYHbRgqR A,`0e#P@4ъFȡ؀15,}$@VhZ4x]X.nIXUi#G?tWIEQEp~5Ҿ$_k0i~-d0eaG^Ǐ_;ҾQkpG4"$ r| >S4Ђ"S 1%R:ȝ 8;PKPz PKW@OEBPS/dcommon/rightnav.gif&GIF89a1ֽ筽ޭƔkZZk{Bc{,@ ) l)- $CҠҀ ! D1 #:aS( c4B0 AC8 ְ9!%MLj Z * ctypJBa H t>#Sb(clhU 1) collapsible = false; for (var k = 0; k < p.length; k++) { if ( getTextContent(p[k]).split(" ").length > 12 ) collapsible = false; c.push(p[k]); } } if (collapsible) { for (var j = 0; j < c.length; j++) { c[j].style.margin = "0"; } } } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(compactLists); function processIndex() { try { if (!/\/index.htm(?:|#.*)$/.test(window.location.href)) return false; } catch(e) {} var shortcut = []; lastPrefix = ""; var dd = document.getElementsByTagName("dd"); for (var i = 0; i < dd.length; i++) { if (dd[i].className != 'l1ix') continue; var prefix = getTextContent(dd[i]).substring(0, 2).toUpperCase(); if (!prefix.match(/^([A-Z0-9]{2})/)) continue; if (prefix == lastPrefix) continue; dd[i].id = prefix; var s = document.createElement("a"); s.href = "#" + prefix; s.appendChild(document.createTextNode(prefix)); shortcut.push(s); lastPrefix = prefix; } var h2 = document.getElementsByTagName("h2"); for (var i = 0; i < h2.length; i++) { var nav = document.createElement("div"); nav.style.position = "relative"; nav.style.top = "-1.5ex"; nav.style.left = "1.5em"; nav.style.width = "90%"; while (shortcut[0] && shortcut[0].toString().charAt(shortcut[0].toString().length - 2) == getTextContent(h2[i])) { nav.appendChild(shortcut.shift()); nav.appendChild(document.createTextNode("\u00A0 ")); } h2[i].parentNode.insertBefore(nav, h2[i].nextSibling); } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(processIndex); PKo"nR M PKW@OEBPS/dcommon/mix.gifkGIF89aZZZBBBJJJkkk999sss!!!111cccֽ{{{RRR)))猌ƭ{s{sks!,@@pH,B$ 8 t:<8 *'ntPP DQ@rIBJLNPTVEMOQUWfj^!  hhG H  kCúk_a Ǥ^ h`B BeH mm  #F` I lpǎ,p B J\Y!T\(dǏ!Gdˆ R53ټ R;iʲ)G=@-xn.4Y BuU(*BL0PX v`[D! | >!/;xP` (Jj"M6 ;PK枰pkPKW@OEBPS/dcommon/larrow.gif#GIF87a絵ƌֵƽ{{ss֜ƔZZ{{{{ZZssZZccJJJJRRBBJJJJ991111))!!{,@pH,Ȥrl:ШtpHc`  өb[.64*1$#"%+ ( E' n7Ȇ(,҅(L@(Q$\x 8=6 'נ9tJ&"[Epljt p#ѣHb :f F`A =l|;&9lDP2ncH R `qtp!dȐYH›+?$4mBA9 i@@ ]@ꃤFxAD*^Ŵ#,(ε  $H}F.xf,BD Z;PK1FAPKW@OEBPS/dcommon/conticon.gif^GIF87a!!!)))111999BBBJJJRRRZZZccckkksss{{{ZRR޽{{ssskkkcccZ991ccRZZBBJJZck)19ZcsBJZ19J!k{k)Z1RZs1!B)!J91{k{)J!B!B911)k{cs!1s!9)s!9!B!k)k1c!)Z!R{9BJcckZZcBBJ99B119{{!!)BBRBBZ!))999R99Z!!999c1!9!)19B1)!B9R,  oua\h2SYPa aowwxYi 9SwyyxxyYSd $'^qYȵYvh ч,/?g{н.J5fe{ڶyY#%/}‚e,Z|pAܠ `KYx,ĉ&@iX9|`p ]lR1khٜ'E 6ÅB0J;t X b RP(*MÄ!2cLhPC <0Ⴁ  $4!B 6lHC%<1e H 4p" L`P!/,m*1F`#D0D^!AO@..(``_؅QWK>_*OY0J@pw'tVh;PKp*c^PKW@OEBPS/dcommon/feedback.gif7GIF89a'%(hp|fdx?AN5:dfeDGHɾTdQc`g*6DC\?ؘ||{;=E6JUՄfeA= >@,4`H.|`a (Q 9:&[|ځ,4p Y&BDb,!2@, $wPA'ܠǃ@CO~/d.`I @8ArHx9H75j L 3B/` P#qD*s 3A:3,H70P,R@ p!(F oԥ D;"0 ,6QBRɄHhI@@VDLCk8@NBBL2&pClA?DAk%$`I2 #Q+l7 "=&dL&PRSLIP)PɼirqМ'N8[_}w;PK-PKW@OEBPS/dcommon/oracle-small.JPG8JFIF``ExifII*C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222'7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE!KEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEzE7Ԃ̗4DztSԙ9ZQҀEPEPEPEPEPEPEPM=iԍP Gii c*yF 1׆@\&o!QY00_rlgV;)DGhCq7~..p&1c:u֫{fI>fJL$}BBP?JRWc<^j+χ5b[hֿ- 5_j?POkeQ^hֿ1L^ H ?Qi?z?+_xɔŪ\썽O]χ>)xxV/s)e6MI7*ߊޛv֗2J,;~E4yi3[nI`Ѱe9@zXF*W +]7QJ$$=&`a۾?]N T䏟'X)Ɣkf:j |>NBWzYx0t!* _KkoTZ?K Gc+UyڹgNuh^iSo5{\ܹ3Yos}.>if FqR5\/TӮ#]HS0DKu{($"2xִ{SBJ8=}Y=.|Tsц2UЫ%.InaegKo z ݎ3ֹxxwM&2S%';+I',kW&-"_¿_ Vq^ܫ6pfT2RV A^6RKetto^[{w\jPZ@ޢN4/XN#\42j\(z'j =~-I#:q[Eh|X:sp* bifp$TspZ-}NM*B-bb&*xUr#*$M|QWY ~p~- fTED6O.#$m+t$˙H"Gk=t9r娮Y? CzE[/*-{c*[w~o_?%ƔxZ:/5𨴟q}/]22p qD\H"K]ZMKR&\C3zĽ[PJm]AS)Ia^km M@dК)fT[ijW*hnu Ͳiw/bkExG£@f?Zu.s0(<`0ֹoxOaDx\zT-^ѧʧ_1+CP/p[w 9~U^[U<[tĽwPv[yzD1W='u$Oeak[^ |Gk2xv#2?¹TkSݕ| rݞ[Vi _Kz*{\c(Ck_܏|?u jVڔ6f t?3nmZ6f%QAjJf9Rq _j7Z-y.pG$Xb]0')[_k;$̭?&"0FOew7 z-cIX岛;$u=\an$ zmrILu uٞ% _1xcUW%dtÀx885Y^gn;}ӭ)場QEQ@Q@Q@Q@Q@Q@!4xPm3w*]b`F_931˜[ן+(> E ly;<;MF-qst+}DH @YKlLmؤciN<|]IU)Lw(8t9FS(=>og<\Z~u_+X1ylsj'eՃ*U3`C!N9Q_WܱhKc93^ua>H ƕGk=8~e#_?{ǀe-[2ٔ7;=&K挑5zsLdx(e8#{1wS+ΝVkXq9>&yஏh$zq^0~/j@:/«Vnce$$uoPp}MC{$-akH@ɫ1O !8R9s5ԦYmϧ'OUṡ5T,!Ԛ+s#1Veo=[)g>#< s)ƽُA^䠮ωFUj(ǩ|N3Jڷ睁ϱuږZYGOTsI<&drav?A^_f׻B$,O__ԿC`it{6>G׈C~&$y؎v1q9Sc1fH[ѽ>,gG'0'@Vw,BO [#>ﱺg5ΒFVD%Yr:O5 Tu+O멃]ی38Ze}R&ѝ_xzc1DXgس;<,_,{ƽY'AS#oF.M#~cBuEx7G+Y)(5q+GCV;qF+CLQ)qEC&6z𿊘z}?&w=+)??&\g{;V??׻xGœdٿ׼-Nc')3K]N)iLTӿCdb7Q^a N sd>Fz[0S^s'Zi 77D}kWus ab~~H(>.fif9,~|Jk;YN3H8Y(t6Q݉k͇_÷Z+2߄&[ +Tr^藺97~c܎=[f1RrBǓ^kEMhxYVm<[џ6| kqbѱ| YA{G8p?\UM7Z66 g1U1igU69 u5Pƪ:VVZC=[@ҹ¨$kSmɳО\vFz~i3^a Osŧυ9Q}_3 όO{/wgoet39 vO2ea;Ύ7$U#?k+Ek&dpzbӱ+TaB0gN{[N7Gי}U7&@?>Fz~E!a@s ?'67XxO*!?qi]֏TQN@tI+\^s8l0)2k!!iW8F$(yOּT.k,/#1:}8uT˾+5=O/`IW G֯b.-<= HOm;~so~hW5+kS8s.zwE| ?4ӿw/K N 9?j(#0UT` Wzw}:_*9m>󑓀F?ELzv=8q:=WgJ`nDr Zе<ֹ](Q@Q@Q@Q@Q@Q@Q@Q@ 'IdC0EYJVcMty_~u+Sw-aO n<[YJgL#6i g5ЖDZ14cʝ!!\/M}/_AYR__>oC? _?7_G#RERW쏞KB}JxGSkǕA pƱơP m]hwB7U$Zq M95"3q1ioATߚ{g.t uu2k=;h#YB= fgS :TdLԃ!44mFK{Hrd^7oz|BVr<{)6AXգV»|>*/hS܏z͆OM=Εq (s|s׊LKQI :9NJ)P+!ʣoAF>+=@I}"x/}۠1aנc¹4emC:>p_xWKX` >R3_S½èųp3޺u3N e یbmͺ<_ mnݮ1Op?Gm)Qb%N585'%Ahs\6yw!"&Ɨ._wk)}GP;Z!#\"< *oƾ\)}N>"լ/~]Lg}pBG X?<zZ#x69S=6) jzx=y9O&>+e!!? ?s~k5Gʏ)?*ce7Ox~k5􇔾Q/e7/Ԑ#3OgNC0] ;_FiRl>Q.g>!%k#ú:Kn'&}?U@\pџPtp)v<{_i}Oվֲ3XIYIx~b<D?(=_JXH=bbi=Oh?_ C_O)}oW쏜? %Ƶ;-RYFi`wۭ{ϖZMtQ$"c_+ԃx1*0b;ԕ݋ESQEQEQEQEQEQEQEQEQEQZ(1F)h1K@XLRE&9P (bf{RӨ&)PEPEPbԴPGKZ(iإbn(:A%S0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PKje88PKW@OEBPS/dcommon/cpyr.htm1 Oracle Legal Notices

Oracle Legal Notices

Copyright Notice

Copyright © 1994-2012, Oracle and/or its affiliates. All rights reserved.

Trademark Notice

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

License Restrictions Warranty/Consequential Damages Disclaimer

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

Warranty Disclaimer

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

Restricted Rights Notice

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

Hazardous Applications Notice

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Third-Party Content, Products, and Services Disclaimer

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

Alpha and Beta Draft Documentation Notice

If this document is in prerelease status:

This documentation is in prerelease status and is intended for demonstration and preliminary use only. It may not be specific to the hardware on which you are using the software. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to this documentation and will not be responsible for any loss, costs, or damages incurred due to the use of this documentation.

Oracle Logo

PKN61PKW@OEBPS/dcommon/contbig.gif`GIF87a!!!111999BBBJJJRRRccckkksss{{{skk{{ZRRRJJƽ{sZRJRJB91)kcZB9)sskZRJ1޽ƽ{{ssskkkcƵZZRccZRRJJJB{BB9991ssckkZccR))!RRB!!JJ1))99!11ƌ)1R)k֔)s1RZJR{BJs9R1J!11J1J9k{csZk!1J!)cBR9J1B)91B!cRs{!)s!){1B!k!s!{ksksckckZc9B)1!)!)BJ9B1919έƌ!!)JJcZZ{!!!1RR{JJsBBkJJ{!!9BB{1!!J9)!!Z!!c1!!kR!!s9Z!BckJs)19!!c!!ZRZ,H rrxB(Kh" DժuICiи@S z$G3TTʖ&7!f b`D 0!A  k,>SO[!\ *_t  Exr%*_}!#U #4 & ֩3|b]L ]t b+Da&R_2lEٱZ`aC)/яmvUkS r(-iPE Vv_{z GLt\2s!F A#葡JY r|AA,hB}q|B`du }00(䡆<pb,G+oB C0p/x$…– ]7 @2HFc ) @AD \0 LHG',(A` `@SC)_" PH`}Y+_|1.K8pAKMA @?3҄$[JPA)+NH I ,@8G0/@R T,`pF8Ѓ)$^$ DDTDlA@ s;PKPKW@OEBPS/dcommon/bp_layout.css# @charset "utf-8"; /* bp_layout.css Copyright 2007, Oracle and/or its affiliates. All rights reserved. */ body { margin: 0ex; padding: 0ex; } h1 { display: none; } #FOOTER { border-top: #0d4988 solid 10px; background-color: inherit; color: #e4edf3; clear: both; } #FOOTER p { font-size: 80%; margin-top: 0em; margin-left: 1em; } #FOOTER a { background-color: inherit; color: gray; } #LEFTCOLUMN { float: left; width: 50%; } #RIGHTCOLUMN { float: right; width: 50%; clear: right; /* IE hack */ } #LEFTCOLUMN div.portlet { margin-left: 2ex; margin-right: 1ex; } #RIGHTCOLUMN div.portlet { margin-left: 1ex; margin-right: 2ex; } div.portlet { margin: 2ex 1ex; padding-left: 0.5em; padding-right: 0.5em; border: 1px #bcc solid; background-color: #f6f6ff; color: black; } div.portlet h2 { margin-top: 0.5ex; margin-bottom: 0ex; font-size: 110%; } div.portlet p { margin-top: 0ex; } div.portlet ul { list-style-type: none; padding-left: 0em; margin-left: 0em; /* IE Hack */ } div.portlet li { text-align: right; } div.portlet li cite { font-style: normal; float: left; } div.portlet li a { margin: 0px 0.2ex; padding: 0px 0.2ex; font-size: 95%; } #NAME { margin: 0em; padding: 0em; position: relative; top: 0.6ex; left: 10px; width: 80%; } #PRODUCT { font-size: 180%; } #LIBRARY { color: #0b3d73; background: inherit; font-size: 180%; font-family: serif; } #RELEASE { position: absolute; top: 28px; font-size: 80%; font-weight: bold; } #TOOLS { list-style-type: none; position: absolute; top: 1ex; right: 2em; margin: 0em; padding: 0em; background: inherit; color: black; } #TOOLS a { background: inherit; color: black; } #NAV { float: left; width: 96%; margin: 3ex 0em 0ex 0em; padding: 2ex 0em 0ex 4%; /* Avoiding horizontal scroll bars. */ list-style-type: none; background: transparent url(../gifs/nav_bg.gif) repeat-x bottom; } #NAV li { float: left; margin: 0ex 0.1em 0ex 0em; padding: 0ex 0em 0ex 0em; } #NAV li a { display: block; margin: 0em; padding: 3px 0.7em; border-top: 1px solid gray; border-right: 1px solid gray; border-bottom: none; border-left: 1px solid gray; background-color: #a6b3c8; color: #333; } #SUBNAV { float: right; width: 96%; margin: 0ex 0em 0ex 0em; padding: 0.1ex 4% 0.2ex 0em; /* Avoiding horizontal scroll bars. */ list-style-type: none; background-color: #0d4988; color: #e4edf3; } #SUBNAV li { float: right; } #SUBNAV li a { display: block; margin: 0em; padding: 0ex 0.5em; background-color: inherit; color: #e4edf3; } #SIMPLESEARCH { position: absolute; top: 5ex; right: 1em; } #CONTENT { clear: both; } #NAV a:hover, #PORTAL_1 #OVERVIEW a, #PORTAL_2 #OVERVIEW a, #PORTAL_3 #OVERVIEW a, #PORTAL_4 #ADMINISTRATION a, #PORTAL_5 #DEVELOPMENT a, #PORTAL_6 #DEVELOPMENT a, #PORTAL_7 #DEVELOPMENT a, #PORTAL_11 #INSTALLATION a, #PORTAL_15 #ADMINISTRATION a, #PORTAL_16 #ADMINISTRATION a { background-color: #0d4988; color: #e4edf3; padding-bottom: 4px; border-color: gray; } #SUBNAV a:hover, #PORTAL_2 #SEARCH a, #PORTAL_3 #BOOKS a, #PORTAL_6 #WAREHOUSING a, #PORTAL_7 #UNSTRUCTURED a, #PORTAL_15 #INTEGRATION a, #PORTAL_16 #GRID a { position: relative; top: 2px; background-color: white; color: #0a4e89; } PK3( # PKW@OEBPS/dcommon/rarrow.gif/GIF87a絵ƌֵƽ{{ss֜ƔZZ{{{{ZZssZZccJJJJRRBBJJJJ991111))!!{,@pH,Ȥrl:ШLlԸ NCqWEd)#34vwwpN|0yhX!'+-[F 'n5 H $/14w3% C .90" qF 7&E "D mnB|,c96) I @0BW{ᢦdN p!5"D`0 T 0-]ʜ$;PKJV^PKW@OEBPS/dcommon/prodbig.gif GIF87a!!!)))111BBBZZZsss{{ZRRcZZ!!1!91)JB9B9)kkcJJB991ssc絽Zcc!!{祽BZc!9B!c{!)c{9{Z{{cZB1)sJk{{Z{kBsZJ91)Z{!{BcsRsBc{9ZZk甽kBkR!BZ9c)JJc{!))BZks{BcR{JsBk9k)Zck!!BZ1k!ZcRBZcZJkBk1Z9c!R!c9kZRZRBZ9{99!R1{99R{1!1)c1J)1B!BJRkk{ƽ絵ތkk絵RRs{{{{JJsssBBkkk!!9ss{{ZZssccJJZZRRccRRZZ))cBBJJ99JJ!!c11991199Z11!c!!))Z!!!1BRck{)!cJBkZRZ,HP)XRÇEZ֬4jJ0 @ "8pYҴESY3CƊ@*U:lY0_0#  5tX1E: C_xޘeKT p { display: none; } /* Class Selectors */ .ProductTitle { font-family: sans-serif; } .BookTitle { font-family: sans-serif; } .VersionNumber { font-family: sans-serif; } .PrintDate { font-family: sans-serif; font-size: small; } .PartNumber { font-family: sans-serif; font-size: small; } PKeӺ1,PKW@OEBPS/dcommon/indxicon.gifGIF87a!!!)))111999BBBJJJRRRZZZccckkksss{{{{s{sks,@pH,Ȥrl:Ш@Tx0CѠThDL q@(4L8C IrF   rM Dd aa CśfiiB PC9PA`S=gH B QDp1Ap)R"X3aƒC<₋0po 4P iU$4<… fe@kAC(oBݻL;PK#PKW@OEBPS/dcommon/doclib.gif GIF89a1֭Μ{kc{JsBc9Zs1Jk,@Iv 5a-5-vasEnq0& ҈VF[|O @@48۪pM(7*X(ƙjo0Fq|uHu9(dK@ @Y ! mFt,gNh% NN@ F˿lN du_g%;PKY@ PKW@OEBPS/dcommon/help.gif!GIF89a1εֵ֜֜{kZsBc{,@ )sƠTQ$8(4ʔ%ŌCK$A HP`$h8ŒSd+ɡ\ H@%' 6M HO3SJM /:Zi[7 \( R9r ERI%  N=aq   qƦs *q-n/Sqj D XZ;PKއ{&!PKW@OEBPS/dcommon/uarrow.gif/GIF89aJJss{{{ތJJﭭ{{BB{{ZZJJ11RR1199ΥJJssƵ!!ZZƽ޽Όcc))ZZֵƥ!% Imported from GIF image: arrtop.gif,JJss{{{ތJJﭭ{{BB{{ZZJJ11RR1199ΥJJssƵ!!ZZƽ޽Όcc))ZZֵƥ@pH,Ȥrl: "bJ56avEz5ᡠRYc`%))'5Vq &zq 25p]i +3-]s *,0}K )8N){N )2Kà);JéoFԴJܽҔėzI $7oFt2(0b  l< ꑈ53=Z]'yuLG*)g^!8C?-6(29K"Ĩ0Яl;U+K9^u2,@@ (\Ȱ Ë $P`lj 8x I$4H *(@͉0dа8tA  DсSP v"TUH PhP"Y1bxDǕ̧_=$I /& .)+ 60D)bB~=0#'& *D+l1MG CL1&+D`.1qVG ( "D2QL,p.;u. |r$p+5qBNl<TzB"\9e0u )@D,¹ 2@C~KU 'L6a9 /;<`P!D#Tal6XTYhn[p]݅ 7}B a&AƮe{EɲƮiEp#G}D#xTIzGFǂEc^q}) Y# (tۮNeGL*@/%UB:&k0{ &SdDnBQ^("@q #` @1B4i@ aNȅ@[\B >e007V[N(vpyFe Gb/&|aHZj@""~ӎ)t ? $ EQ.սJ$C,l]A `8A o B C?8cyA @Nz|`:`~7-G|yQ AqA6OzPbZ`>~#8=./edGA2nrBYR@ W h'j4p'!k 00 MT RNF6̙ m` (7%ꑀ;PKl-OJPKW@OEBPS/dcommon/index.gifGIF89a1޵ΥΥ{sc{BZs,@IM" AD B0 3.R~[D"0, ]ШpRNC  /& H&[%7TM/`vS+-+ q D go@" 4o'Uxcxcc&k/ qp zUm(UHDDJBGMԃ;PK(PKW@OEBPS/dcommon/bookbig.gif +GIF89a$!!!)))111999BBBJJJRRRZZZccckkksss{{{skkB991)))!!B11))1!JB9B9!!cZ9ƭƽssk{ZZRccZRRJJJBBB9c!!ν)1)k{s絽ƌkssֽZccJRRBJJ{9BB)11)99!!))11!!k!JZ!)RcJccBcs)1c)JZ!BR!)BZ)99J!Rk9!c11B)Z{)9Bkc1kB9BZ!Z{9Rs)Jkksk9kB1s1Jk9Rƥc{k9s)Z{1k91)s1Rk)Jc1J!))BZ!1k{csc{)19B!)Bcsc{ksc{kZs!RkJkJkքc{9Zks{ck9R)Bks9R9R1J!)Z1B!)c)9)99BR19kksBBJcc{ccBBZ))9kk!!199c11ZBB{9!!R!!Z!!c))!!kR!!s!!BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9B!& Imported from GIF image: bookbig.gif,$!!!)))111999BBBJJJRRRZZZccckkksss{{{skkB991)))!!B11))1!JB9B9!!cZ9ƭƽssk{ZZRccZRRJJJBBB9c!!ν)1)k{s絽ƌkssֽZccJRRBJJ{9BB)11)99!!))11!!k!JZ!)RcJccBcs)1c)JZ!BR!)BZ)99J!Rk9!c11B)Z{)9Bkc1kB9BZ!Z{9Rs)Jkksk9kB1s1Jk9Rƥc{k9s)Z{1k91)s1Rk)Jc1J!))BZ!1k{csc{)19B!)Bcsc{ksc{kZs!RkJkJkքc{9Zks{ck9R)Bks9R9R1J!)Z1B!)c)9)99BR19kksBBJcc{ccBBZ))9kk!!199c11ZBB{9!!R!!Z!!c))!!kR!!s!!BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9BH`\Ȑ:pظа"A6DBH,V@Dڹ'G"v Æ ܥ;n;!;>xAܽ[G.\rQC wr}BŊQ A9ᾑ#5Y0VȒj0l-GqF>ZpM rb ;=.ސW-WѻWo ha!}~ْ ; t 53 :\ 4PcD,0 4*_l0K3-`l.j!c Aa|2L4/1C`@@md;(H*80L0L(h*҇҆o#N84pC (xO@ A)J6rVlF r  fry†$r_pl5xhA+@A=F rGU a 1х4s&H Bdzt x#H%Rr (Ѐ7P`#Rщ'x" #0`@~i `HA'Tk?3!$`-A@1l"P LhʖRG&8A`0DcBH sq@AXB4@&yQhPAppxCQ(rBW00@DP1E?@lP1%T` 0 WB~nQ@;PKGC PKW@OEBPS/dcommon/darbbook.cssPKPKW@OEBPS/dcommon/booklist.gifGIF89a1޵֥΄kZ{Jk1Rs!BZ)B),@I9Z͓Ca % Dz8Ȁ0FZЌ0P !x8!eL8aWȠFD(~@p+rMS|ӛR$ v "Z:]ZJJEc{*=AP  BiA ']j4$*   & 9q sMiO?jQ = , YFg4.778c&$c%9;PKː5PKW@ OEBPS/lot.htmq List of Tables PKl{90vqPK W@oa,mimetypePKW@Ezu:iTunesMetadata.plistPKW@YuMETA-INF/container.xmlPKW@mD.?. !OEBPS/toc.htmPKW@kX 4OEBPS/loe.htmPKW@u 9OEBPS/toc.ncxPKW@[pTOAOEBPS/cover.htmPKW@:Շ_x_DOEBPS/sessionpoolmanager.htmPKW@ytZOEBPS/title.htmPKW@Q% OEBPS/preface.htmPKW@>tOEBPS/content.opfPKW@_ĔcR^ROEBPS/aiacomscheduler.htmPKW@Mά""!a9OEBPS/dcommon/O_signature_clr.JPGPKW@ r~$\OEBPS/dcommon/topnav.gifPKW@x[?:]OEBPS/dcommon/bookicon.gifPKW@7Oٙ}cOEBPS/dcommon/oracle-logo.jpgPKW@Pz OEBPS/dcommon/feedbck2.gifPKW@+&OEBPS/dcommon/rightnav.gifPKW@o"nR M vOEBPS/dcommon/doccd_epub.jsPKW@枰pk OEBPS/dcommon/mix.gifPKW@7  OEBPS/dcommon/larrow.gifPKW@1FAOEBPS/dcommon/prodicon.gifPKW@p*c^yOEBPS/dcommon/conticon.gifPKW@-$OEBPS/dcommon/feedback.gifPKW@je889OEBPS/dcommon/oracle-small.JPGPKW@N61zWOEBPS/dcommon/cpyr.htmPKW@iOEBPS/dcommon/contbig.gifPKW@3( # oOEBPS/dcommon/bp_layout.cssPKW@JV^P}OEBPS/dcommon/rarrow.gifPKW@_ kOEBPS/dcommon/prodbig.gifPKW@eӺ1,OEBPS/dcommon/doccd.cssPKW@#6OEBPS/dcommon/indxicon.gifPKW@Y@ OEBPS/dcommon/doclib.gifPKW@އ{&!OEBPS/dcommon/help.gifPKW@hu,`OEBPS/dcommon/uarrow.gifPKW@v I {OEBPS/dcommon/toc.gifPKW@!:3.ȑOEBPS/dcommon/masterix.gifPKW@ʍCOEBPS/dcommon/blafdoc.cssPKW@S'"BOEBPS/dcommon/leftnav.gifPKW@l-OJOEBPS/dcommon/oracle.gifPKW@(EOEBPS/dcommon/index.gifPKW@GC OEBPS/dcommon/bookbig.gifPKW@OEBPS/dcommon/darbbook.cssPKW@ː5OEBPS/dcommon/booklist.gifPKW@l{90vq [OEBPS/lot.htmPK--