diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 93b90bc85..c725fed8a 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -69,7 +69,7 @@ body:
- type: input
id: driver-version
attributes:
- label: The AWS Advanced JDBC Driver version used
+ label: The AWS Advanced JDBC Wrapper version used
validations:
required: true
- type: input
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
index baf1b7ae1..1d10e6fc8 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.yml
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -48,7 +48,7 @@ body:
- type: input
id: driver-version
attributes:
- label: The AWS Advanced JDBC Driver version used
+ label: The AWS Advanced JDBC Wrapper version used
validations:
required: true
diff --git a/.github/workflows/release_draft.yml b/.github/workflows/release_draft.yml
index 8d135d643..2cdc478fd 100644
--- a/.github/workflows/release_draft.yml
+++ b/.github/workflows/release_draft.yml
@@ -58,7 +58,7 @@ jobs:
uses: ncipollo/release-action@v1
with:
draft: true
- name: "AWS Advanced JDBC Driver - v${{ env.RELEASE_VERSION }}"
+ name: "AWS Advanced JDBC Wrapper - v${{ env.RELEASE_VERSION }}"
bodyFile: RELEASE_DETAILS.md
artifacts: ./wrapper/build/libs/*
token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a975d08fd..2596439f7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -252,7 +252,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
### :bug: Fixed
- Connection identification and tracking in the host list provider (PR #943)[https://github.com/aws/aws-advanced-jdbc-wrapper/pull/943].
-- Green node endpoint replacement, allowing the AWS JDBC Driver to detect and connect to green nodes after Blue/Green switchover (PR# 948)(https://github.com/aws/aws-advanced-jdbc-wrapper/pull/948). Addresses [issue #678](https://github.com/aws/aws-advanced-jdbc-wrapper/issues/678).
+- Green node endpoint replacement, allowing the AWS Advanced JDBC Wrapper to detect and connect to green nodes after Blue/Green switchover (PR# 948)(https://github.com/aws/aws-advanced-jdbc-wrapper/pull/948). Addresses [issue #678](https://github.com/aws/aws-advanced-jdbc-wrapper/issues/678).
- MariaDB Pool Datasource support. Addresses [issue #957](https://github.com/aws/aws-advanced-jdbc-wrapper/issues/957).
### :crab: Changed
@@ -262,7 +262,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [2.3.5] - 2024-03-14
### :magic_wand: Added
-- Sample code configuring the AWS JDBC Driver with DBCP ([PR #930](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/930)).
+- Sample code configuring the AWS Advanced JDBC Wrapper with DBCP ([PR #930](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/930)).
### :crab: Changed
- Fix issue with deadlock while using prepared transactions and PostgreSQL Explicit Locking ([PR #918](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/918)).
@@ -293,7 +293,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
### :magic_wand: Added
- Documentation:
- [Read Write Splitting Plugin Limitations with Spring Boot/Framework](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md#limitations-when-using-spring-bootframework).
- - AWS Profile configuration parameter. See [README](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/README.md#properties), [UsingTheJDBCDriver](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters), and [AwsCredentialsConfiguration](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/custom-configuration/AwsCredentialsConfiguration.md).
+ - AWS Profile configuration parameter. See [README](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/README.md#properties), [UsingTheJDBCDriver](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters), and [AwsCredentialsConfiguration](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/custom-configuration/AwsCredentialsConfiguration.md).
- Example code for ReadWriteSplitting Plugin ([PR #765](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/765)).
- Enabling AWS Profile for IAM and AWS Secrets Manager authentication plugins ([PR #786](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/786)).
@@ -389,7 +389,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- Close underlying connections in the Read Write Splitting Plugin after switching to read-write or read-only depending on whether internal connection pooling is used ([PR #583](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/583)).
- Sort plugins by default to prevent plugin misconfiguration. This can be disabled by setting the property `autoSortWrapperPluginOrder` to false ([PR #542](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/542)).
- Documentation:
- - Clarified AWS JDBC Driver limitations with Blue/Green deployments. See [Known Limitations](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/KnownLimitations.md#amazon-rds-bluegreen-deployments).
+ - Clarified AWS Advanced JDBC Wrapper limitations with Blue/Green deployments. See [Known Limitations](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/KnownLimitations.md#amazon-rds-bluegreen-deployments).
- Updated and reworded main [README.md](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/README.md) page.
## [2.2.3] - 2023-07-28
@@ -404,10 +404,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [2.2.2] - 2023-07-05
### :magic_wand: Added
-- Official support for Amazon Aurora with MySQL compatibility. The AWS JDBC Driver has been validated to support [MySQL JDBC Driver](https://github.com/mysql/mysql-connector-j) and [MariaDB JDBC Driver](https://github.com/mariadb-corporation/mariadb-connector-j).
+- Official support for Amazon Aurora with MySQL compatibility. The AWS Advanced JDBC Wrapper has been validated to support [MySQL JDBC Driver](https://github.com/mysql/mysql-connector-j) and [MariaDB JDBC Driver](https://github.com/mariadb-corporation/mariadb-connector-j).
- Documentation:
- Maintenance and release policy ([PR #442](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/442) and [PR #507](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/507)).
- - Migration guide for moving from the AWS JDBC Driver for MySQL to the AWS JDBC Driver ([PR #510](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/510)).
+ - Migration guide for moving from the AWS Advanced JDBC Wrapper for MySQL to the AWS Advanced JDBC Wrapper ([PR #510](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/510)).
### :crab: Changed
- Improved integration test suite performance by creating required test database clusters in advance ([PR #411](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/411)).
@@ -426,7 +426,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- [Target driver dialects](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/TargetDriverDialects.md) ([PR #452](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/452)).
- Elastic Load Balancer URL support ([PR #476](https://github.com/aws/aws-advanced-jdbc-wrapper/pull/476)).
- Documentation:
- - Using the Driver with plain RDS Databases. See [Using the Driver](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#using-the-aws-jdbc-driver-with-plain-rds-databases).
+ - Using the Driver with plain RDS Databases. See [Using the Driver](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#using-the-aws-advanced-jdbc-wrapper-with-plain-rds-databases).
- Internal connection pool behaviour only verifying password on initial connection. See [Using the Read Write Splitting Plugin Internal Connection Pooling document](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md#internal-connection-pooling) and [code example](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/examples/AWSDriverExample/src/main/java/software/amazon/InternalConnectionPoolPasswordWarning.java).
- Link performance test in table of contents. See [Documentation Table of Contents](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/Documentation.md).
- Cluster URLs are not internally pooled. See [Using Read Write Splitting Plugin Internal Connection Pooling](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md#internal-connection-pooling).
diff --git a/README.md b/README.md
index a4fea1549..2cff94a62 100644
--- a/README.md
+++ b/README.md
@@ -6,13 +6,13 @@
The **Amazon Web Services (AWS) JDBC Driver** has been redesigned as an advanced JDBC wrapper.
-The wrapper is complementary to an existing JDBC driver and aims to extend the functionality of the driver to enable applications to take full advantage of the features of clustered databases such as Amazon Aurora. In other words, the AWS JDBC Driver does not connect directly to any database, but enables support of AWS and Aurora functionalities on top of an underlying JDBC driver of the user's choice. This approach enables service-specific enhancements, without requiring users to change their workflow and existing JDBC driver tooling.
+The wrapper is complementary to an existing JDBC driver and aims to extend the functionality of the driver to enable applications to take full advantage of the features of clustered databases such as Amazon Aurora. In other words, the AWS Advanced JDBC Wrapper does not connect directly to any database, but enables support of AWS and Aurora functionalities on top of an underlying JDBC driver of the user's choice. This approach enables service-specific enhancements, without requiring users to change their workflow and existing JDBC driver tooling.
-The AWS JDBC Driver is targeted to work with **any** existing JDBC driver. Currently, the AWS JDBC Driver has been validated to support the [PostgreSQL JDBC Driver](https://github.com/pgjdbc/pgjdbc), [MySQL JDBC Driver](https://github.com/mysql/mysql-connector-j), and [MariaDB JDBC Driver](https://github.com/mariadb-corporation/mariadb-connector-j).
+The AWS Advanced JDBC Wrapper is targeted to work with **any** existing JDBC driver. Currently, the AWS Advanced JDBC Wrapper has been validated to support the [PostgreSQL JDBC Driver](https://github.com/pgjdbc/pgjdbc), [MySQL JDBC Driver](https://github.com/mysql/mysql-connector-j), and [MariaDB JDBC Driver](https://github.com/mariadb-corporation/mariadb-connector-j).
-The AWS JDBC Driver provides modular functionality through feature plugins, with each plugin being relevant to specific database services based on their architecture and capabilities. For example, [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) authentication is supported across multiple services, while [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) applies to services that support password-based authentication. The fast failover plugin provides reduced recovery time during failover for Aurora PostgreSQL and Aurora MySQL clusters.
+The AWS Advanced JDBC Wrapper provides modular functionality through feature plugins, with each plugin being relevant to specific database services based on their architecture and capabilities. For example, [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) authentication is supported across multiple services, while [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) applies to services that support password-based authentication. The fast failover plugin provides reduced recovery time during failover for Aurora PostgreSQL and Aurora MySQL clusters.
-## Benefits of the AWS JDBC Driver for All Aurora and RDS Database Services
+## Benefits of the AWS Advanced JDBC Wrapper for All Aurora and RDS Database Services
### Seamless AWS Authentication Service Integration
@@ -26,7 +26,7 @@ The wrapper design allows developers to continue using their preferred JDBC driv
The plugin-based design ensures applications only load the functionality they need, reducing dependencies and overhead.
-## Benefits of the AWS JDBC Driver for Aurora PostgreSQL, Aurora MySQL, and RDS
+## Benefits of the AWS Advanced JDBC Wrapper for Aurora PostgreSQL, Aurora MySQL, and RDS
### Faster Failover and Reduced Downtime
@@ -36,17 +36,17 @@ For Aurora PostgreSQL, Aurora MySQL, and RDS Multi-AZ DB clusters, the driver si
The driver includes Enhanced Failure Monitoring (EFM) that proactively monitors database node health, detecting failures faster than traditional timeout-based approaches. This allows applications to respond to issues before they impact end users.
-## Using the AWS JDBC Driver with...
+## Using the AWS Advanced JDBC Wrapper with...
### Amazon Aurora PostgreSQL and Aurora MySQL
-The AWS JDBC Driver provides fast failover capabilities for Aurora PostgreSQL and Aurora MySQL clusters, significantly reducing connection recovery time during database failovers.
+The AWS Advanced JDBC Wrapper provides fast failover capabilities for Aurora PostgreSQL and Aurora MySQL clusters, significantly reducing connection recovery time during database failovers.
Visit [this page](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailover2Plugin.md) for more details.
### Amazon RDS Multi-AZ DB Clusters
-The [AWS RDS Multi-AZ DB Clusters](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html) are capable of switching over the current writer node to another node in the cluster within approximately 1 second or less, in case of minor engine version upgrade or OS maintenance operations. The AWS JDBC Driver has been optimized for such fast failover when working with AWS RDS Multi-AZ DB Clusters.
+The [AWS RDS Multi-AZ DB Clusters](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html) are capable of switching over the current writer node to another node in the cluster within approximately 1 second or less, in case of minor engine version upgrade or OS maintenance operations. The AWS Advanced JDBC Wrapper has been optimized for such fast failover when working with AWS RDS Multi-AZ DB Clusters.
With the `failover` plugin, the downtime during certain DB cluster operations, such as engine minor version upgrades, can be reduced to one second or even less with finely tuned parameters. It supports both MySQL and PostgreSQL clusters.
@@ -54,18 +54,18 @@ Visit [this page](./docs/using-the-jdbc-driver/SupportForRDSMultiAzDBCluster.md)
### Plain Amazon RDS databases
-The AWS JDBC Driver also works with RDS provided databases that are not Aurora.
+The AWS Advanced JDBC Wrapper also works with RDS provided databases that are not Aurora.
### RDS Proxy
-There are limitations with the AWS JDBC Driver and RDS Proxy. This is currently intended, by design, since the main reason is that RDS Proxy transparently re-routes requests to a single database instance. RDS Proxy decides which database instance is used based on many criteria (on a per-request basis). Due to this, functionality like Failover, Enhanced Host Monitoring, and Read/Write Splitting is not compatible since the driver relies on cluster topology and RDS Proxy handles this automatically.
+There are limitations with the AWS Advanced JDBC Wrapper and RDS Proxy. This is currently intended, by design, since the main reason is that RDS Proxy transparently re-routes requests to a single database instance. RDS Proxy decides which database instance is used based on many criteria (on a per-request basis). Due to this, functionality like Failover, Enhanced Host Monitoring, and Read/Write Splitting is not compatible since the driver relies on cluster topology and RDS Proxy handles this automatically.
However, the driver can still be used to handle authentication workflows. For more information regarding compatibility, please refer to the specific plugin documentation.
-Visit [this page](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#using-the-aws-jdbc-driver-with-plain-rds-databases) for more details.
+Visit [this page](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#using-the-aws-advanced-jdbc-wrapper-with-plain-rds-databases) for more details.
## Getting Started
-For more information on how to download the AWS JDBC Driver, minimum requirements to use it,
+For more information on how to download the AWS Advanced JDBC Wrapper, minimum requirements to use it,
and how to integrate it within your project and with your JDBC driver of choice, please visit the
[Getting Started page](./docs/GettingStarted.md).
@@ -88,60 +88,60 @@ You can find our driver by searching in The Central Repository with GroupId and
## Properties
-| Parameter | Reference | Documentation Link |
-|----------------------------------------|:--------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------:|
-| `wrapperDialect` | `DialectManager.DIALECT` | [Dialects](./docs/using-the-jdbc-driver/DatabaseDialects.md), and whether you should include it. |
-| `wrapperPlugins` | `PropertyDefinition.PLUGINS` | |
-| `clusterId` | `RdsHostListProvider.CLUSTER_ID` | [AWS Advanced JDBC Driver Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) |
-| `clusterInstanceHostPattern` | `RdsHostListProvider.CLUSTER_INSTANCE_HOST_PATTERN` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
-| `secretsManagerSecretId` | `AwsSecretsManagerConnectionPlugin.SECRET_ID_PROPERTY` | [SecretsManagerPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheAwsSecretsManagerPlugin.md) |
-| `secretsManagerRegion` | `AwsSecretsManagerConnectionPlugin.REGION_PROPERTY` | [SecretsManagerPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheAwsSecretsManagerPlugin.md) |
-| `wrapperDriverName` | `DriverMetaDataConnectionPlugin.WRAPPER_DRIVER_NAME` | [DriverMetaDataConnectionPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheDriverMetadataConnectionPlugin.md) |
-| `failoverMode` | `FailoverConnectionPlugin.FAILOVER_MODE` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
-| `enableClusterAwareFailover` | `FailoverConnectionPlugin.ENABLE_CLUSTER_AWARE_FAILOVER` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
-| `failoverClusterTopologyRefreshRateMs` | `FailoverConnectionPlugin.FAILOVER_CLUSTER_TOPOLOGY_REFRESH_RATE_MS` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
-| `failoverReaderConnectTimeoutMs` | `FailoverConnectionPlugin.FAILOVER_READER_CONNECT_TIMEOUT_MS` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
-| `failoverTimeoutMs` | `FailoverConnectionPlugin.FAILOVER_TIMEOUT_MS` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
-| `failoverWriterReconnectIntervalMs` | `FailoverConnectionPlugin.FAILOVER_WRITER_RECONNECT_INTERVAL_MS` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
-| `clusterTopologyHighRefreshRateMs` | `MonitoringRdsHostListProvider.CLUSTER_TOPOLOGY_HIGH_REFRESH_RATE_MS` | [FailoverPlugin v2](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailover2Plugin.md) |
-| `failoverReaderHostSelectorStrategy` | `software.amazon.jdbc.plugin.failover2.`
`FailoverConnectionPlugin.FAILOVER_READER_HOST_SELECTOR_STRATEGY` | [FailoverPlugin v2](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailover2Plugin.md) |
-| `failureDetectionCount` | `HostMonitoringConnectionPlugin.FAILURE_DETECTION_COUNT` | [HostMonitoringPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) |
-| `failureDetectionEnabled` | `HostMonitoringConnectionPlugin.FAILURE_DETECTION_ENABLED` | [HostMonitoringPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) |
-| `failureDetectionInterval` | `HostMonitoringConnectionPlugin.FAILURE_DETECTION_INTERVAL` | [HostMonitoringPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) |
-| `failureDetectionTime` | `HostMonitoringConnectionPlugin.FAILURE_DETECTION_TIME` | [HostMonitoringPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) |
-| `monitorDisposalTime` | `HostMonitorServiceImpl.MONITOR_DISPOSAL_TIME_MS` | [HostMonitoringPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) |
-| `iamDefaultPort` | `IamAuthConnectionPlugin.IAM_DEFAULT_PORT` | [IamAuthenticationPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) |
-| `iamHost` | `IamAuthConnectionPlugin.IAM_HOST` | [IamAuthenticationPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) |
-| `iamRegion` | `IamAuthConnectionPlugin.IAM_REGION` | [IamAuthenticationPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) |
-| `iamExpiration` | `IamAuthConnectionPlugin.IAM_EXPIRATION` | [IamAuthenticationPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) |
-| `awsProfile` | `PropertyDefinition.AWS_PROFILE` | [AWS Advanced JDBC Driver Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) |
-| `wrapperLogUnclosedConnections` | `PropertyDefinition.LOG_UNCLOSED_CONNECTIONS` | [AWS Advanced JDBC Driver Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) |
-| `wrapperLoggerLevel` | `PropertyDefinition.LOGGER_LEVEL` | [Logging](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#logging) |
-| `wrapperProfileName` | `PropertyDefinition.PROFILE_NAME` | [Configuration Profiles](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#configuration-profiles) |
-| `autoSortWrapperPluginOrder` | `PropertyDefinition.AUTO_SORT_PLUGIN_ORDER` | [Plugins](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#plugins) |
-| `loginTimeout` | `PropertyDefinition.LOGIN_TIMEOUT` | [AWS Advanced JDBC Driver Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) |
-| `connectTimeout` | `PropertyDefinition.CONNECT_TIMEOUT` | [AWS Advanced JDBC Driver Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) |
-| `socketTimeout` | `PropertyDefinition.SOCKET_TIMEOUT` | [AWS Advanced JDBC Driver Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) |
-| `tcpKeepAlive` | `PropertyDefinition.TCP_KEEP_ALIVE` | [AWS Advanced JDBC Driver Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) |
+| Parameter | Reference | Documentation Link |
+|----------------------------------------|:--------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------:|
+| `wrapperDialect` | `DialectManager.DIALECT` | [Dialects](./docs/using-the-jdbc-driver/DatabaseDialects.md), and whether you should include it. |
+| `wrapperPlugins` | `PropertyDefinition.PLUGINS` | |
+| `clusterId` | `RdsHostListProvider.CLUSTER_ID` | [AWS Advanced JDBC Wrapper Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) |
+| `clusterInstanceHostPattern` | `RdsHostListProvider.CLUSTER_INSTANCE_HOST_PATTERN` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
+| `secretsManagerSecretId` | `AwsSecretsManagerConnectionPlugin.SECRET_ID_PROPERTY` | [SecretsManagerPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheAwsSecretsManagerPlugin.md) |
+| `secretsManagerRegion` | `AwsSecretsManagerConnectionPlugin.REGION_PROPERTY` | [SecretsManagerPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheAwsSecretsManagerPlugin.md) |
+| `wrapperDriverName` | `DriverMetaDataConnectionPlugin.WRAPPER_DRIVER_NAME` | [DriverMetaDataConnectionPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheDriverMetadataConnectionPlugin.md) |
+| `failoverMode` | `FailoverConnectionPlugin.FAILOVER_MODE` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
+| `enableClusterAwareFailover` | `FailoverConnectionPlugin.ENABLE_CLUSTER_AWARE_FAILOVER` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
+| `failoverClusterTopologyRefreshRateMs` | `FailoverConnectionPlugin.FAILOVER_CLUSTER_TOPOLOGY_REFRESH_RATE_MS` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
+| `failoverReaderConnectTimeoutMs` | `FailoverConnectionPlugin.FAILOVER_READER_CONNECT_TIMEOUT_MS` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
+| `failoverTimeoutMs` | `FailoverConnectionPlugin.FAILOVER_TIMEOUT_MS` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
+| `failoverWriterReconnectIntervalMs` | `FailoverConnectionPlugin.FAILOVER_WRITER_RECONNECT_INTERVAL_MS` | [FailoverPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) |
+| `clusterTopologyHighRefreshRateMs` | `MonitoringRdsHostListProvider.CLUSTER_TOPOLOGY_HIGH_REFRESH_RATE_MS` | [FailoverPlugin v2](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailover2Plugin.md) |
+| `failoverReaderHostSelectorStrategy` | `software.amazon.jdbc.plugin.failover2.`
`FailoverConnectionPlugin.FAILOVER_READER_HOST_SELECTOR_STRATEGY` | [FailoverPlugin v2](./docs/using-the-jdbc-driver/using-plugins/UsingTheFailover2Plugin.md) |
+| `failureDetectionCount` | `HostMonitoringConnectionPlugin.FAILURE_DETECTION_COUNT` | [HostMonitoringPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) |
+| `failureDetectionEnabled` | `HostMonitoringConnectionPlugin.FAILURE_DETECTION_ENABLED` | [HostMonitoringPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) |
+| `failureDetectionInterval` | `HostMonitoringConnectionPlugin.FAILURE_DETECTION_INTERVAL` | [HostMonitoringPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) |
+| `failureDetectionTime` | `HostMonitoringConnectionPlugin.FAILURE_DETECTION_TIME` | [HostMonitoringPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) |
+| `monitorDisposalTime` | `HostMonitorServiceImpl.MONITOR_DISPOSAL_TIME_MS` | [HostMonitoringPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) |
+| `iamDefaultPort` | `IamAuthConnectionPlugin.IAM_DEFAULT_PORT` | [IamAuthenticationPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) |
+| `iamHost` | `IamAuthConnectionPlugin.IAM_HOST` | [IamAuthenticationPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) |
+| `iamRegion` | `IamAuthConnectionPlugin.IAM_REGION` | [IamAuthenticationPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) |
+| `iamExpiration` | `IamAuthConnectionPlugin.IAM_EXPIRATION` | [IamAuthenticationPlugin](./docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) |
+| `awsProfile` | `PropertyDefinition.AWS_PROFILE` | [AWS Advanced JDBC Wrapper Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) |
+| `wrapperLogUnclosedConnections` | `PropertyDefinition.LOG_UNCLOSED_CONNECTIONS` | [AWS Advanced JDBC Wrapper Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) |
+| `wrapperLoggerLevel` | `PropertyDefinition.LOGGER_LEVEL` | [Logging](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#logging) |
+| `wrapperProfileName` | `PropertyDefinition.PROFILE_NAME` | [Configuration Profiles](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#configuration-profiles) |
+| `autoSortWrapperPluginOrder` | `PropertyDefinition.AUTO_SORT_PLUGIN_ORDER` | [Plugins](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#plugins) |
+| `loginTimeout` | `PropertyDefinition.LOGIN_TIMEOUT` | [AWS Advanced JDBC Wrapper Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) |
+| `connectTimeout` | `PropertyDefinition.CONNECT_TIMEOUT` | [AWS Advanced JDBC Wrapper Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) |
+| `socketTimeout` | `PropertyDefinition.SOCKET_TIMEOUT` | [AWS Advanced JDBC Wrapper Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) |
+| `tcpKeepAlive` | `PropertyDefinition.TCP_KEEP_ALIVE` | [AWS Advanced JDBC Wrapper Parameters](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) |
**A Secret ARN** has the following format: `arn:aws:secretsmanager:::secret:SecretName-6RandomCharacters`
## Logging
-Enabling logging is a very useful mechanism for troubleshooting any issue one might potentially experience while using the AWS JDBC Driver.
+Enabling logging is a very useful mechanism for troubleshooting any issue one might potentially experience while using the AWS Advanced JDBC Wrapper.
In order to learn how to enable and configure logging, check out the [Logging](./docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#logging) section.
## Documentation
-Technical documentation regarding the functionality of the AWS JDBC Driver will be maintained in this GitHub repository. Since the AWS JDBC Driver requires an underlying JDBC driver, please refer to the individual driver's documentation for driver-specific information.
+Technical documentation regarding the functionality of the AWS Advanced JDBC Wrapper will be maintained in this GitHub repository. Since the AWS Advanced JDBC Wrapper requires an underlying JDBC driver, please refer to the individual driver's documentation for driver-specific information.
-### Using the AWS JDBC Driver
-To find all the documentation and concrete examples on how to use the AWS JDBC Driver, please refer to the [AWS JDBC Driver Documentation](./docs/Documentation.md) page.
+### Using the AWS Advanced JDBC Wrapper
+To find all the documentation and concrete examples on how to use the AWS Advanced JDBC Wrapper, please refer to the [AWS Advanced JDBC Wrapper Documentation](./docs/Documentation.md) page.
### Known Limitations
#### Amazon RDS Blue/Green Deployments
-Support for Blue/Green deployments using the AWS Advanced JDBC Driver requires specific metadata tables. The following service versions provide support for Blue/Green Deployments:
+Support for Blue/Green deployments using the AWS Advanced JDBC Wrapper requires specific metadata tables. The following service versions provide support for Blue/Green Deployments:
- Supported RDS PostgreSQL Versions: `rds_tools v1.7 (17.1, 16.5, 15.9, 14.14, 13.17, 12.21)` and above.
- Supported Aurora PostgreSQL Versions: Engine Release `17.5, 16.9, 15.13, 14.18, 13.21` and above.
@@ -157,28 +157,28 @@ This driver currently does not support `planned failover` or `switchover` of Ama
| Description | Examples |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
-| Using the AWS JDBC Driver to get a simple connection | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/PgConnectionSample.java) |
-| Using the AWS JDBC Driver with failover handling | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/PgFailoverSample.java) |
+| Using the AWS Advanced JDBC Wrapper to get a simple connection | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/PgConnectionSample.java) |
+| Using the AWS Advanced JDBC Wrapper with failover handling | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/PgFailoverSample.java) |
| Using the AWS IAM Authentication Plugin with `DriverManager` | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/AwsIamAuthenticationPostgresqlExample.java)
[MySQL](examples/AWSDriverExample/src/main/java/software/amazon/AwsIamAuthenticationMysqlExample.java)
[MariaDB](examples/AWSDriverExample/src/main/java/software/amazon/AwsIamAuthenticationMariadbExample.java) |
| Using the AWS IAM Authentication Plugin with `DataSource` | [PostgreSQL and MySQL](examples/AWSDriverExample/src/main/java/software/amazon/AwsIamAuthenticationDatasourceExample.java) |
| Using the AWS Secrets Manager Plugin with `DriverManager` | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/AwsSecretsManagerConnectionPluginPostgresqlExample.java)
[MySQL](examples/AWSDriverExample/src/main/java/software/amazon/AwsSecretsManagerConnectionPluginMySQLExample.java) |
| Using the AWS Credentials Manager to configure an alternative AWS credentials provider. | [PostgreSQL and MySQL](examples/AWSDriverExample/src/main/java/software/amazon/AwsCredentialsManagerExample.java) |
-| Using the AWS JDBC Driver with `AWSWrapperDatasource` | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/DatasourceExample.java) |
+| Using the AWS Advanced JDBC Wrapper with `AWSWrapperDatasource` | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/DatasourceExample.java) |
| Using the Driver Metadata Plugin to override driver name, this plugin [enables specific database features that may only be available to target drivers](https://github.com/aws/aws-advanced-jdbc-wrapper/issues/370) | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/DriverMetaDataConnectionPluginExample.java) |
| Using the Read/Write Splitting Plugin with `DriverManager` | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/ReadWriteSplittingPostgresExample.java)
[MySQL](examples/AWSDriverExample/src/main/java/software/amazon/ReadWriteSplittingMySQLExample.java) |
| Using the Read/Write Splitting Plugin with Spring | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/ReadWriteSplittingSpringJdbcTemplatePostgresExample.java)
[MySQL](examples/AWSDriverExample/src/main/java/software/amazon/ReadWriteSplittingSpringJdbcTemplateMySQLExample.java) |
| Using HikariCP with the `AWSWrapperDatasource` | [PostgreSQL](examples/HikariExample/src/main/java/software/amazon/HikariExample.java) |
| Using HikariCP with the `AWSWrapperDatasource` with failover handling | [PostgreSQL](examples/HikariExample/src/main/java/software/amazon/HikariFailoverExample.java) |
-| Using Spring and HikariCP with the AWS JDBC Driver | [PostgreSQL](examples/SpringBootHikariExample/README.md) |
-| Using Spring and HikariCP with the AWS JDBC Driver and failover handling | [PostgreSQL](examples/SpringTxFailoverExample/README.md) |
-| Using Spring and Hibernate with the AWS JDBC Driver | [PostgreSQL](examples/SpringHibernateExample/README.md) |
-| Using Spring and Wildfly with the AWS JDBC Driver | [PostgreSQL](examples/SpringWildflyExample/README.md) |
-| Using Vert.x and c3p0 with the AWS JDBC Driver | [PostgreSQL](examples/VertxExample/README.md) |
-| Using the AWS JDBC Driver with Telemetry and using the AWS Distro for OpenTelemetry Collector | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/TelemetryMetricsOTLPExample.java) |
-| Using the AWS JDBC Driver with Telemetry and using the AWS X-Ray Daemon | [PostgreSQL](./examples/AWSDriverExample/src/main/java/software/amazon/TelemetryTracingXRayExample.java) |
+| Using Spring and HikariCP with the AWS Advanced JDBC Wrapper | [PostgreSQL](examples/SpringBootHikariExample/README.md) |
+| Using Spring and HikariCP with the AWS Advanced JDBC Wrapper and failover handling | [PostgreSQL](examples/SpringTxFailoverExample/README.md) |
+| Using Spring and Hibernate with the AWS Advanced JDBC Wrapper | [PostgreSQL](examples/SpringHibernateExample/README.md) |
+| Using Spring and Wildfly with the AWS Advanced JDBC Wrapper | [PostgreSQL](examples/SpringWildflyExample/README.md) |
+| Using Vert.x and c3p0 with the AWS Advanced JDBC Wrapper | [PostgreSQL](examples/VertxExample/README.md) |
+| Using the AWS Advanced JDBC Wrapper with Telemetry and using the AWS Distro for OpenTelemetry Collector | [PostgreSQL](examples/AWSDriverExample/src/main/java/software/amazon/TelemetryMetricsOTLPExample.java) |
+| Using the AWS Advanced JDBC Wrapper with Telemetry and using the AWS X-Ray Daemon | [PostgreSQL](./examples/AWSDriverExample/src/main/java/software/amazon/TelemetryTracingXRayExample.java) |
## Getting Help and Opening Issues
-If you encounter a bug with the AWS JDBC Driver, we would like to hear about it.
+If you encounter a bug with the AWS Advanced JDBC Wrapper, we would like to hear about it.
Please search the [existing issues](https://github.com/aws/aws-advanced-jdbc-wrapper/issues) to see if others are also experiencing the issue before reporting the problem in a new issue. GitHub issues are intended for bug reports and feature requests.
When opening a new issue, please fill in all required fields in the issue template to help expedite the investigation process.
diff --git a/docs/Documentation.md b/docs/Documentation.md
index 07fe86a86..3e68db2a1 100644
--- a/docs/Documentation.md
+++ b/docs/Documentation.md
@@ -1,11 +1,11 @@
# Documentation
- [Getting Started](./GettingStarted.md)
-- [Using the AWS JDBC Driver](./using-the-jdbc-driver/UsingTheJdbcDriver.md)
+- [Using the AWS Advanced JDBC Wrapper](./using-the-jdbc-driver/UsingTheJdbcDriver.md)
- [Data Sources](./using-the-jdbc-driver/DataSource.md)
- [Logging](./using-the-jdbc-driver/UsingTheJdbcDriver.md#logging)
- [Telemetry](./using-the-jdbc-driver/Telemetry.md)
- - [JDBC Wrapper Parameters](./using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters)
+ - [JDBC Wrapper Parameters](./using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters)
- [Database Dialects](./using-the-jdbc-driver/DatabaseDialects.md)
- [Target Driver Dialects](./using-the-jdbc-driver/TargetDriverDialects.md)
- [Plugins](./using-the-jdbc-driver/UsingTheJdbcDriver.md#plugins)
@@ -24,7 +24,7 @@
- [Host Availability Strategy](./using-the-jdbc-driver/HostAvailabilityStrategy.md)
- [Development Guide](./development-guide/DevelopmentGuide.md)
- [Setup](./development-guide/DevelopmentGuide.md#setup)
- - [Building the AWS JDBC Driver](./development-guide/DevelopmentGuide.md#building-the-aws-advanced-jdbc-driver)
+ - [Building the AWS Advanced JDBC Wrapper](./development-guide/DevelopmentGuide.md#building-the-aws-advanced-jdbc-wrapper)
- [Testing Overview](./development-guide/DevelopmentGuide.md#testing-overview)
- [Performance Tests](./development-guide/DevelopmentGuide.md#performance-tests)
- [Running the Tests](./development-guide/DevelopmentGuide.md#running-the-tests)
diff --git a/docs/GettingStarted.md b/docs/GettingStarted.md
index 623360eb7..ea8d85c97 100644
--- a/docs/GettingStarted.md
+++ b/docs/GettingStarted.md
@@ -2,17 +2,17 @@
## Minimum Requirements
-Before using the AWS Advanced JDBC Driver, you must install:
+Before using the AWS Advanced JDBC Wrapper, you must install:
- Amazon Corretto 8+ or Java 8+.
-- The AWS Advanced JDBC Driver.
+- The AWS Advanced JDBC Wrapper.
- Your choice of underlying JDBC driver.
- To use the wrapper with Aurora with PostgreSQL compatibility, install the [PostgreSQL JDBC Driver](https://github.com/pgjdbc/pgjdbc).
- To use the wrapper with Aurora with MySQL compatibility, install the [MySQL JDBC Driver](https://github.com/mysql/mysql-connector-j) or [MariaDB JDBC Driver](https://github.com/mariadb-corporation/mariadb-connector-j).
-If you are using the AWS JDBC Driver as part of a Gradle project, include the wrapper and underlying driver as dependencies. For example, to include the AWS JDBC Driver and the PostgreSQL JDBC Driver as dependencies in a Gradle project, update the ```build.gradle``` file as follows:
+If you are using the AWS Advanced JDBC Wrapper as part of a Gradle project, include the wrapper and underlying driver as dependencies. For example, to include the AWS Advanced JDBC Wrapper and the PostgreSQL JDBC Driver as dependencies in a Gradle project, update the ```build.gradle``` file as follows:
-> **Note:** Depending on which features of the AWS JDBC Driver you use, you may have additional package requirements. Please refer to this [table](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#list-of-available-plugins) for more information.
+> **Note:** Depending on which features of the AWS Advanced JDBC Wrapper you use, you may have additional package requirements. Please refer to this [table](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#list-of-available-plugins) for more information.
```gradle
dependencies {
@@ -21,11 +21,11 @@ dependencies {
}
```
-## Obtaining the AWS JDBC Driver
+## Obtaining the AWS Advanced JDBC Wrapper
### Direct Download and Installation
-You can use pre-compiled packages that can be downloaded directly from [GitHub Releases](https://github.com/aws/aws-advanced-jdbc-wrapper/releases) or [Maven Central](https://central.sonatype.com/artifact/software.amazon.jdbc/aws-advanced-jdbc-wrapper) to install the AWS JDBC Driver. After downloading the AWS JDBC Driver, install it by including the .jar file in the application's CLASSPATH.
+You can use pre-compiled packages that can be downloaded directly from [GitHub Releases](https://github.com/aws/aws-advanced-jdbc-wrapper/releases) or [Maven Central](https://central.sonatype.com/artifact/software.amazon.jdbc/aws-advanced-jdbc-wrapper) to install the AWS Advanced JDBC Wrapper. After downloading the AWS Advanced JDBC Wrapper, install it by including the .jar file in the application's CLASSPATH.
For example, the following command uses wget to download the wrapper:
@@ -33,17 +33,17 @@ For example, the following command uses wget to download the wrapper:
wget https://github.com/aws/aws-advanced-jdbc-wrapper/releases/download/2.6.6/aws-advanced-jdbc-wrapper-2.6.6.jar
```
-Then, the following command adds the AWS JDBC Driver to the CLASSPATH:
+Then, the following command adds the AWS Advanced JDBC Wrapper to the CLASSPATH:
```bash
export CLASSPATH=$CLASSPATH:/home/userx/libs/aws-advanced-jdbc-wrapper-2.6.6.jar
```
-> **Note**: There is also a JAR suffixed with `-bundle-federated-auth`. It is an Uber JAR that contains the AWS JDBC Driver as well as all the dependencies needed to run the Federated Authentication Plugin. **Our general recommendation is to use the `aws-advanced-jdbc-wrapper-2.6.6.jar` for use cases unrelated to complex Federated Authentication environments**. To learn more, please check out the [Federated Authentication Plugin](./using-the-jdbc-driver/using-plugins/UsingTheFederatedAuthPlugin.md#bundled-uber-jar).
+> **Note**: There is also a JAR suffixed with `-bundle-federated-auth`. It is an Uber JAR that contains the AWS Advanced JDBC Wrapper as well as all the dependencies needed to run the Federated Authentication Plugin. **Our general recommendation is to use the `aws-advanced-jdbc-wrapper-2.6.6.jar` for use cases unrelated to complex Federated Authentication environments**. To learn more, please check out the [Federated Authentication Plugin](./using-the-jdbc-driver/using-plugins/UsingTheFederatedAuthPlugin.md#bundled-uber-jar).
### As a Maven Dependency
-You can use [Maven's dependency management](https://central.sonatype.com/artifact/software.amazon.jdbc/aws-advanced-jdbc-wrapper) to obtain the AWS JDBC Driver by adding the following configuration to the application's Project Object Model (POM) file:
+You can use [Maven's dependency management](https://central.sonatype.com/artifact/software.amazon.jdbc/aws-advanced-jdbc-wrapper) to obtain the AWS Advanced JDBC Wrapper by adding the following configuration to the application's Project Object Model (POM) file:
```xml
@@ -57,7 +57,7 @@ You can use [Maven's dependency management](https://central.sonatype.com/artifac
### As a Gradle Dependency
-You can use [Gradle's dependency management](https://central.sonatype.com/artifact/software.amazon.jdbc/aws-advanced-jdbc-wrapper) to obtain the AWS JDBC Driver by adding the following configuration to the application's ```build.gradle``` file:
+You can use [Gradle's dependency management](https://central.sonatype.com/artifact/software.amazon.jdbc/aws-advanced-jdbc-wrapper) to obtain the AWS Advanced JDBC Wrapper by adding the following configuration to the application's ```build.gradle``` file:
```gradle
dependencies {
@@ -73,6 +73,6 @@ dependencies {
}
```
-## Using the AWS JDBC Driver
+## Using the AWS Advanced JDBC Wrapper
-For more detailed information about how to use and configure the AWS JDBC Driver, please visit [this page](using-the-jdbc-driver/UsingTheJdbcDriver.md).
+For more detailed information about how to use and configure the AWS Advanced JDBC Wrapper, please visit [this page](using-the-jdbc-driver/UsingTheJdbcDriver.md).
diff --git a/docs/development-guide/Architecture.md b/docs/development-guide/Architecture.md
index d28fc9565..d81453b2e 100644
--- a/docs/development-guide/Architecture.md
+++ b/docs/development-guide/Architecture.md
@@ -2,7 +2,7 @@

-The AWS Advanced JDBC Driver contains 5 main components:
+The AWS Advanced JDBC Wrapper contains 5 main components:
1. The wrapper classes
2. The [connection plugin manager](./PluginManager.md)
diff --git a/docs/development-guide/DevelopmentGuide.md b/docs/development-guide/DevelopmentGuide.md
index 6b3df5386..14f26ffdf 100644
--- a/docs/development-guide/DevelopmentGuide.md
+++ b/docs/development-guide/DevelopmentGuide.md
@@ -3,7 +3,7 @@
### Setup
Make sure you have Amazon Corretto 8+ or Java 8+ installed.
-Clone the AWS JDBC Driver repository:
+Clone the AWS Advanced JDBC Wrapper repository:
```bash
git clone https://github.com/aws/aws-advanced-jdbc-wrapper.git
@@ -11,12 +11,12 @@ git clone https://github.com/aws/aws-advanced-jdbc-wrapper.git
You can now make changes in the repository.
-### Building the AWS Advanced JDBC Driver
+### Building the AWS Advanced JDBC Wrapper
Navigate to project root:
```bash
cd aws-advanced-jdbc-wrapper
```
-To build the AWS Advanced JDBC Driver without running the tests:
+To build the AWS Advanced JDBC Wrapper without running the tests:
Mac:
```bash
@@ -40,11 +40,11 @@ gradlew build
## Testing Overview
-The AWS JDBC Driver uses the following tests to verify its correctness and performance on both JVM and GraalVM:
+The AWS Advanced JDBC Wrapper uses the following tests to verify its correctness and performance on both JVM and GraalVM:
| Tests | Description |
|-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Unit tests | Tests for AWS JDBC Driver correctness. |
+| Unit tests | Tests for AWS Advanced JDBC Wrapper correctness. |
| Failover integration tests | Driver-specific tests for different reader and writer failover workflows using the Failover Connection Plugin. |
| Enhanced failure monitoring integration tests | Driver-specific tests for the enhanced failure monitoring functionality using the Host Monitoring Connection Plugin. |
| AWS authentication integration tests | Driver-specific tests for AWS authentication methods with the AWS Secrets Manager Plugin or the AWS IAM Authentication Plugin. |
@@ -52,28 +52,28 @@ The AWS JDBC Driver uses the following tests to verify its correctness and perfo
### Extra Integration Tests
-The AWS JDBC Driver repository also contains additional integration tests for external tools such as HikariCP, the Spring framework or Hibernate ORM.
+The AWS Advanced JDBC Wrapper repository also contains additional integration tests for external tools such as HikariCP, the Spring framework or Hibernate ORM.
-The AWS JDBC Driver has been manually verified to work with database tools such as DBeaver.
+The AWS Advanced JDBC Wrapper has been manually verified to work with database tools such as DBeaver.
### Performance Tests
The JDBC Wrapper has 2 types of performance tests:
-- benchmarks measuring the AWS JDBC Driver's overhead when executing simple JDBC methods using the JMH microbenchmark framework
+- benchmarks measuring the AWS Advanced JDBC Wrapper's overhead when executing simple JDBC methods using the JMH microbenchmark framework
- manually-triggered performance tests measuring the failover and enhanced failure monitoring plugins' performance under different configurations
-#### AWS JDBC Driver Benchmarks
-This diagram shows the benchmarks from running UPDATE queries using the AWS JDBC Driver with pgJDBC as the target driver.
+#### AWS Advanced JDBC Wrapper Benchmarks
+This diagram shows the benchmarks from running UPDATE queries using the AWS Advanced JDBC Wrapper with pgJDBC as the target driver.
The baseline number represents running the same UPDATE queries with pgJDBC.

-This diagram shows the benchmarks from running UPDATE queries using the AWS JDBC Driver with MySQL Connector/J as the target driver.
+This diagram shows the benchmarks from running UPDATE queries using the AWS Advanced JDBC Wrapper with MySQL Connector/J as the target driver.
The baseline number represents running the same UPDATE queries with MySQL Connector/J.

-There are also specific benchmarks measuring the AWS JDBC Driver's [pipelines](Pipelines.md).
+There are also specific benchmarks measuring the AWS Advanced JDBC Wrapper's [pipelines](Pipelines.md).
These benchmarks do not make actual connections to the databases and use simple test plugins.
-The goal of these benchmarks is to measure the overhead of using the AWS JDBC Driver with multiple plugins enabled.
+The goal of these benchmarks is to measure the overhead of using the AWS Advanced JDBC Wrapper with multiple plugins enabled.



@@ -81,21 +81,21 @@ The goal of these benchmarks is to measure the overhead of using the AWS JDBC Dr
See [here](PluginPipelinePerformanceResults.md#benchmarks) for a more detailed performance breakdown.
#### Failover-specific Performance Tests
-The diagrams in this section show the AWS JDBC Driver's failure detection performance with or without the Failover Connection Plugin under different settings.
+The diagrams in this section show the AWS Advanced JDBC Wrapper's failure detection performance with or without the Failover Connection Plugin under different settings.
The performance tests share the following workflow:
-1. The AWS JDBC Driver executes an SQL query with a long execution time.
+1. The AWS Advanced JDBC Wrapper executes an SQL query with a long execution time.
2. After a network outage delay in milliseconds, the test triggers a network outage.
Varying values for the network outage delay are tested, represented on the X axis of the diagrams below.
3. Measures elapsed time between when the network outage and
- - when the AWS JDBC Driver detects the network failure if the Host Monitoring Connection Plugin is used, or
- - when the AWS JDBC Driver finishes the failover process if the Failover Connection Plugin is used.
+ - when the AWS Advanced JDBC Wrapper detects the network failure if the Host Monitoring Connection Plugin is used, or
+ - when the AWS Advanced JDBC Wrapper finishes the failover process if the Failover Connection Plugin is used.
This diagram shows the failover time with a 30-seconds socket timeout and different network outage delays.

See [here](PluginPipelinePerformanceResults.md#failover-performance-with-30-seconds-socket-timeout-configuration) for a more detailed performance breakdown.
-The following diagrams show how the AWS JDBC Driver performs under a more common failure detection setting versus a more aggressive setting.
+The following diagrams show how the AWS Advanced JDBC Wrapper performs under a more common failure detection setting versus a more aggressive setting.
Common Failure Detection Setting
@@ -127,7 +127,7 @@ See [here](PluginPipelinePerformanceResults.md#enhanced-failure-monitoring-perfo
#### Read-Write Splitting and Internal Connection Pooling Performance Tests
-The diagram in this section shows the AWS JDBC Driver's performance when using the read-write splitting plugin, with or without connection pooling enabled. This test sets up a large number of connections in parallel; the initial connection is to the writer but will be changed to a random reader instance. The test executes a long query many times to simulate heavy queries.
+The diagram in this section shows the AWS Advanced JDBC Wrapper's performance when using the read-write splitting plugin, with or without connection pooling enabled. This test sets up a large number of connections in parallel; the initial connection is to the writer but will be changed to a random reader instance. The test executes a long query many times to simulate heavy queries.
The average overhead time is measured as the average time difference between running the entire test with the read-write plugin and running the entire test without any plugins. The baseline overhead time is 0 because there are no plugins in this scenario and thus there is no plugin overhead.
@@ -138,7 +138,7 @@ See [here](ReadWriteSplittingPluginPerformanceResults.md#read-write-splitting-pl
### Running the Tests
-After building the AWS JDBC Driver you can now run the unit tests.
+After building the AWS Advanced JDBC Wrapper you can now run the unit tests.
This will also validate your environment is set up correctly.
Mac:
@@ -158,4 +158,4 @@ For more information on how to run the integration tests, please visit [Integrat
[Connection Test Sample Code](./../../examples/AWSDriverExample/src/main/java/software/amazon/PgConnectionSample.java)
## Architecture
-For more information on how the AWS Advanced JDBC Driver functions and how it is structured, please visit [Architecture](./Architecture.md).
+For more information on how the AWS Advanced JDBC Wrapper functions and how it is structured, please visit [Architecture](./Architecture.md).
diff --git a/docs/development-guide/LoadablePlugins.md b/docs/development-guide/LoadablePlugins.md
index 6dd713a73..66573ad8e 100644
--- a/docs/development-guide/LoadablePlugins.md
+++ b/docs/development-guide/LoadablePlugins.md
@@ -84,7 +84,7 @@ When creating custom plugins, it is important to **avoid** the following bad pra
- information like current connection, or the host list provider are shared across all plugins
- shared information may be updated by any plugin at any time and should be retrieved via the plugin service when required
2. Using driver-specific properties or objects:
- - the AWS JDBC Driver may be used with multiple drivers, therefore plugins must ensure implementation is not restricted to a specific driver
+ - the AWS Advanced JDBC Wrapper may be used with multiple drivers, therefore plugins must ensure implementation is not restricted to a specific driver
3. Making direct connections:
- the plugin should always call the pipeline lambdas (i.e. `JdbcCallable connectFunc`, `JdbcCallable jdbcMethodFunc`)
4. Running long tasks synchronously:
diff --git a/docs/using-the-jdbc-driver/Compatibility.md b/docs/using-the-jdbc-driver/Compatibility.md
index 6a997ff8d..5658010b7 100644
--- a/docs/using-the-jdbc-driver/Compatibility.md
+++ b/docs/using-the-jdbc-driver/Compatibility.md
@@ -1,6 +1,6 @@
# Plugins compatibility
-The AWS JDBC Driver uses plugins to execute JDBC methods. You can think of a plugin as an extensible code module that adds additional logic around JDBC method calls. Plugins are designed with the intention of being compatible with each other; however, there are logical constraints related to database type or database features that can make plugins inefficient in certain configurations.
+The AWS Advanced JDBC Wrapper uses plugins to execute JDBC methods. You can think of a plugin as an extensible code module that adds additional logic around JDBC method calls. Plugins are designed with the intention of being compatible with each other; however, there are logical constraints related to database type or database features that can make plugins inefficient in certain configurations.
For example, RDS Single-AZ Instance deployments do not support failover, so the `failover` and `failover2` plugins are marked as incompatible. If either of these plugins is included in the driver configuration, there will be no added value. However, these unnecessary plugins will function without errors and will simply consume additional resources.
diff --git a/docs/using-the-jdbc-driver/CompatibilityEndpoints.md b/docs/using-the-jdbc-driver/CompatibilityEndpoints.md
index 621dcdfc3..1a68dde96 100644
--- a/docs/using-the-jdbc-driver/CompatibilityEndpoints.md
+++ b/docs/using-the-jdbc-driver/CompatibilityEndpoints.md
@@ -1,6 +1,6 @@
# Database URL types compatibility
-There are many different URL types (endpoints) that can be used with The AWS JDBC Driver, but certain URL types are not compatible with certain plugins. This page outlines the various URL types and which plugins are compatible with each type.
+There are many different URL types (endpoints) that can be used with The AWS Advanced JDBC Wrapper, but certain URL types are not compatible with certain plugins. This page outlines the various URL types and which plugins are compatible with each type.
- [Aurora Global Database Endpoint](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-connecting.html) - `.global-.global.rds.amazonaws.com`
- [Aurora Cluster Writer Endpoint](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Endpoints.Cluster.html) - `.cluster-..rds.amazonaws.com`
diff --git a/docs/using-the-jdbc-driver/ConfigurationPresets.md b/docs/using-the-jdbc-driver/ConfigurationPresets.md
index 0dae5fc91..0e2922977 100644
--- a/docs/using-the-jdbc-driver/ConfigurationPresets.md
+++ b/docs/using-the-jdbc-driver/ConfigurationPresets.md
@@ -2,7 +2,7 @@
## What is a Configuration Preset?
-A Configuration Preset is a [configuration profile](./UsingTheJdbcDriver.md#configuration-profiles) that has already been set up by the AWS JDBC Driver team. Preset configuration profiles are optimized, profiled, verified and can be used right away. If the existing presets do not cover an exact use case, users can also create their own configuration profiles based on the built-in presets.
+A Configuration Preset is a [configuration profile](./UsingTheJdbcDriver.md#configuration-profiles) that has already been set up by the AWS Advanced JDBC Wrapper team. Preset configuration profiles are optimized, profiled, verified and can be used right away. If the existing presets do not cover an exact use case, users can also create their own configuration profiles based on the built-in presets.
## Using Configuration Presets
@@ -30,7 +30,7 @@ properties.setProperty("wrapperProfileName", "myNewProfile");
Configuration Presets are optimized for 3 main user scenarios. They are:
- **No connection pool** preset family: `A`, `B`, `C`
-- AWS JDBC Driver **Internal connection pool** preset family: `D`, `E`, `F`
+- AWS Advanced JDBC Wrapper **Internal connection pool** preset family: `D`, `E`, `F`
- **External connection pool** preset family: `G`, `H`, `I`
Some preset names may include a number, like `A0`, `A1`, `A2`, `D0`, `D1`, etc. Usually, the number represent sensitivity or timing variations for the same preset. For example, `A0` is optimized for normal network outage sensitivity and normal response time, while `A1` is less sensitive. Please take into account that more aggressive presets tend to cause more false positive failure detections. More details can be found in this file: [ConfigurationProfilePresetCodes.java](./../../wrapper/src/main/java/software/amazon/jdbc/profile/ConfigurationProfilePresetCodes.java)
diff --git a/docs/using-the-jdbc-driver/DataSource.md b/docs/using-the-jdbc-driver/DataSource.md
index 28682565c..d18e7309e 100644
--- a/docs/using-the-jdbc-driver/DataSource.md
+++ b/docs/using-the-jdbc-driver/DataSource.md
@@ -1,5 +1,5 @@
# Connecting with a DataSource
-You can use the `DriverManager` class or a datasource to establish a new connection when using the AWS JDBC Driver. The AWS JDBC Driver has a built-in datasource class named [AwsWrapperDataSource](../../wrapper/src/main/java/software/amazon/jdbc/ds/AwsWrapperDataSource.java) that allows the AWS JDBC Driver to work with various driver-specific datasources.
+You can use the `DriverManager` class or a datasource to establish a new connection when using the AWS Advanced JDBC Wrapper. The AWS Advanced JDBC Wrapper has a built-in datasource class named [AwsWrapperDataSource](../../wrapper/src/main/java/software/amazon/jdbc/ds/AwsWrapperDataSource.java) that allows the AWS Advanced JDBC Wrapper to work with various driver-specific datasources.
## Using the AwsWrapperDataSource
@@ -8,7 +8,7 @@ To establish a connection with the AwsWrapperDataSource, you must:
1. Select a driver-specific datasource depending on what underlying driver is being used (for example: `org.postgresql.ds.PGSimpleDataSource` or `com.mysql.cj.jdbc.MysqlDataSource`).
2. Set up basic connection information in the AwsWrapperDataSource. See [this table](#configurable-datasource-properties) for the available options.
3. Configure any needed driver-specific datasource in the AwsWrapperDataSource using the [target dataSource properties](#configurable-datasource-properties).
-4. Configure any needed AWS JDBC Driver properties in the AwsWrapperDataSource using the [target dataSource properties](#configurable-datasource-properties).
+4. Configure any needed AWS Advanced JDBC Wrapper properties in the AwsWrapperDataSource using the [target dataSource properties](#configurable-datasource-properties).
### Configurable DataSource Properties
@@ -23,14 +23,14 @@ See the table below for a list of configurable properties.
| Database name | `setDatabase` | The name of the database. | `String` | No | `testDatabase` |
| JDBC URL | `setJdbcUrl` | The URL to connect with. | `String` | No. Either URL or server name should be set. If both URL and server name have been set, URL will take precedence. Please note that some drivers, such as MariaDb, require some parameters to be included particularly in the URL. | `jdbc:postgresql://localhost/postgres` |
| JDBC protocol | `setJdbcProtocol` | The JDBC protocol that will be used. | `String` | Yes, if the JDBC URL has not been set. | `jdbc:postgresql:` |
-| Underlying DataSource class | `setTargetDataSourceClassName` | The fully qualified class name of the underlying DataSource class the AWS JDBC Driver should use. | `String` | Yes, if the JDBC URL has not been set. | `org.postgresql.ds.PGSimpleDataSource` |
-| Target DataSource Properties | `setTargetDataSourceProperties` | Any additional properties that are required. This includes properties specific to the current underlying driver as well as any AWS JDBC Driver properties. | `Properties` | No | See this [example](../../examples/AWSDriverExample/src/main/java/software/amazon/DatasourceExample.java). |
+| Underlying DataSource class | `setTargetDataSourceClassName` | The fully qualified class name of the underlying DataSource class the AWS Advanced JDBC Wrapper should use. | `String` | Yes, if the JDBC URL has not been set. | `org.postgresql.ds.PGSimpleDataSource` |
+| Target DataSource Properties | `setTargetDataSourceProperties` | Any additional properties that are required. This includes properties specific to the current underlying driver as well as any AWS Advanced JDBC Wrapper properties. | `Properties` | No | See this [example](../../examples/AWSDriverExample/src/main/java/software/amazon/DatasourceExample.java). |
## Using the AwsWrapperDataSource with Connection Pooling Frameworks
The JDBC Wrapper also supports establishing a connection with a connection pooling framework.
-To use the AWS JDBC Driver with a connection pool, you must:
+To use the AWS Advanced JDBC Wrapper with a connection pool, you must:
1. Configure the connection pool.
2. Set the datasource class name to `software.amazon.jdbc.ds.AwsWrapperDataSource` for the connection pool.
@@ -74,7 +74,7 @@ To use the AWS JDBC Driver with a connection pool, you must:
ds.addDataSourceProperty("targetDataSourceClassName", "org.postgresql.ds.PGSimpleDataSource");
```
-5. Configure the driver-specific datasource and any AWS JDBC Driver properties, if needed. This step is optional:
+5. Configure the driver-specific datasource and any AWS Advanced JDBC Wrapper properties, if needed. This step is optional:
```java
Properties targetDataSourceProps = new Properties();
targetDataSourceProps.setProperty("socketTimeout", "10");
diff --git a/docs/using-the-jdbc-driver/DatabaseDialects.md b/docs/using-the-jdbc-driver/DatabaseDialects.md
index 9264c912f..16d3e6205 100644
--- a/docs/using-the-jdbc-driver/DatabaseDialects.md
+++ b/docs/using-the-jdbc-driver/DatabaseDialects.md
@@ -1,7 +1,7 @@
# Database Dialects
## What are database dialects?
-The AWS Advanced JDBC Driver is a wrapper that requires an underlying driver, and it is meant to be compatible with any JDBC driver. Database dialects help the AWS JDBC Driver determine what kind of underlying database is being used. To function correctly, the AWS JDBC Driver requires details unique to specific databases such as the default port number or the method to get the current host from the database. These details can be defined and provided to the AWS JDBC Driver by using database dialects.
+The AWS Advanced JDBC Wrapper is a wrapper that requires an underlying driver, and it is meant to be compatible with any JDBC driver. Database dialects help the AWS Advanced JDBC Wrapper determine what kind of underlying database is being used. To function correctly, the AWS Advanced JDBC Wrapper requires details unique to specific databases such as the default port number or the method to get the current host from the database. These details can be defined and provided to the AWS Advanced JDBC Wrapper by using database dialects.
## Configuration Parameters
| Name | Required | Description | Example |
@@ -10,7 +10,7 @@ The AWS Advanced JDBC Driver is a wrapper that requires an underlying driver, an
> **NOTES:**
>
-> The `wrapperDialect` parameter is not required. When it is not provided by the user, the AWS JDBC Driver will attempt to determine which of the existing dialects to use based on other connection details. However, if the dialect is known by the user, it is preferable to set the `wrapperDialect` parameter because it will take time to resolve the dialect.
+> The `wrapperDialect` parameter is not required. When it is not provided by the user, the AWS Advanced JDBC Wrapper will attempt to determine which of the existing dialects to use based on other connection details. However, if the dialect is known by the user, it is preferable to set the `wrapperDialect` parameter because it will take time to resolve the dialect.
### List of Available Dialect Codes
Dialect codes specify what kind of database any connections will be made to.
@@ -30,7 +30,7 @@ Dialect codes specify what kind of database any connections will be made to.
| `UNKNOWN` | `unknown` | Unknown. Although this code is available, do not use it as it will result in errors. |
## Custom Dialects
-If you are interested in using the AWS JDBC Driver but your desired database type is not currently supported, it is possible to create a custom dialect.
+If you are interested in using the AWS Advanced JDBC Wrapper but your desired database type is not currently supported, it is possible to create a custom dialect.
To create a custom dialect, implement the [`Dialect`](../../wrapper/src/main/java/software/amazon/jdbc/dialect/Dialect.java) interface. For Aurora Limitless database engines, the [`AuroraLimitlessDialect`](../../wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraLimitlessDialect.java) interface should also be implemented. See the following classes for examples:
@@ -39,7 +39,7 @@ To create a custom dialect, implement the [`Dialect`](../../wrapper/src/main/jav
- [AuroraPgDialect](../../wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java)
- This dialect is an extension of PgDialect, but also implements the `AuroraLimitlessDialect` interface.
-Once the custom dialect class has been created, tell the AWS JDBC Driver to use it with the `setCustomDialect` method in the `DialectManager` class. It is not necessary to set the `wrawpperDialect` parameter. See below for an example:
+Once the custom dialect class has been created, tell the AWS Advanced JDBC Wrapper to use it with the `setCustomDialect` method in the `DialectManager` class. It is not necessary to set the `wrawpperDialect` parameter. See below for an example:
```java
Dialect myDialect = new CustomDialect();
diff --git a/docs/using-the-jdbc-driver/Frameworks.md b/docs/using-the-jdbc-driver/Frameworks.md
index 5a0f5f275..2f234f1b8 100644
--- a/docs/using-the-jdbc-driver/Frameworks.md
+++ b/docs/using-the-jdbc-driver/Frameworks.md
@@ -1,6 +1,6 @@
-# The AWS JDBC Driver Integration with 3rd Party Frameworks
+# The AWS Advanced JDBC Wrapper Integration with 3rd Party Frameworks
-The AWS Advanced JDBC Driver works with multiple 3rd party frameworks.
+The AWS Advanced JDBC Wrapper works with multiple 3rd party frameworks.
Here are some examples of configuring the driver to work with these frameworks:
- [Spring and Hibernate](../../examples/SpringHibernateExample/README.md)
- [Spring and Wildfly](../../examples/SpringWildflyExample/README.md)
diff --git a/docs/using-the-jdbc-driver/HostAvailabilityStrategy.md b/docs/using-the-jdbc-driver/HostAvailabilityStrategy.md
index c123608a4..890026648 100644
--- a/docs/using-the-jdbc-driver/HostAvailabilityStrategy.md
+++ b/docs/using-the-jdbc-driver/HostAvailabilityStrategy.md
@@ -1,7 +1,7 @@
# Host Availability Strategy
## What is Host Availability Strategy
-The AWS JDBC Driver keeps track of the availability of database hosts. A host's availability status can be either `AVAILABLE` or `NOT_AVAILABLE`. This information is used by the driver when deciding which hosts to connect to.
+The AWS Advanced JDBC Wrapper keeps track of the availability of database hosts. A host's availability status can be either `AVAILABLE` or `NOT_AVAILABLE`. This information is used by the driver when deciding which hosts to connect to.
When database hosts fail, they are marked as `NOT_AVAILABLE` and will not be checked again to see if they have recovered. Host Availability Strategies can help the driver keep host health statuses up to date by checking whether unavailable hosts have become available. For example, the Exponential Backoff strategy will let the driver retry hosts that have had their availability set to `NOT_AVAILABLE` by setting the host availability to `AVAILABLE` after a backoff period.
diff --git a/docs/using-the-jdbc-driver/SessionState.md b/docs/using-the-jdbc-driver/SessionState.md
index 75eacf847..f34c03f35 100644
--- a/docs/using-the-jdbc-driver/SessionState.md
+++ b/docs/using-the-jdbc-driver/SessionState.md
@@ -2,7 +2,7 @@
## What is a session state?
-Every connection is associated with a connection session on the server and a group of related session settings like the autoCommit flag or the transaction isolation level. The following session settings are tracked by the AWS JDBC Driver and together they form a session state:
+Every connection is associated with a connection session on the server and a group of related session settings like the autoCommit flag or the transaction isolation level. The following session settings are tracked by the AWS Advanced JDBC Wrapper and together they form a session state:
- autoCommit (`setAutoCommit`, `getAutoCommit`)
- readOnly (`isReadOnly`, `setReadOnly`)
- transaction isolation level (`setTransactionIsolation`, `getTransactionIsolation`)
@@ -12,18 +12,18 @@ Every connection is associated with a connection session on the server and a gro
- schema (`setSchema`, `getSchema`)
- types mapping (`setTypeMap`, `getTypeMap`)
-Since the AWS JDBC Driver can transparently switch physical connection to a server (for instance, during a cluster failover), it's important to re-apply a current session state to a new connection during such switch.
+Since the AWS Advanced JDBC Wrapper can transparently switch physical connection to a server (for instance, during a cluster failover), it's important to re-apply a current session state to a new connection during such switch.
## Tracking Session States Changes

-The diagram above shows the process of switching one database connection `A` to a new connection `B`. After connection `A` is established, it's returned to the user application. A user application may use this connection to query data from the database as well as to change some session settings. For example, if the user application calls `setReadOnly` on a connection, the AWS JDBC Driver intercepts this call and stores a new session setting for the `readOnly` setting. At the same time, the driver verifies if the original session setting is known or not. If the original setting is not known, the driver will make an additional `getReadOnly` call and store the result as a pristine value in order to save the original session setting. Later, the driver may need the pristine value to restore the connection session state to its original state.
+The diagram above shows the process of switching one database connection `A` to a new connection `B`. After connection `A` is established, it's returned to the user application. A user application may use this connection to query data from the database as well as to change some session settings. For example, if the user application calls `setReadOnly` on a connection, the AWS Advanced JDBC Wrapper intercepts this call and stores a new session setting for the `readOnly` setting. At the same time, the driver verifies if the original session setting is known or not. If the original setting is not known, the driver will make an additional `getReadOnly` call and store the result as a pristine value in order to save the original session setting. Later, the driver may need the pristine value to restore the connection session state to its original state.
## Restore to the Original Session State
-Before closing an existing connection, the AWS JDBC Driver may try to reset all changes to the session state made by the user application. Some application frameworks and connection pools, like the Spring Framework or HikariCP, intercept calls to `close()` and may perform additional connection configuration. Since the AWS JDBC Driver might change the internal physical connection to a server, a new physical connection's settings may become unexpected to the user application and may cause errors. It is also important to mention that calling `close()` on a connection while using connection pooling doesn't close the connection or stop communicating to a server. Instead the connection is returned to a pool of available connections. Cleaning up a session state before returning a connection to a pool is necessary to avoid side effects and errors when a connection is retrieved from a pool to be reused.
+Before closing an existing connection, the AWS Advanced JDBC Wrapper may try to reset all changes to the session state made by the user application. Some application frameworks and connection pools, like the Spring Framework or HikariCP, intercept calls to `close()` and may perform additional connection configuration. Since the AWS Advanced JDBC Wrapper might change the internal physical connection to a server, a new physical connection's settings may become unexpected to the user application and may cause errors. It is also important to mention that calling `close()` on a connection while using connection pooling doesn't close the connection or stop communicating to a server. Instead the connection is returned to a pool of available connections. Cleaning up a session state before returning a connection to a pool is necessary to avoid side effects and errors when a connection is retrieved from a pool to be reused.
-Before closing a connection, the AWS JDBC Driver sets its session state settings with the pristine values that have been previously stored in the driver. If a pristine value isn't available, it means that there have been no changes to that particular setting made by the user application, and that it's safe to assume that this setting is in its original/unchanged state.
+Before closing a connection, the AWS Advanced JDBC Wrapper sets its session state settings with the pristine values that have been previously stored in the driver. If a pristine value isn't available, it means that there have been no changes to that particular setting made by the user application, and that it's safe to assume that this setting is in its original/unchanged state.
Session state reset could be disabled by using `resetSessionStateOnClose` configuration parameter.
diff --git a/docs/using-the-jdbc-driver/SupportForRDSMultiAzDBCluster.md b/docs/using-the-jdbc-driver/SupportForRDSMultiAzDBCluster.md
index 457a1f034..a9583d1f4 100644
--- a/docs/using-the-jdbc-driver/SupportForRDSMultiAzDBCluster.md
+++ b/docs/using-the-jdbc-driver/SupportForRDSMultiAzDBCluster.md
@@ -1,10 +1,10 @@
# Enhanced Support for Amazon RDS Multi-AZ DB Cluster
-As of [v2.3.0](https://github.com/aws/aws-advanced-jdbc-wrapper/releases/tag/2.3.0), the AWS JDBC Driver has expanded its support for Amazon RDS Multi-AZ DB Cluster Deployment. By leveraging the topology information within the RDS Multi-AZ DB Cluster, the driver is capable of switching over the connection to a new writer node in approximately 1 second or less, given there is no replica lag during minor version upgrades or OS maintenance upgrades.
+As of [v2.3.0](https://github.com/aws/aws-advanced-jdbc-wrapper/releases/tag/2.3.0), the AWS Advanced JDBC Wrapper has expanded its support for Amazon RDS Multi-AZ DB Cluster Deployment. By leveraging the topology information within the RDS Multi-AZ DB Cluster, the driver is capable of switching over the connection to a new writer node in approximately 1 second or less, given there is no replica lag during minor version upgrades or OS maintenance upgrades.
## General Usage
-The process of using the AWS JDBC Driver with RDS Multi-AZ DB Cluster is the same as using it with an RDS Aurora cluster. All properties, configurations, functions, etc., remain consistent. Instead of connecting to a generic database endpoint, simply replace the endpoint with the Cluster Writer Endpoint provided by the RDS Multi-AZ DB Cluster.
+The process of using the AWS Advanced JDBC Wrapper with RDS Multi-AZ DB Cluster is the same as using it with an RDS Aurora cluster. All properties, configurations, functions, etc., remain consistent. Instead of connecting to a generic database endpoint, simply replace the endpoint with the Cluster Writer Endpoint provided by the RDS Multi-AZ DB Cluster.
### MySQL
diff --git a/docs/using-the-jdbc-driver/TargetDriverDialects.md b/docs/using-the-jdbc-driver/TargetDriverDialects.md
index 7282c9244..11b3694a6 100644
--- a/docs/using-the-jdbc-driver/TargetDriverDialects.md
+++ b/docs/using-the-jdbc-driver/TargetDriverDialects.md
@@ -1,7 +1,7 @@
# Target Driver Dialects
## What are target driver dialects?
-The AWS Advanced JDBC Driver is a wrapper that requires an underlying driver, and it is meant to be compatible with any JDBC driver. Target driver dialects help the AWS JDBC Driver to properly pass JDBC call to a target driver. To function correctly, the AWS JDBC Driver requires details unique to specific target driver such as DataSource method to set the current host or connection url, whether to include some specific configuration parameter to a list of properties or to include it in connection url, etc. These details can be defined and provided to the AWS JDBC Driver by using target driver dialects.
+The AWS Advanced JDBC Wrapper is a wrapper that requires an underlying driver, and it is meant to be compatible with any JDBC driver. Target driver dialects help the AWS Advanced JDBC Wrapper to properly pass JDBC call to a target driver. To function correctly, the AWS Advanced JDBC Wrapper requires details unique to specific target driver such as DataSource method to set the current host or connection url, whether to include some specific configuration parameter to a list of properties or to include it in connection url, etc. These details can be defined and provided to the AWS Advanced JDBC Wrapper by using target driver dialects.
By default, target driver dialect is determined based on used target driver class name or a DataSource class name.
@@ -12,7 +12,7 @@ By default, target driver dialect is determined based on used target driver clas
> **NOTES:**
>
-> The `wrapperTargetDriverDialect` parameter is not required. When it is not provided by the user, the AWS JDBC Driver will attempt to determine which of the existing target driver dialects to use based on target driver class name or a DataSource class name. If target driver specific implementation is not found, the AWS JDBC Driver will use a generic target driver dialect.
+> The `wrapperTargetDriverDialect` parameter is not required. When it is not provided by the user, the AWS Advanced JDBC Wrapper will attempt to determine which of the existing target driver dialects to use based on target driver class name or a DataSource class name. If target driver specific implementation is not found, the AWS Advanced JDBC Wrapper will use a generic target driver dialect.
>
### List of Available Target Driver Codes
Target Driver Dialect codes specify what target driver dialect class to use.
@@ -25,7 +25,7 @@ Target Driver Dialect codes specify what target driver dialect class to use.
| `GENERIC` | `generic` | Any other JDBC driver |
## Custom Target Driver Dialects
-If you are interested in using the AWS JDBC Driver but your desired target driver has unique features so the existing generic dialect doesn't work well with it, it is possible to create a custom target driver dialect.
+If you are interested in using the AWS Advanced JDBC Wrapper but your desired target driver has unique features so the existing generic dialect doesn't work well with it, it is possible to create a custom target driver dialect.
To create a custom target driver dialect, implement the [`TargetDriverDialect`](../../wrapper/src/main/java/software/amazon/jdbc/targetdriverdialect/TargetDriverDialect.java) interface. See the following classes for examples:
@@ -34,7 +34,7 @@ To create a custom target driver dialect, implement the [`TargetDriverDialect`](
- [MysqlConnectorJTargetDriverDialect](../../wrapper/src/main/java/software/amazon/jdbc/targetdriverdialect/MysqlConnectorJTargetDriverDialect.java)
- This is a dialect that should work with [MySQL Connector/J Driver](https://github.com/mysql/mysql-connector-j).
-Once the custom dialect class has been created, tell the AWS JDBC Driver to use it with the `setCustomDialect` method in the `TargetDriverDialectManager` class. It is not necessary to set the `wrapperTargetDriverDialect` parameter. See below for an example:
+Once the custom dialect class has been created, tell the AWS Advanced JDBC Wrapper to use it with the `setCustomDialect` method in the `TargetDriverDialectManager` class. It is not necessary to set the `wrapperTargetDriverDialect` parameter. See below for an example:
```java
TargetDriverDialect myTargetDriverDialect = new CustomTargetDriverDialect();
diff --git a/docs/using-the-jdbc-driver/Telemetry.md b/docs/using-the-jdbc-driver/Telemetry.md
index bcc8a0c3f..6329ead6f 100644
--- a/docs/using-the-jdbc-driver/Telemetry.md
+++ b/docs/using-the-jdbc-driver/Telemetry.md
@@ -2,27 +2,27 @@
Monitoring is the ability to gather data and insights on the execution of an application. Users will also be able to inspect the gathered data and determine potential actions to take depending on the data collected.
-Version 2.3.0 of the AWS JDBC Driver introduced the Telemetry feature. This feature allows you to collect and visualize data of the AWS JDBC Driver execution at a global level and at plugin level. You can now monitor the performance of the driver as a whole or within specific plugins with your configurations, and determine whether the driver's performance meets your expectations.
+Version 2.3.0 of the AWS Advanced JDBC Wrapper introduced the Telemetry feature. This feature allows you to collect and visualize data of the AWS Advanced JDBC Wrapper execution at a global level and at plugin level. You can now monitor the performance of the driver as a whole or within specific plugins with your configurations, and determine whether the driver's performance meets your expectations.
## Terminology
-The AWS JDBC Driver provides telemetry data through two different forms: **Traces** and **Metrics**.
+The AWS Advanced JDBC Wrapper provides telemetry data through two different forms: **Traces** and **Metrics**.
### Traces
Traces give an overview of what is happening in a specific section of the execution of an application. A trace is composed by a hierarchical sequence of segments, each of which contain basic information about the execution (e.g., duration), and whether that section was executed successfully or not.
-In the AWS JDBC Driver, initially a trace will be generated for every JDBC call made to the wrapper. Depending on whether the user application has already a trace open, it might be either nested into the opened trace or dropped. And then, for each enabled plugin, another segment will be created only for the plugin execution, linked to the JDBC call segment.
+In the AWS Advanced JDBC Wrapper, initially a trace will be generated for every JDBC call made to the wrapper. Depending on whether the user application has already a trace open, it might be either nested into the opened trace or dropped. And then, for each enabled plugin, another segment will be created only for the plugin execution, linked to the JDBC call segment.
-Traces from the AWS JDBC Driver are submitted to [**AWS X-Ray**](https://aws.amazon.com/xray/).
+Traces from the AWS Advanced JDBC Wrapper are submitted to [**AWS X-Ray**](https://aws.amazon.com/xray/).
### Metrics
Metrics are numeric data that were measured and collected through the execution of an application. Those metrics can give an insight on how many times some action (e.g., failover) has happened, and for actions that may happen multiple times, their success or failure rate (failover, cache hits, etc.), amongst other related information.
-The AWS JDBC Driver will submit metrics data to [**Amazon Cloudwatch**](https://aws.amazon.com/cloudwatch/).
+The AWS Advanced JDBC Wrapper will submit metrics data to [**Amazon Cloudwatch**](https://aws.amazon.com/cloudwatch/).
-The list of available metrics for the AWS JDBC Driver and its plugins is available in the [List of Metrics](#List-Of-Metrics) section of this page.
+The list of available metrics for the AWS Advanced JDBC Wrapper and its plugins is available in the [List of Metrics](#List-Of-Metrics) section of this page.
## Setting up the AWS Distro for OpenTelemetry Collector (ADOT Collector)
@@ -32,7 +32,7 @@ Before enabling the Telemetry feature, a few setup steps are required to ensure
1. In order to visualize the telemetry data in the AWS Console, make sure you have an IAM user or role with permissions to [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/security-iam.html) and [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html).
-2. Download the [AWS Distro for OpenTelemetry Collector](https://aws-otel.github.io/docs/getting-started/collector) and set it up. The AWS Distro for OpenTelemetry Collector is responsible from receiving telemetry data from the application using the AWS JDBC Driver and forward it to AWS. Both of those connections happen via HTTP, therefore URLs and ports need to be correctly configured for the collector.
+2. Download the [AWS Distro for OpenTelemetry Collector](https://aws-otel.github.io/docs/getting-started/collector) and set it up. The AWS Distro for OpenTelemetry Collector is responsible from receiving telemetry data from the application using the AWS Advanced JDBC Wrapper and forward it to AWS. Both of those connections happen via HTTP, therefore URLs and ports need to be correctly configured for the collector.
> [!WARNING]
> The AWS Distro for OpenTelemetry Collector can be set up either locally or remotely. It is up to the user to decide where is best to set it up. If you decide to host it remotely, ensure that the application has the necessary permissions or allowlists to connect to the Collector.
@@ -42,9 +42,9 @@ Before enabling the Telemetry feature, a few setup steps are required to ensure
## Using Telemetry
-Telemetry for the AWS JDBC Driver is a monitoring strategy that overlooks all plugins enabled in [`wrapperPlugins`](./UsingTheJdbcDriver.md#connection-plugin-manager-parameters) and is not a plugin in itself. Therefore no changes are required in the `wrapperPlugins` parameter to enable Telemetry.
+Telemetry for the AWS Advanced JDBC Wrapper is a monitoring strategy that overlooks all plugins enabled in [`wrapperPlugins`](./UsingTheJdbcDriver.md#connection-plugin-manager-parameters) and is not a plugin in itself. Therefore no changes are required in the `wrapperPlugins` parameter to enable Telemetry.
-In order to enable Telemetry in the AWS JDBC Driver, you need to:
+In order to enable Telemetry in the AWS Advanced JDBC Wrapper, you need to:
1. Set the `enableTelemetry` property to `true`. You can either set it through Properties or directly in the connection string.
@@ -76,7 +76,7 @@ OpenTelemetrySdk.builder()
We also provide a [complete sample application](../../examples/AWSDriverExample/src/main/java/software/amazon/TelemetryMetricsOTLPExample.java) using telemetry in the examples folder of this repository.
### Telemetry Parameters
-In addition to the parameter that enables Telemetry, you can pass following parameters to the AWS JDBC Driver through the connection URL to configure how telemetry data will be forwarded.
+In addition to the parameter that enables Telemetry, you can pass following parameters to the AWS Advanced JDBC Wrapper through the connection URL to configure how telemetry data will be forwarded.
| Parameter | Value | Required | Description | Default Value |
|---------------------------|:-------:|:--------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|
@@ -87,9 +87,9 @@ In addition to the parameter that enables Telemetry, you can pass following para
## Nested tracing strategies using Amazon XRay
-As you could see in the [Telemetry Parameters](#Telemetry-Parameters) section, the AWS JDBC Driver allows an user to determine which strategy for nested traces to use when using Telemetry.
+As you could see in the [Telemetry Parameters](#Telemetry-Parameters) section, the AWS Advanced JDBC Wrapper allows an user to determine which strategy for nested traces to use when using Telemetry.
-Traces are hierarchical entities and it might be that the user application already has an open trace in a given sequence of code that connects to the AWS JDBC Driver. In this case, the Telemetry feature allows users to determine which strategy to use for the Telemetry traces generated when using the driver.
+Traces are hierarchical entities and it might be that the user application already has an open trace in a given sequence of code that connects to the AWS Advanced JDBC Wrapper. In this case, the Telemetry feature allows users to determine which strategy to use for the Telemetry traces generated when using the driver.
A top level trace is a trace that has no link to any other parent trace, and is directly accessible from the list of submitted traces within XRay. In the following pictures, the top level traces of an application are displayed in AWS X-Ray.
@@ -101,14 +101,14 @@ When a trace is hierarchically linked to a parent trace, we say that this trace

-Applications that interact with the AWS JDBC Driver may or may not have already opened telemetry traces on their own. In this case, it is up to the user to determine how they want to mix both application and driver traces.
+Applications that interact with the AWS Advanced JDBC Wrapper may or may not have already opened telemetry traces on their own. In this case, it is up to the user to determine how they want to mix both application and driver traces.
-This can be done using the AWS JDBC Driver's `telemetrySubmitTopLevel` property. This property allows users to choose to submit the driver traces always as top level traces or to submit them nested to the application traces.
+This can be done using the AWS Advanced JDBC Wrapper's `telemetrySubmitTopLevel` property. This property allows users to choose to submit the driver traces always as top level traces or to submit them nested to the application traces.
The default value is set to `false`, which means the driver traces to always be nested into their application traces. That will happen unless there are no open application traces when the driver is running. In that case no driver traces will be collected or submitted. When the property is set to `true`, all the driver traces would be submitted top level traces. If the application has already open traces, it will not be possible for the driver traces to be top level and the driver traces therefore will not be submitted.
## List of Metrics
-The AWS JDBC Driver also submits a set of metrics to Amazon Cloudwatch when the driver is used. These metrics are predefined and they help give insight on what is happening inside the plugins when the plugins are used.
+The AWS Advanced JDBC Wrapper also submits a set of metrics to Amazon Cloudwatch when the driver is used. These metrics are predefined and they help give insight on what is happening inside the plugins when the plugins are used.
Metrics can be one of 3 types: counters, gauges or histograms.
diff --git a/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md b/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md
index 42f8466d6..3166ce9bd 100644
--- a/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md
+++ b/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md
@@ -1,19 +1,19 @@
-# Using the AWS Advanced JDBC Driver
-The AWS Advanced JDBC Driver leverages community JDBC drivers and enables support of AWS and Aurora functionalities. Currently, the [PostgreSQL JDBC Driver](https://github.com/pgjdbc/pgjdbc), [MySQL JDBC Driver](https://github.com/mysql/mysql-connector-j), and [MariaDB JDBC Driver](https://github.com/mariadb-corporation/mariadb-connector-j) are supported.
+# Using the AWS Advanced JDBC Wrapper
+The AWS Advanced JDBC Wrapper leverages community JDBC drivers and enables support of AWS and Aurora functionalities. Currently, the [PostgreSQL JDBC Driver](https://github.com/pgjdbc/pgjdbc), [MySQL JDBC Driver](https://github.com/mysql/mysql-connector-j), and [MariaDB JDBC Driver](https://github.com/mariadb-corporation/mariadb-connector-j) are supported.
The JDBC Wrapper also supports [connection pooling](./DataSource.md#Using-the-AwsWrapperDataSource-with-Connection-Pooling-Frameworks).
-## Using the AWS JDBC Driver with plain RDS databases
-It is possible to use the AWS JDBC Driver with plain RDS databases, but individual features may or may not be compatible. For example, failover handling and enhanced failure monitoring are not compatible with plain RDS databases and the relevant plugins must be disabled. Plugins can be enabled or disabled as seen in the [Connection Plugin Manager Parameters](#connection-plugin-manager-parameters) section. Please note that some plugins have been enabled by default. Plugin compatibility can be verified in the [plugins table](#list-of-available-plugins).
+## Using the AWS Advanced JDBC Wrapper with plain RDS databases
+It is possible to use the AWS Advanced JDBC Wrapper with plain RDS databases, but individual features may or may not be compatible. For example, failover handling and enhanced failure monitoring are not compatible with plain RDS databases and the relevant plugins must be disabled. Plugins can be enabled or disabled as seen in the [Connection Plugin Manager Parameters](#connection-plugin-manager-parameters) section. Please note that some plugins have been enabled by default. Plugin compatibility can be verified in the [plugins table](#list-of-available-plugins).
-## Using the AWS JDBC Driver with custom endpoints and other non-standard URLs
+## Using the AWS Advanced JDBC Wrapper with custom endpoints and other non-standard URLs
> [!WARNING]\
-> If connecting using a non-standard RDS URL (e.g. a custom endpoint, ip address, rds proxy, or custom domain URL), the clusterId property must be set. If the `clusterId` is omitted when using a non-standard RDS URL, you may experience various issues. For more information, please see the [AWS Advanced JDBC Driver Parameters](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) section.
+> If connecting using a non-standard RDS URL (e.g. a custom endpoint, ip address, rds proxy, or custom domain URL), the clusterId property must be set. If the `clusterId` is omitted when using a non-standard RDS URL, you may experience various issues. For more information, please see the [AWS Advanced JDBC Wrapper Parameters](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) section.
## Wrapper Protocol
-The AWS JDBC Driver uses the protocol prefix `jdbc:aws-wrapper:`. Internally, the JDBC Wrapper will replace this protocol prefix with `jdbc:`, making the final protocol `jdbc:aws-wrapper:{suffix}` where `suffix` is specific to the desired underlying protocol. For example, to connect to a PostgreSQL database, you would use the protocol `jdbc:aws-wrapper:postgresql:`, and inside the AWS JDBC Driver, the final protocol that will be used to connect to a database will be `jdbc:postgresql:`.
+The AWS Advanced JDBC Wrapper uses the protocol prefix `jdbc:aws-wrapper:`. Internally, the JDBC Wrapper will replace this protocol prefix with `jdbc:`, making the final protocol `jdbc:aws-wrapper:{suffix}` where `suffix` is specific to the desired underlying protocol. For example, to connect to a PostgreSQL database, you would use the protocol `jdbc:aws-wrapper:postgresql:`, and inside the AWS Advanced JDBC Wrapper, the final protocol that will be used to connect to a database will be `jdbc:postgresql:`.
## Getting a Connection
-To get a connection from the AWS JDBC Driver, the user application can either connect with a DriverManager or with a DataSource.
+To get a connection from the AWS Advanced JDBC Wrapper, the user application can either connect with a DriverManager or with a DataSource.
The process of getting a connection with a DriverManager will remain the same as with other JDBC Drivers; [this example](./../../examples/AWSDriverExample/src/main/java/software/amazon/PgConnectionSample.java) demonstrates establishing a connection with the PostgreSQL JDBC driver. Note that when connection properties are configured in both the connection string and with a Properties object, the connection string values will take precedence.
@@ -30,7 +30,7 @@ The JDBC Wrapper can be used with different frameworks and tools. More details f
## Logging
-There are multiple ways to enable logging when using the AWS JDBC Driver, some ways include:
+There are multiple ways to enable logging when using the AWS Advanced JDBC Wrapper, some ways include:
- using the built-in Java Util Logger library
- using an external logger
@@ -52,7 +52,7 @@ software.amazon.jdbc.Driver.level=FINER
software.amazon.jdbc.plugin.level=FINER
```
#### Connection Parameter
-The AWS JDBC Driver also has a parameter, [`wrapperLoggerLevel`](#aws-advanced-jdbc-driver-parameters), to configure the logging level.
+The AWS Advanced JDBC Wrapper also has a parameter, [`wrapperLoggerLevel`](#aws-advanced-jdbc-wrapper-parameters), to configure the logging level.
```java
final Properties properties = new Properties();
properties.setProperty("wrapperLoggerLevel", "finest");
@@ -60,7 +60,7 @@ The AWS JDBC Driver also has a parameter, [`wrapperLoggerLevel`](#aws-advanced-j
```
### Using an External Logger
-The two methods above are more suitable for simple Java applications that do not have a 3rd party logging library configured. If you are using the AWS JDBC Driver with Spring or Spring Boot, you can enable logging by adding the following to your configuration file.
+The two methods above are more suitable for simple Java applications that do not have a 3rd party logging library configured. If you are using the AWS Advanced JDBC Wrapper with Spring or Spring Boot, you can enable logging by adding the following to your configuration file.
For `application.yml`:
```yaml
logging:
@@ -73,23 +73,23 @@ For `application.properties`:
logging.level.software.amazon.jdbc=trace
```
-## AWS Advanced JDBC Driver Parameters
-These parameters are applicable to any instance of the AWS JDBC Driver.
+## AWS Advanced JDBC Wrapper Parameters
+These parameters are applicable to any instance of the AWS Advanced JDBC Wrapper.
| Parameter | Value | Required | Description | Default Value |
|---------------------------------------------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|
| `clusterId` | `String` | If connecting using a non-standard RDS URL (e.g. an IP address, custom endpoint, rds proxy, or custom domain URL): Yes
Otherwise: No
:warning:If `clusterId` is omitted when using a non-standard RDS URL, you may experience various issues. | A unique identifier for the cluster. Connections with the same cluster id share a cluster topology cache. | None |
-| `wrapperLoggerLevel` | `String` | No | Logger level of the AWS JDBC Driver.
If it is used, it must be one of the following values: `OFF`, `SEVERE`, `WARNING`, `INFO`, `CONFIG`, `FINE`, `FINER`, `FINEST`, `ALL`. | `null` |
+| `wrapperLoggerLevel` | `String` | No | Logger level of the AWS Advanced JDBC Wrapper.
If it is used, it must be one of the following values: `OFF`, `SEVERE`, `WARNING`, `INFO`, `CONFIG`, `FINE`, `FINER`, `FINEST`, `ALL`. | `null` |
| `database` | `String` | No | Database name. | `null` |
| `user` | `String` | No | Database username. | `null` |
| `password` | `String` | No | Database password. | `null` |
| `wrapperDialect` | `String` | No | Please see [this page on database dialects](./DatabaseDialects.md), and whether you should include it. | `null` |
-| `wrapperLogUnclosedConnections` | `Boolean` | No | Allows the AWS JDBC Driver to capture a stacktrace for each connection that is opened. If the `finalize()` method is reached without the connection being closed, the stacktrace is printed to the log. This helps developers to detect and correct the source of potential connection leaks. | `false` |
+| `wrapperLogUnclosedConnections` | `Boolean` | No | Allows the AWS Advanced JDBC Wrapper to capture a stacktrace for each connection that is opened. If the `finalize()` method is reached without the connection being closed, the stacktrace is printed to the log. This helps developers to detect and correct the source of potential connection leaks. | `false` |
| `loginTimeout` | `Integer` | No | Login timeout in milliseconds. | `null` |
| `connectTimeout` | `Integer` | No | Socket connect timeout in milliseconds. | `null` |
| `socketTimeout` | `Integer` | No | Socket timeout in milliseconds. | `null` |
| `tcpKeepAlive` | `Boolean` | No | Enable or disable TCP keep-alive probe. | `false` |
-| `targetDriverAutoRegister` | `Boolean` | No | Allows the AWS JDBC Driver to register a target driver based on `wrapperTargetDriverDialect` configuration parameter or, if it's missed, on a connection url protocol. | `true` |
+| `targetDriverAutoRegister` | `Boolean` | No | Allows the AWS Advanced JDBC Wrapper to register a target driver based on `wrapperTargetDriverDialect` configuration parameter or, if it's missed, on a connection url protocol. | `true` |
| `transferSessionStateOnSwitch` | `Boolean` | No | Enables transferring the session state to a new connection. | `true` |
| `resetSessionStateOnClose` | `Boolean` | No | Enables resetting the session state before closing connection. | `true` |
| `rollbackOnSwitch` | `Boolean` | No | Enables rolling back a current transaction, if any in effect, before switching to a new connection. | `true` |
@@ -99,7 +99,7 @@ These parameters are applicable to any instance of the AWS JDBC Driver.
| `skipWrappingForPackages` | `String` | No | Register Java package names (separated by comma) which will be left unwrapped. This setting modifies all future connections established by the driver, not just a particular connection. | `com.pgvector` |
## Plugins
-The AWS JDBC Driver uses plugins to execute JDBC methods. You can think of a plugin as an extensible code module that adds extra logic around any JDBC method calls. The AWS JDBC Driver has a number of [built-in plugins](#list-of-available-plugins) available for use.
+The AWS Advanced JDBC Wrapper uses plugins to execute JDBC methods. You can think of a plugin as an extensible code module that adds extra logic around any JDBC method calls. The AWS Advanced JDBC Wrapper has a number of [built-in plugins](#list-of-available-plugins) available for use.
Plugins are loaded and managed through the Connection Plugin Manager and may be identified by a `String` name in the form of plugin code.
@@ -108,7 +108,7 @@ Plugins are loaded and managed through the Connection Plugin Manager and may be
| Parameter | Value | Required | Description | Default Value |
|-----------------------------------|-----------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------|
| `wrapperPlugins` | `String` | No | Comma separated list of connection plugin codes.
Example: `failover,efm2` | `auroraConnectionTracker,failover2,efm2` |
-| `autoSortWrapperPluginOrder` | `Boolean` | No | Allows the AWS JDBC Driver to sort connection plugins to prevent plugin misconfiguration. Allows a user to provide a custom plugin order if needed. | `true` |
+| `autoSortWrapperPluginOrder` | `Boolean` | No | Allows the AWS Advanced JDBC Wrapper to sort connection plugins to prevent plugin misconfiguration. Allows a user to provide a custom plugin order if needed. | `true` |
| `wrapperProfileName` | `String` | No | Driver configuration profile name. Instead of listing plugin codes with `wrapperPlugins`, the driver profile can be set with this parameter.
Example: See [below](#configuration-profiles). | `null` |
To use a built-in plugin, specify its relevant plugin code for the `wrapperPlugins`.
@@ -129,7 +129,7 @@ properties.setProperty("wrapperPlugins", "");
The Wrapper behaves like the target driver when no plugins are used.
### Configuration Profiles
-An alternative way of loading plugins and providing configuration parameters is to use a configuration profile. You can create custom configuration profiles that specify which plugins the AWS JDBC Driver should load. After creating the profile, set the [`wrapperProfileName`](#connection-plugin-manager-parameters) parameter to the name of the created profile.
+An alternative way of loading plugins and providing configuration parameters is to use a configuration profile. You can create custom configuration profiles that specify which plugins the AWS Advanced JDBC Wrapper should load. After creating the profile, set the [`wrapperProfileName`](#connection-plugin-manager-parameters) parameter to the name of the created profile.
This method of loading plugins will most often be used by those who require custom plugins that cannot be loaded with the [`wrapperPlugins`](#connection-plugin-manager-parameters) parameter, or by those who are using preset configurations.
Besides a list of plugins to load and configuration properties, configuration profiles may also include the following items:
@@ -167,19 +167,19 @@ ConfigurationProfileBuilder.from("existingProfileName")
DriverConfigurationProfiles.remove("testProfile");
```
-The AWS JDBC Driver team has gathered and analyzed various user scenarios to create commonly used configuration profiles, or presets, for users. These preset configuration profiles are optimized, profiled, verified and can be used right away. Users can create their own configuration profiles based on the built-in presets as shown above. More details could be found at the [Configuration Presets](./ConfigurationPresets.md) page.
+The AWS Advanced JDBC Wrapper team has gathered and analyzed various user scenarios to create commonly used configuration profiles, or presets, for users. These preset configuration profiles are optimized, profiled, verified and can be used right away. Users can create their own configuration profiles based on the built-in presets as shown above. More details could be found at the [Configuration Presets](./ConfigurationPresets.md) page.
### Executing Custom Code When Initializing a Connection
In some use cases you may need to define a specific configuration for a new driver connection before your application can use it. For instance:
- you might need to run some initial SQL queries when a connection is established, or;
- you might need to check for some additional conditions to determine the initialization configuration required for a particular connection.
-The AWS JDBC Driver allows specifying a special function that can initialize a connection. It can be done with `Driver.setConnectionInitFunc` method. The `resetConnectionInitFunc` method is also available to remove the function.
+The AWS Advanced JDBC Wrapper allows specifying a special function that can initialize a connection. It can be done with `Driver.setConnectionInitFunc` method. The `resetConnectionInitFunc` method is also available to remove the function.
The initialization function is called for all connections, including connections opened by the internal connection pools (see [Using Read Write Splitting Plugin and Internal Connection Pooling](./using-plugins/UsingTheReadWriteSplittingPlugin.md#internal-connection-pooling)). This helps user applications clean up connection sessions that have been altered by previous operations, as returning a connection to a pool will reset the state and retrieving it will call the initialization function again.
> [!WARNING]\
-> Executing CPU and network intensive code in the initialization function may significantly impact the AWS JDBC Driver's overall performance.
+> Executing CPU and network intensive code in the initialization function may significantly impact the AWS Advanced JDBC Wrapper's overall performance.
```java
Driver.setConnectionInitFunc((connection, protocol, hostSpec, props) -> {
@@ -192,7 +192,7 @@ Driver.setConnectionInitFunc((connection, protocol, hostSpec, props) -> {
### List of Available Plugins
-The AWS JDBC Driver has several built-in plugins that are available to use. Please visit the individual plugin page for more details.
+The AWS Advanced JDBC Wrapper has several built-in plugins that are available to use. Please visit the individual plugin page for more details.
| Plugin name | Plugin Code | Database Compatibility | Description | Additional Required Dependencies |
|-------------------------------------------------------------------------------------------------------------------|---------------------------|---------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -273,15 +273,15 @@ repositories {
}
```
-## AWS JDBC Driver for MySQL Migration Guide
+## AWS Advanced JDBC Wrapper for MySQL Migration Guide
**[The Amazon Web Services (AWS) JDBC Driver for MySQL](https://github.com/awslabs/aws-mysql-jdbc)** allows an
application to take advantage of the features of clustered MySQL databases. It is based on and can be used as a drop-in
compatible for the [MySQL Connector/J driver](https://github.com/mysql/mysql-connector-j), and is compatible with all
MySQL deployments.
-The AWS JDBC Driver has the same functionalities as the AWS JDBC Driver for MySQL, as well as additional features such as support for Read/Write Splitting. This
-section highlights the steps required to migrate from the AWS JDBC Driver for MySQL to the AWS JDBC Driver.
+The AWS Advanced JDBC Wrapper has the same functionalities as the AWS Advanced JDBC Wrapper for MySQL, as well as additional features such as support for Read/Write Splitting. This
+section highlights the steps required to migrate from the AWS Advanced JDBC Wrapper for MySQL to the AWS Advanced JDBC Wrapper.
### Replacement Steps
@@ -293,13 +293,13 @@ section highlights the steps required to migrate from the AWS JDBC Driver for My
### Plugins Configuration
-In the AWS JDBC Driver for MySQL, plugins are set by providing a list of connection plugin factories:
+In the AWS Advanced JDBC Wrapper for MySQL, plugins are set by providing a list of connection plugin factories:
```java
"jdbc:mysql:aws://db-identifier.cluster-XYZ.us-east-2.rds.amazonaws.com:3306/db?connectionPluginFactories=com.mysql.cj.jdbc.ha.plugins.AWSSecretsManagerPluginFactory,com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPluginFactory,com.mysql.cj.jdbc.ha.plugins.NodeMonitoringConnectionPluginFactory"
```
-In the AWS JDBC Driver, plugins are set by specifying the plugin codes:
+In the AWS Advanced JDBC Wrapper, plugins are set by specifying the plugin codes:
```java
"jdbc:aws-wrapper:mysql://db-identifier.XYZ.us-east-2.rds.amazonaws.com:3306/db?wrapperPlugins=iam,failover"
@@ -308,14 +308,14 @@ In the AWS JDBC Driver, plugins are set by specifying the plugin codes:
To see the list of available plugins and their associated plugin code, see
the [documentation](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#list-of-available-plugins).
-The AWS JDBC Driver also provides
+The AWS Advanced JDBC Wrapper also provides
the [Read-Write Splitting plugin](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md#read-write-splitting-plugin),
this plugin allows the application to switch the connections between writer and reader instances by calling
the `Connection#setReadOnly` method.
### Example Configurations
-#### Using the IAM Authentication Plugin with AWS JDBC Driver for MySQL
+#### Using the IAM Authentication Plugin with AWS Advanced JDBC Wrapper for MySQL
```java
public static void main(String[] args) throws SQLException {
@@ -332,7 +332,7 @@ public static void main(String[] args) throws SQLException {
}
```
-#### Using the IAM Authentication Plugin with AWS JDBC Driver
+#### Using the IAM Authentication Plugin with AWS Advanced JDBC Wrapper
```java
public static void main(String[] args) throws SQLException {
@@ -350,18 +350,18 @@ public static void main(String[] args) throws SQLException {
}
```
-The IAM Authentication Plugin in the AWS JDBC Driver has extra parameters to support custom endpoints. For more
+The IAM Authentication Plugin in the AWS Advanced JDBC Wrapper has extra parameters to support custom endpoints. For more
information,
-see [How do I use IAM with the AWS Advanced JDBC Driver?](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md#how-do-i-use-iam-with-the-aws-jdbc-driver)
+see [How do I use IAM with the AWS Advanced JDBC Wrapper?](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md#how-do-i-use-iam-with-the-aws-advanced-jdbc-wrapper)
### Secrets Manager Plugin
-The Secrets Manager Plugin in both the AWS JDBC Driver for MySQL and the AWS JDBC Driver uses the same configuration
-parameters. To migrate to the AWS JDBC Driver, simply change
+The Secrets Manager Plugin in both the AWS Advanced JDBC Wrapper for MySQL and the AWS Advanced JDBC Wrapper uses the same configuration
+parameters. To migrate to the AWS Advanced JDBC Wrapper, simply change
the `connectionPluginFactories=com.mysql.cj.jdbc.ha.plugins.AWSSecretsManagerPluginFactory` parameter
to `wrapperPlugins=awsSecretsManager`
-#### Using the AWS Secrets Manager Plugin with AWS JDBC Driver for MySQL
+#### Using the AWS Secrets Manager Plugin with AWS Advanced JDBC Wrapper for MySQL
```java
public static void main(String[] args) throws SQLException {
@@ -378,7 +378,7 @@ public static void main(String[] args) throws SQLException {
}
}
```
-#### Using the AWS Secrets Manager Plugin with AWS JDBC Driver
+#### Using the AWS Secrets Manager Plugin with AWS Advanced JDBC Wrapper
```java
public static void main(String[] args) throws SQLException {
@@ -398,10 +398,10 @@ public static void main(String[] args) throws SQLException {
```
## Enable Logging
-To enable logging in the AWS JDBC Driver, change the `logger=StandardLogger` parameter to `wrapperLoggerLevel=FINEST`
+To enable logging in the AWS Advanced JDBC Wrapper, change the `logger=StandardLogger` parameter to `wrapperLoggerLevel=FINEST`
## Enable Third Party Classes and Packages
-Depending on the requirements of a user's application, the AWS Advanced JDBC Driver performs special handling before and after operating on a database connection. This is achievable by wrapping over relevant data objects.
+Depending on the requirements of a user's application, the AWS Advanced JDBC Wrapper performs special handling before and after operating on a database connection. This is achievable by wrapping over relevant data objects.
Not all data objects require special handling and thus can be left unwrapped. One example being classes from the PGVector package. The driver allows you to specify such classes and packages that should be left intact with no wrapping. If needed, use the following code snippet as an example to register data objects that should be left unwrapped.
@@ -412,6 +412,6 @@ Driver.skipWrappingForType(com.pgvector.PGbit.class);
Driver.skipWrappingForPackage("com.pgvector");
```
-This feature can be used to allow the AWS Advanced JDBC Driver to properly handle popular database extensions like [PGvector](https://github.com/pgvector/pgvector-java) and [PostGIS](https://github.com/postgis/postgis-java).
+This feature can be used to allow the AWS Advanced JDBC Wrapper to properly handle popular database extensions like [PGvector](https://github.com/pgvector/pgvector-java) and [PostGIS](https://github.com/postgis/postgis-java).
Using `Driver.skipWrappingForPackage()` method and using driver configuration parameter `skipWrappingForPackages` are functionally similar. The configuration parameter receives a comma separated list of package names while `Driver.skipWrappingForPackage()` accepts just one package at at time.
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheAwsSecretsManagerPlugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheAwsSecretsManagerPlugin.md
index 9ca6e0787..bd1059a61 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheAwsSecretsManagerPlugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheAwsSecretsManagerPlugin.md
@@ -1,9 +1,9 @@
# AWS Secrets Manager Plugin
-The AWS Advanced JDBC Driver supports usage of database credentials stored as secrets in the [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) through the AWS Secrets Manager Connection Plugin. When you create a new connection with this plugin enabled, the plugin will retrieve the secret and the connection will be created with the credentials inside that secret.
+The AWS Advanced JDBC Wrapper supports usage of database credentials stored as secrets in the [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) through the AWS Secrets Manager Connection Plugin. When you create a new connection with this plugin enabled, the plugin will retrieve the secret and the connection will be created with the credentials inside that secret.
## Enabling the AWS Secrets Manager Connection Plugin
-> :warning: **Note:** To use this plugin, you must include the runtime dependencies [Jackson Databind](https://central.sonatype.com/artifact/com.fasterxml.jackson.core/jackson-databind) and [AWS Secrets Manager](https://central.sonatype.com/artifact/software.amazon.awssdk/secretsmanager) in your project. These parameters are required for the AWS JDBC Driver to pass database credentials to the underlying driver.
+> :warning: **Note:** To use this plugin, you must include the runtime dependencies [Jackson Databind](https://central.sonatype.com/artifact/com.fasterxml.jackson.core/jackson-databind) and [AWS Secrets Manager](https://central.sonatype.com/artifact/software.amazon.awssdk/secretsmanager) in your project. These parameters are required for the AWS Advanced JDBC Wrapper to pass database credentials to the underlying driver.
To enable the AWS Secrets Manager Connection Plugin, add the plugin code `awsSecretsManager` to the [`wrapperPlugins`](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters) value, or to the current [driver profile](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters).
@@ -29,4 +29,4 @@ The plugin assumes that the secret contains the following properties `username`
### Example
[AwsSecretsManagerConnectionPluginPostgresqlExample.java](../../../examples/AWSDriverExample/src/main/java/software/amazon/AwsSecretsManagerConnectionPluginPostgresqlExample.java)
-demonstrates using the AWS Advanced JDBC Driver to make a connection to a PostgreSQL database using credentials fetched from the AWS Secrets Manager.
+demonstrates using the AWS Advanced JDBC Wrapper to make a connection to a PostgreSQL database using credentials fetched from the AWS Secrets Manager.
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheBlueGreenPlugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheBlueGreenPlugin.md
index a85f9ea4f..6fdca42fe 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheBlueGreenPlugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheBlueGreenPlugin.md
@@ -4,7 +4,7 @@
The [Blue/Green Deployment](https://docs.aws.amazon.com/whitepapers/latest/blue-green-deployments/introduction.html) technique enables organizations to release applications by seamlessly shifting traffic between two identical environments running different versions of the application. This strategy effectively mitigates common risks associated with software deployment, such as downtime and limited rollback capability.
-The AWS JDBC Driver leverages the Blue/Green Deployment approach by intelligently managing traffic distribution between blue and green nodes, minimizing the impact of stale DNS data and connectivity disruptions on user applications.
+The AWS Advanced JDBC Wrapper leverages the Blue/Green Deployment approach by intelligently managing traffic distribution between blue and green nodes, minimizing the impact of stale DNS data and connectivity disruptions on user applications.
## Prerequisites
> [!WARNING]\
@@ -50,7 +50,7 @@ During a [Blue/Green switchover](https://docs.aws.amazon.com/AmazonRDS/latest/Us
- Internal security certificates are regenerated to accommodate the new node names
-All factors mentioned above may cause application disruption. The AWS Advanced JDBC Driver aims to minimize the application disruption during Blue/Green switchover by performing the following actions:
+All factors mentioned above may cause application disruption. The AWS Advanced JDBC Wrapper aims to minimize the application disruption during Blue/Green switchover by performing the following actions:
- Actively monitors Blue/Green switchover status and implements appropriate measures to suspend, pass-through, or re-route database traffic
- Prior to Blue/Green switchover initiation, compiles a comprehensive inventory of cluster and instance endpoints for both blue and green nodes along with their corresponding IP addresses
- During the active switchover phase, temporarily suspends execution of JDBC calls to blue nodes, which helps unload database nodes and reduces transaction lag for green nodes, thereby enhancing overall switchover performance
@@ -61,7 +61,7 @@ All factors mentioned above may cause application disruption. The AWS Advanced J
Verify plugin compatibility within your driver configuration using the [compatibility guide](../Compatibility.md).
-## How do I use Blue/Green Deployment Plugin with the AWS JDBC Driver?
+## How do I use Blue/Green Deployment Plugin with the AWS Advanced JDBC Wrapper?
To enable the Blue/Green Deployment functionality, add the plugin code `bg` to the [`wrapperPlugins`](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters) parameter value.
The Blue/Green Deployment Plugin supports the following configuration parameters:
@@ -105,7 +105,7 @@ properties.setProperty("blue-green-monitoring-socketTimeout", "10000");
## Plan your Blue/Green switchover in advance
-To optimize Blue/Green switchover support with the AWS JDBC Driver, advance planning is essential. Please follow these recommended steps:
+To optimize Blue/Green switchover support with the AWS Advanced JDBC Wrapper, advance planning is essential. Please follow these recommended steps:
1. Create a Blue/Green Deployment for your database.
2. Configure your application by incorporating the `bg` plugin along with any additional parameters of your choice, then deploy your application to the corresponding environment.
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheCustomEndpointPlugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheCustomEndpointPlugin.md
index 612dbdf2c..3fd6ad54b 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheCustomEndpointPlugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheCustomEndpointPlugin.md
@@ -9,7 +9,7 @@ Verify plugin compatibility within your driver configuration using the [compatib
- [AWS Java SDK RDS v2.7.x](https://central.sonatype.com/artifact/software.amazon.awssdk/rds)
- Note: The above dependencies may have transitive dependencies that are also required (ex. AWS Java SDK RDS requires [AWS Java SDK Core](https://central.sonatype.com/artifact/software.amazon.awssdk/aws-core/)). If you are not using a package manager such as Maven or Gradle, please refer to Maven Central to determine these transitive dependencies.
-## How to use the Custom Endpoint Plugin with the AWS JDBC Driver
+## How to use the Custom Endpoint Plugin with the AWS Advanced JDBC Wrapper
### Enabling the Custom Endpoint Plugin
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheFailover2Plugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheFailover2Plugin.md
index 01c3db395..a00399b3f 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheFailover2Plugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheFailover2Plugin.md
@@ -1,5 +1,5 @@
# Failover Plugin v2
-The AWS Advanced JDBC Driver uses the Failover Plugin v2 to provide minimal downtime in the event of a DB instance failure. The plugin is the next version (v2) of the [Failover Plugin](./UsingTheFailoverPlugin.md) and unless explicitly stated otherwise, most of the information and suggestions for the Failover Plugin are applicable to the Failover Plugin v2.
+The AWS Advanced JDBC Wrapper uses the Failover Plugin v2 to provide minimal downtime in the event of a DB instance failure. The plugin is the next version (v2) of the [Failover Plugin](./UsingTheFailoverPlugin.md) and unless explicitly stated otherwise, most of the information and suggestions for the Failover Plugin are applicable to the Failover Plugin v2.
## Differences between the Failover Plugin and the Failover Plugin v2
@@ -43,7 +43,7 @@ With the `failover2` plugin:
- The `MonitoringRdsHostListProvider` continues topology monitoring at an increased rate to ensure all cluster nodes appear in the topology.
## Using the Failover Plugin v2
-The Failover Plugin v2 will be enabled by default if the [`wrapperPlugins`](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters) value is not specified. If you would like to override the default plugins, you can explicitly include the failover plugin v2 in your list of plugins by adding the plugin code `failover2` to the [`wrapperPlugins`](../UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) value, or by adding it to the current [driver profile](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters). After you load the plugin, the failover feature will be enabled.
+The Failover Plugin v2 will be enabled by default if the [`wrapperPlugins`](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters) value is not specified. If you would like to override the default plugins, you can explicitly include the failover plugin v2 in your list of plugins by adding the plugin code `failover2` to the [`wrapperPlugins`](../UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) value, or by adding it to the current [driver profile](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters). After you load the plugin, the failover feature will be enabled.
Please refer to the [failover configuration guide](../FailoverConfigurationGuide.md) for tips to keep in mind when using the failover plugin.
@@ -53,13 +53,13 @@ Please refer to the [failover configuration guide](../FailoverConfigurationGuide
Verify plugin compatibility within your driver configuration using the [compatibility guide](../Compatibility.md).
### Failover Plugin v2 Configuration Parameters
-In addition to the parameters that you can configure for the underlying driver, you can pass the following parameters for the AWS JDBC Driver through the connection URL to specify additional failover behavior.
+In addition to the parameters that you can configure for the underlying driver, you can pass the following parameters for the AWS Advanced JDBC Wrapper through the connection URL to specify additional failover behavior.
| Parameter | Value | Required | Description | Default Value |
|---------------------------------------|:--------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `failoverMode` | String | No | Defines a mode for failover process. Failover process may prioritize nodes with different roles and connect to them. Possible values:
- `strict-writer` - Failover process follows writer node and connects to a new writer when it changes.
- `reader-or-writer` - During failover, the driver tries to connect to any available/accessible reader node. If no reader is available, the driver will connect to a writer node. This logic mimics the logic of the Aurora read-only cluster endpoint.
- `strict-reader` - During failover, the driver tries to connect to any available reader node. If no reader is available, the driver raises an error. Reader failover to a writer node will only be allowed for single-node clusters. This logic mimics the logic of the Aurora read-only cluster endpoint.
If this parameter is omitted, default value depends on connection url. For Aurora read-only cluster endpoint, it's set to `reader-or-writer`. Otherwise, it's `strict-writer`. | Default value depends on connection url. For Aurora read-only cluster endpoint, it's set to `reader-or-writer`. Otherwise, it's `strict-writer`. |
| `clusterInstanceHostPattern` | String | If connecting using an IP address or custom domain URL: Yes
Otherwise: No | This parameter is not required unless connecting to an AWS RDS cluster via an IP address or custom domain URL. In those cases, this parameter specifies the cluster instance DNS pattern that will be used to build a complete instance endpoint. A "?" character in this pattern should be used as a placeholder for the DB instance identifiers of the instances in the cluster. See [here](#host-pattern) for more information.
Example: `?.my-domain.com`, `any-subdomain.?.my-domain.com:9999`
Use case Example: If your cluster instance endpoints follow this pattern:`instanceIdentifier1.customHost`, `instanceIdentifier2.customHost`, etc. and you want your initial connection to be to `customHost:1234`, then your connection string should look like this: `jdbc:aws-wrapper:mysql://customHost:1234/test?clusterInstanceHostPattern=?.customHost` | If the provided connection string is not an IP address or custom domain, the JDBC Driver will automatically acquire the cluster instance host pattern from the customer-provided connection string. |
-| `clusterTopologyRefreshRateMs` | Integer | No | Cluster topology refresh rate in milliseconds when a cluster is not in failover. It refers to the regular, slow monitoring rate explained above. | `30000` |
+| `clusterTopologyRefreshRateMs` | Integer | No | Cluster topology refresh rate in milliseconds when a cluster is not in failover. It refers to the regular, slow monitoring rate ex``plained above. | `30000` |
| `failoverTimeoutMs` | Integer | No | Maximum allowed time in milliseconds to attempt reconnecting to a new writer or reader instance after a cluster failover is initiated. | `300000` |
| `clusterTopologyHighRefreshRateMs` | Integer | No | Interval of time in milliseconds to wait between attempts to update cluster topology after the writer has come back online following a failover event. It corresponds to the increased monitoring rate described earlier. Usually, the topology monitoring component uses this increased monitoring rate for 30s after a new writer was detected. | `100` |
| `failoverReaderHostSelectorStrategy` | String | No | Strategy used to select a reader node during failover. For more information on the available reader selection strategies, see this [table](../ReaderSelectionStrategies.md). | `random` |
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md
index 73b246fb6..0fd47cb2f 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md
@@ -1,11 +1,11 @@
# Failover Plugin
-In an Amazon Aurora database (DB) cluster, failover is a mechanism by which Aurora automatically repairs the DB cluster status when a primary DB instance becomes unavailable. It achieves this goal by electing an Aurora Replica to become the new primary DB instance, so that the DB cluster can provide maximum availability to a primary read-write DB instance. The AWS Advanced JDBC Driver uses the Failover Plugin to coordinate with this behavior in order to provide minimal downtime in the event of a DB instance failure.
+In an Amazon Aurora database (DB) cluster, failover is a mechanism by which Aurora automatically repairs the DB cluster status when a primary DB instance becomes unavailable. It achieves this goal by electing an Aurora Replica to become the new primary DB instance, so that the DB cluster can provide maximum availability to a primary read-write DB instance. The AWS Advanced JDBC Wrapper uses the Failover Plugin to coordinate with this behavior in order to provide minimal downtime in the event of a DB instance failure.
-## The AWS Advanced JDBC Driver Failover Process
+## The AWS Advanced JDBC Wrapper Failover Process

-The figure above provides a simplified overview of how the AWS Advanced JDBC Driver handles an Aurora failover encounter. Starting at the top of the diagram, an application with the AWS Advanced JDBC Driver on its class path uses the JDBC Driver to get a logical connection to an Aurora database.
+The figure above provides a simplified overview of how the AWS Advanced JDBC Wrapper handles an Aurora failover encounter. Starting at the top of the diagram, an application with the AWS Advanced JDBC Wrapper on its class path uses the JDBC Driver to get a logical connection to an Aurora database.
In this example, the application requests a connection using the Aurora DB cluster endpoint and is returned with a logical connection that is physically connected to the primary DB instance in the DB cluster, DB instance C. By design, details about which specific DB instance the physical connection is connected to have been abstracted away.
@@ -16,19 +16,19 @@ If the primary DB instance has failed, the JDBC Driver attempts to use its inter
At this point, the JDBC Driver will connect to the new primary DB instance and return control to the application by raising a FailoverSuccessSQLException with SQLState 08S02 so you can reconfigure the session state as needed. Although the DNS endpoint for the DB cluster might not yet resolve the new primary DB instance, the JDBC Driver has already discovered this new DB instance during its failover process, and will be directly connected to it when the application continues executing statements. In this way the JDBC Driver provides a faster way to reconnect to a newly promoted DB instance, thus increasing the availability of the DB cluster.
## Using the Failover Plugin
-The Failover Plugin v1 will **NOT** be enabled by default. Instead, the newer [Failover Plugin v2](./UsingTheFailover2Plugin.md) will be enabled by default if the [`wrapperPlugins`](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters) value is not specified. If you would like to use the Failover Plugin v1 instead of v2, it must be explicitly included by adding the plugin code `failover` to the [`wrapperPlugins`](../UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) value, or by adding it to the current [driver profile](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters). After you load the plugin, the failover feature will be enabled by default and the enableClusterAwareFailover parameter will be set to true.
Please refer to the [failover configuration guide](../FailoverConfigurationGuide.md) for tips to keep in mind when using the failover plugin.
+The Failover Plugin v1 will **NOT** be enabled by default. Instead, the newer [Failover Plugin v2](./UsingTheFailover2Plugin.md) will be enabled by default if the [`wrapperPlugins`](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters) value is not specified. If you would like to use the Failover Plugin v1 instead of v2, it must be explicitly included by adding the plugin code `failover` to the [`wrapperPlugins`](../UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) value, or by adding it to the current [driver profile](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters). After you load the plugin, the failover feature will be enabled by default and the enableClusterAwareFailover parameter will be set to true.
Please refer to the [failover configuration guide](../FailoverConfigurationGuide.md) for tips to keep in mind when using the failover plugin.
Verify plugin compatibility within your driver configuration using the [compatibility guide](../Compatibility.md).
### Failover Parameters
-In addition to the parameters that you can configure for the underlying driver, you can pass the following parameters to the AWS JDBC Driver through the connection URL to specify additional failover behavior.
+In addition to the parameters that you can configure for the underlying driver, you can pass the following parameters to the AWS Advanced JDBC Wrapper through the connection URL to specify additional failover behavior.
| Parameter | Value | Required | Description | Default Value |
|----------------------------------------|:--------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `failoverMode` | String | No | Defines a mode for failover process. Failover process may prioritize nodes with different roles and connect to them. Possible values:
- `strict-writer` - Failover process follows writer node and connects to a new writer when it changes.
- `reader-or-writer` - During failover, the driver tries to connect to any available/accessible reader node. If no reader is available, the driver will connect to a writer node. This logic mimics the logic of the Aurora read-only cluster endpoint.
- `strict-reader` - During failover, the driver tries to connect to any available reader node. If no reader is available, the driver raises an error. Reader failover to a writer node will only be allowed for single-node clusters. This logic mimics the logic of the Aurora read-only cluster endpoint.
If this parameter is omitted, default value depends on connection url. For Aurora read-only cluster endpoint, it's set to `reader-or-writer`. Otherwise, it's `strict-writer`. | Default value depends on connection url. For Aurora read-only cluster endpoint, it's set to `reader-or-writer`. Otherwise, it's `strict-writer`. |
| `clusterId` | `String` | If connecting using a non-standard RDS URL (e.g. an IP address, custom endpoint, rds proxy, or custom domain URL): Yes
Otherwise: No
:warning:If `clusterId` is omitted when using a non-standard RDS URL, you may experience various issues. | A unique identifier for the cluster. Connections with the same cluster id share a cluster topology cache. | None |
| `clusterInstanceHostPattern` | String | If connecting using an IP address or custom domain URL: Yes
Otherwise: No | This parameter is not required unless connecting to an AWS RDS cluster via an IP address or custom domain URL. In those cases, this parameter specifies the cluster instance DNS pattern that will be used to build a complete instance endpoint. A "?" character in this pattern should be used as a placeholder for the DB instance identifiers of the instances in the cluster. See [here](#host-pattern) for more information.
Example: `?.my-domain.com`, `any-subdomain.?.my-domain.com:9999`
Use case Example: If your cluster instance endpoints follow this pattern:`instanceIdentifier1.customHost`, `instanceIdentifier2.customHost`, etc. and you want your initial connection to be to `customHost:1234`, then your connection string should look like this: `jdbc:aws-wrapper:mysql://customHost:1234/test?clusterInstanceHostPattern=?.customHost` | If the provided connection string is not an IP address or custom domain, the JDBC Driver will automatically acquire the cluster instance host pattern from the customer-provided connection string. |
-| `enableClusterAwareFailover` | Boolean | No | Set to `true` to enable the fast failover behavior offered by the AWS Advanced JDBC Driver. Set to `false` for simple JDBC connections that do not require fast failover functionality. | `true` |
+| `enableClusterAwareFailover` | Boolean | No | Set to `true` to enable the fast failover behavior offered by the AWS Advanced JDBC Wrapper. Set to `false` for simple JDBC connections that do not require fast failover functionality. | `true` |
| `failoverClusterTopologyRefreshRateMs` | Integer | No | Cluster topology refresh rate in milliseconds during a writer failover process. During the writer failover process, cluster topology may be refreshed at a faster pace than normal to speed up discovery of the newly promoted writer. | `2000` |
| `failoverReaderConnectTimeoutMs` | Integer | No | Maximum allowed time in milliseconds to attempt to connect to a reader instance during a reader failover process. | `30000` |
| `failoverTimeoutMs` | Integer | No | Maximum allowed time in milliseconds to attempt reconnecting to a new writer or reader instance after a cluster failover is initiated. | `300000` |
@@ -39,7 +39,7 @@ In addition to the parameters that you can configure for the underlying driver,
| ~~`enableFailoverStrictReader`~~ | Boolean | No | This parameter is no longer available and, if specified, it will be ignored by the driver. See `failoverMode` (`reader-or-writer` or `strict-reader`) for more details. | |
## Host Pattern
-When connecting to Aurora clusters, the [`clusterInstanceHostPattern`](#failover-parameters) parameter is required if the connection string does not provide enough information about the database cluster domain name. If the Aurora cluster endpoint is used directly, the AWS JDBC Driver will recognize the standard Aurora domain name and can re-build a proper Aurora instance name when needed. In cases where the connection string uses an IP address, a custom domain name, or localhost, the driver won't know how to build a proper domain name for a database instance endpoint. For example, if a custom domain was being used and the cluster instance endpoints followed a pattern of `instanceIdentifier1.customHost`, `instanceIdentifier2.customHost`, etc., the driver would need to know how to construct the instance endpoints using the specified custom domain. Since there isn't enough information from the custom domain alone to create the instance endpoints, you should set the `clusterInstanceHostPattern` to `?.customHost`, making the connection string `jdbc:aws-wrapper:postgresql://customHost:1234/test?clusterInstanceHostPattern=?.customHost`. Refer to [this diagram](../../images/failover_behavior.png) about AWS JDBC Driver behavior during failover for different connection URLs and more details and examples.
+When connecting to Aurora clusters, the [`clusterInstanceHostPattern`](#failover-parameters) parameter is required if the connection string does not provide enough information about the database cluster domain name. If the Aurora cluster endpoint is used directly, the AWS Advanced JDBC Wrapper will recognize the standard Aurora domain name and can re-build a proper Aurora instance name when needed. In cases where the connection string uses an IP address, a custom domain name, or localhost, the driver won't know how to build a proper domain name for a database instance endpoint. For example, if a custom domain was being used and the cluster instance endpoints followed a pattern of `instanceIdentifier1.customHost`, `instanceIdentifier2.customHost`, etc., the driver would need to know how to construct the instance endpoints using the specified custom domain. Since there isn't enough information from the custom domain alone to create the instance endpoints, you should set the `clusterInstanceHostPattern` to `?.customHost`, making the connection string `jdbc:aws-wrapper:postgresql://customHost:1234/test?clusterInstanceHostPattern=?.customHost`. Refer to [this diagram](../../images/failover_behavior.png) about AWS Advanced JDBC Wrapper behavior during failover for different connection URLs and more details and examples.
## Failover Exception Codes
@@ -50,17 +50,17 @@ When connecting to Aurora clusters, the [`clusterInstanceHostPattern`](#failover
| 08007 - Transaction Resolution Unknown | Yes | Yes | Yes | Yes | Yes | Yes |
### 08001 - Unable to Establish SQL Connection
-When the AWS JDBC Driver throws a FailoverFailedSQLException, the original connection has failed, and the AWS JDBC Driver tried to failover to a new instance, but was unable to. There are various reasons this may happen: no nodes were available, a network failure occurred, and so on. In this scenario, please wait until the server is up or other problems are solved. (Exception will be thrown.)
+When the AWS Advanced JDBC Wrapper throws a FailoverFailedSQLException, the original connection has failed, and the AWS Advanced JDBC Wrapper tried to failover to a new instance, but was unable to. There are various reasons this may happen: no nodes were available, a network failure occurred, and so on. In this scenario, please wait until the server is up or other problems are solved. (Exception will be thrown.)
### 08S02 - Communication Link
-When the AWS JDBC Driver throws a FailoverSuccessSQLException, the original connection has failed while outside a transaction, and the AWS JDBC Driver successfully failed over to another available instance in the cluster. However, any session state configuration of the initial connection is now lost. In this scenario, you should:
+When the AWS Advanced JDBC Wrapper throws a FailoverSuccessSQLException, the original connection has failed while outside a transaction, and the AWS Advanced JDBC Wrapper successfully failed over to another available instance in the cluster. However, any session state configuration of the initial connection is now lost. In this scenario, you should:
- Reuse and reconfigure the original connection (e.g., reconfigure session state to be the same as the original connection).
- Repeat that query that was executed when the connection failed, and continue work as desired.
### 08007 - Transaction Resolution Unknown
-When the AWS JDBC Driver throws a TransactionStateUnknownSQLException, the original connection has failed within a transaction. In this scenario, the JDBC wrapper first attempts to rollback the transaction and then fails over to another available instance in the cluster. Note that the rollback might be unsuccessful as the initial connection may be broken at the time that the JDBC wrapper recognizes the problem. Note also that any session state configuration of the initial connection is now lost. In this scenario, you should:
+When the AWS Advanced JDBC Wrapper throws a TransactionStateUnknownSQLException, the original connection has failed within a transaction. In this scenario, the JDBC wrapper first attempts to rollback the transaction and then fails over to another available instance in the cluster. Note that the rollback might be unsuccessful as the initial connection may be broken at the time that the JDBC wrapper recognizes the problem. Note also that any session state configuration of the initial connection is now lost. In this scenario, you should:
- Reuse and reconfigure the original connection (e.g: reconfigure session state to be the same as the original connection).
@@ -71,19 +71,19 @@ When the AWS JDBC Driver throws a TransactionStateUnknownSQLException, the origi
#### Sample Code
[PostgreSQL Failover Sample Code](./../../../examples/AWSDriverExample/src/main/java/software/amazon/PgFailoverSample.java)
->### :warning: Warnings About Proper Usage of the AWS Advanced JDBC Driver
+>### :warning: Warnings About Proper Usage of the AWS Advanced JDBC Wrapper
>1. A common practice when using JDBC drivers is to wrap invocations against a Connection object in a try-catch block, and dispose of the Connection object if an Exception is hit. If this practice is left unaltered, the application will lose the fast-failover functionality offered by the JDBC Driver. When failover occurs, the JDBC Driver internally establishes a ready-to-use connection inside the original Connection object before throwing an exception to the user. If this Connection object is disposed of, the newly established connection will be thrown away. The correct practice is to check the SQL error code of the exception and reuse the Connection object if the error code indicates successful failover. The [PostgreSQL Failover Sample Code](./../../../examples/AWSDriverExample/src/main/java/software/amazon/PgFailoverSample.java) demonstrates this practice. See the section about [Failover Exception Codes](#failover-exception-codes) for more details.
>2. We highly recommended that you use the cluster and read-only cluster endpoints instead of the direct instance endpoints of your Aurora cluster, unless you are confident in your application's use of instance endpoints. Although the JDBC Driver will correctly failover to the new writer instance when using instance endpoints, use of these endpoints is discouraged because individual instances can spontaneously change reader/writer status when failover occurs. The JDBC Driver will always connect directly to the instance specified if an instance endpoint is provided, so a write-safe connection cannot be assumed if the application uses instance endpoints.
## Connection Pooling
-The AWS Advanced JDBC Driver is compatible with [connection pooling](../DataSource.md#Using-the-AwsWrapperDataSource-with-Connection-Pooling-Frameworks), but some connection pooling libraries may contain additional behaviour when dealing with SQL exceptions. This means the exceptions created by the AWS JDBC Driver may not be recognized, and depending on the connection pool, connections may be closed prematurely due to the unrecognized SQL exceptions. Users are recommended to investigate the connection pooling library of their choice, and to implement any required additional code to allow the connection pool to accept the exceptions raised by the AWS JDBC Driver.
+The AWS Advanced JDBC Wrapper is compatible with [connection pooling](../DataSource.md#Using-the-AwsWrapperDataSource-with-Connection-Pooling-Frameworks), but some connection pooling libraries may contain additional behaviour when dealing with SQL exceptions. This means the exceptions created by the AWS Advanced JDBC Wrapper may not be recognized, and depending on the connection pool, connections may be closed prematurely due to the unrecognized SQL exceptions. Users are recommended to investigate the connection pooling library of their choice, and to implement any required additional code to allow the connection pool to accept the exceptions raised by the AWS Advanced JDBC Wrapper.
### HikariCP
The failover plugin throws failover-related exceptions that need to be handled explicitly by HikariCP,
otherwise connections will be closed immediately after failover.
When using HikariCP with the failover plugin, you need to provide a custom exception override class.
-The AWS JDBC Driver provides a custom exception override class for HikariCP; to use it,
+The AWS Advanced JDBC Wrapper provides a custom exception override class for HikariCP; to use it,
configure the HikariDataSource as follows:
```java
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheFederatedAuthPlugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheFederatedAuthPlugin.md
index ced3434c8..25bd73445 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheFederatedAuthPlugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheFederatedAuthPlugin.md
@@ -27,7 +27,7 @@ In the case of AD FS, the user signs into the AD FS sign in page. This generates
Verify plugin compatibility within your driver configuration using the [compatibility guide](../Compatibility.md).
### Bundled Uber JAR
-Included in AWS JDBC Driver release, is an Uber JAR that bundles the AWS JDBC Driver and all the package dependencies needed to use the Federated Authentication Plugin.
+Included in AWS Advanced JDBC Wrapper release, is an Uber JAR that bundles the AWS Advanced JDBC Wrapper and all the package dependencies needed to use the Federated Authentication Plugin.
It is suffixed with `-bundle-federated-auth`.
This JAR is a drop-in ready solution and is **recommended for customers who do not have an automated package manager like Maven or Gradle**.
@@ -41,7 +41,7 @@ If you would like to download and install the bundled Uber JAR, follow these [in
> [!NOTE]\
> The bundled Uber JAR may trigger warnings of duplicate entries in the JAR Manifest File. This is because the bundle Uber JAR Manifest file also includes the JAR Manifest file of its dependencies, and as a result will trigger warnings.
-## How to use the Federated Authentication Plugin with the AWS JDBC Driver
+## How to use the Federated Authentication Plugin with the AWS Advanced JDBC Wrapper
### Enabling the Federated Authentication Plugin
Note: AWS IAM database authentication is needed to use the Federated Authentication Plugin. This is because after the plugin acquires the authentication token (ex. SAML Assertion in the case of AD FS), the authentication token is then used to acquire an AWS IAM token. The AWS IAM token is then subsequently used to access the database.
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md
index 5e0cc4802..89a117869 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md
@@ -24,10 +24,10 @@ Although these alternatives are available, EFM is more configurable than simple
This option is useful when a user application executes quick statements that run for predictable lengths of time. In this case, the network timeout should be set to a value such as the 95th to 99th percentile. One way to do this is with the `setNetworkTimeout` method.
#### TCP Keepalive
-This option is useful because it is built into the TCP protocol. How you enable it depends on the underlying driver provided to the AWS JDBC Driver. For example, to enable TCP Keepalive with an underlying PostgreSQL driver, you will need to set the property `tcpKeepAlive` to `true`. TCP Keepalive settings, which are similar to some Enhanced Failure Monitoring parameters, are all configurable. However, this is specific to operating systems, so you should verify what your system needs before configuring TCP Keepalive on your system. See [this page](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.BestPractices.FastFailover.html) for more information on how to set TCP Keepalive parameters.
+This option is useful because it is built into the TCP protocol. How you enable it depends on the underlying driver provided to the AWS Advanced JDBC Wrapper. For example, to enable TCP Keepalive with an underlying PostgreSQL driver, you will need to set the property `tcpKeepAlive` to `true`. TCP Keepalive settings, which are similar to some Enhanced Failure Monitoring parameters, are all configurable. However, this is specific to operating systems, so you should verify what your system needs before configuring TCP Keepalive on your system. See [this page](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.BestPractices.FastFailover.html) for more information on how to set TCP Keepalive parameters.
### Enabling the Host Monitoring Connection Plugin
-Enhanced Failure Monitoring will be enabled by default enabled if the [`wrapperPlugins`](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters) value is not specified. The Host Monitoring Connection Plugin can also be explicitly included by adding the plugin code `efm` to the [`wrapperPlugins`](../UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters) value, or by adding it to the current [driver profile](../UsingTheJdbcDriver.md#aws-advanced-jdbc-driver-parameters). Enhanced Failure Monitoring is enabled by default when the Host Monitoring Connection Plugin is loaded, but it can be disabled with the parameter `failureDetectionEnabled` set to `false`.
+Enhanced Failure Monitoring will be enabled by default enabled if the [`wrapperPlugins`](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters) value is not specified. The Host Monitoring Connection Plugin can also be explicitly included by adding the plugin code `efm` to the [`wrapperPlugins`](../UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters) value, or by adding it to the current [driver profile](../UsingTheJdbcDriver.md#aws-advanced-jdbc-wrapper-parameters). Enhanced Failure Monitoring is enabled by default when the Host Monitoring Connection Plugin is loaded, but it can be disabled with the parameter `failureDetectionEnabled` set to `false`.
> :warning: **Note:** When loading the Host Monitoring Connection Plugin, the order plugins are loaded in matters. We recommend that you load the Host Monitoring Connection Plugin at the end (or as close to the end) as possible. When used in conjunction with the Failover Connection Plugin, the Host Monitoring Connection Plugin must be loaded after the Failover Connection Plugin. For example, when loading plugins with the `wrapperPlugins` parameter, the parameter value should be `failover,...,efm`.
>
@@ -69,10 +69,10 @@ properties.setProperty("monitoring-socketTimeout", "10");
>
> The Host Monitoring Connection Plugin does not have default timeout values such as `connectTimeout` or `socketTimeout` since these values are driver specific. Most JDBC drivers use 0 as the default timeout value. If you **do not** override the default timeout value, the Host Monitoring Connection Plugin may wait forever to establish a monitoring connection in the event where the database node is unavailable.
->### :warning: Warnings About Usage of the AWS Advanced JDBC Driver with RDS Proxy
+>### :warning: Warnings About Usage of the AWS Advanced JDBC Wrapper with RDS Proxy
> We recommend you either disable the Host Monitoring Connection Plugin or avoid using RDS Proxy endpoints when the Host Monitoring Connection Plugin is active.
>
-> Although using RDS Proxy endpoints with the AWS Advanced JDBC Driver with Enhanced Failure Monitoring doesn't cause any critical issues, we don't recommend this approach. The main reason is that RDS Proxy transparently re-routes requests to a single database instance. RDS Proxy decides which database instance is used based on many criteria (on a per-request basis). Switching between different instances makes the Host Monitoring Connection Plugin useless in terms of instance health monitoring because the plugin will be unable to identify which instance it's connected to, and which one it's monitoring. This could result in false positive failure detections. At the same time, the plugin will still proactively monitor network connectivity to RDS Proxy endpoints and report outages back to a user application if they occur.
+> Although using RDS Proxy endpoints with the AWS Advanced JDBC Wrapper with Enhanced Failure Monitoring doesn't cause any critical issues, we don't recommend this approach. The main reason is that RDS Proxy transparently re-routes requests to a single database instance. RDS Proxy decides which database instance is used based on many criteria (on a per-request basis). Switching between different instances makes the Host Monitoring Connection Plugin useless in terms of instance health monitoring because the plugin will be unable to identify which instance it's connected to, and which one it's monitoring. This could result in false positive failure detections. At the same time, the plugin will still proactively monitor network connectivity to RDS Proxy endpoints and report outages back to a user application if they occur.
# Host Monitoring Plugin v2
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md
index d76d7f503..ee56dbc60 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md
@@ -23,12 +23,12 @@ This plugin requires valid AWS credentials. See more details at [AWS Credentials
Verify plugin compatibility within your driver configuration using the [compatibility guide](../Compatibility.md).
## AWS IAM Database Authentication
-The AWS JDBC Driver supports Amazon AWS Identity and Access Management (IAM) authentication. When using AWS IAM database authentication, the host URL must be a valid Amazon endpoint, and not a custom domain or an IP address.
+The AWS Advanced JDBC Wrapper supports Amazon AWS Identity and Access Management (IAM) authentication. When using AWS IAM database authentication, the host URL must be a valid Amazon endpoint, and not a custom domain or an IP address.
ie. `db-identifier.cluster-XYZ.us-east-2.rds.amazonaws.com`
IAM database authentication use is limited to certain database engines. For more information on limitations and recommendations, please [review the IAM documentation](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html).
-## How do I use IAM with the AWS JDBC Driver?
+## How do I use IAM with the AWS Advanced JDBC Wrapper?
1. Enable AWS IAM database authentication on an existing database or create a new database with AWS IAM database authentication on the AWS RDS Console:
1. If needed, review the documentation about [creating a new database](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html).
2. If needed, review the documentation about [modifying an existing database](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html).
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheLimitlessConnectionPlugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheLimitlessConnectionPlugin.md
index 6c4213f36..da4b5da94 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheLimitlessConnectionPlugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheLimitlessConnectionPlugin.md
@@ -3,7 +3,7 @@
## What is Amazon Aurora Limitless Database?
Amazon Aurora Limitless Database is a new type of database that can horizontally scale to handle millions of write transactions per second and manage petabytes of data.
-Users will be able to use the AWS JDBC Driver with Aurora Limitless Databases and optimize their experience using the Limitless Connection Plugin.
+Users will be able to use the AWS Advanced JDBC Wrapper with Aurora Limitless Databases and optimize their experience using the Limitless Connection Plugin.
To learn more about Aurora Limitless Database, see the [Amazon Aurora Limitless documentation](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/limitless.html).
## Why use the Limitless Connection Plugin?
@@ -17,7 +17,7 @@ The Limitless Connection Plugin achieves this with a monitoring thread that peri
When a new connection is made, the plugin directs the connection to a transaction router selected from the cache using a weighted round-robin strategy.
Routers with a higher load are assigned a lower weight, and routers with a lower load are assigned a higher weight.
-## How to use the Limitless Connection Plugin with the AWS JDBC Driver
+## How to use the Limitless Connection Plugin with the AWS Advanced JDBC Wrapper
To enable the Limitless Connection Plugin, add the plugin code `limitless` to the [`wrapperPlugins`](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters) value, or to the current [driver profile](../UsingTheJdbcDriver.md#connection-plugin-manager-parameters).
The URL used to connect to a limitless database is the DB shard group URL.
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheOktaAuthPlugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheOktaAuthPlugin.md
index a9638b637..40e28a162 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheOktaAuthPlugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheOktaAuthPlugin.md
@@ -27,7 +27,7 @@ In the case of AD FS, the user signs into the AD FS sign in page. This generates
Verify plugin compatibility within your driver configuration using the [compatibility guide](../Compatibility.md).
-## How to use the Okta Authentication Plugin with the AWS JDBC Driver
+## How to use the Okta Authentication Plugin with the AWS Advanced JDBC Wrapper
### Enabling the Okta Authentication Plugin
> [!NOTE]\
diff --git a/docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md b/docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md
index bf78c3351..743d0e07a 100644
--- a/docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md
+++ b/docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md
@@ -118,9 +118,9 @@ Spring applications are encouraged to use configuration profiles and presets opt
## Example
-[ReadWriteSplittingPostgresExample.java](../../../examples/AWSDriverExample/src/main/java/software/amazon/ReadWriteSplittingPostgresExample.java) demonstrates how to enable and configure Read/Write Splitting with the AWS JDBC Driver.
+[ReadWriteSplittingPostgresExample.java](../../../examples/AWSDriverExample/src/main/java/software/amazon/ReadWriteSplittingPostgresExample.java) demonstrates how to enable and configure Read/Write Splitting with the AWS Advanced JDBC Wrapper.
-[SpringHibernateBalancedReaderOneDataSourceExample](../../../examples/SpringHibernateBalancedReaderOneDataSourceExample/README.md) demonstrates how to enable and configure Read/Write Splitting plugin with the AWS JDBC Driver. This example application uses a configuration with internal connection pooling and provides a load-balanced reader connection according to a specified reader selection strategy. `@Transactional(readOnly = True)` annotations in the code help the `Read/Write Splitting Plugin` switch between datasources.
+[SpringHibernateBalancedReaderOneDataSourceExample](../../../examples/SpringHibernateBalancedReaderOneDataSourceExample/README.md) demonstrates how to enable and configure Read/Write Splitting plugin with the AWS Advanced JDBC Wrapper. This example application uses a configuration with internal connection pooling and provides a load-balanced reader connection according to a specified reader selection strategy. `@Transactional(readOnly = True)` annotations in the code help the `Read/Write Splitting Plugin` switch between datasources.
-[SpringHibernateBalancedReaderTwoDataSourceExample](../../../examples/SpringHibernateBalancedReaderTwoDataSourceExample/README.md) demonstrates how to enable and configure Read/Write Splitting plugin with the AWS JDBC Driver. This example application uses a configuration with two Spring datasources, where each datasource uses internal connection pooling. The example application provides a load-balanced reader connection according to a specified reader selection strategy. The example application does not use the `Read/Write Splitting Plugin`. Switching between the writer datasource and reader datasource occurs with the help of the `@WithLoadBalancedReaderDataSource` annotation.
+[SpringHibernateBalancedReaderTwoDataSourceExample](../../../examples/SpringHibernateBalancedReaderTwoDataSourceExample/README.md) demonstrates how to enable and configure Read/Write Splitting plugin with the AWS Advanced JDBC Wrapper. This example application uses a configuration with two Spring datasources, where each datasource uses internal connection pooling. The example application provides a load-balanced reader connection according to a specified reader selection strategy. The example application does not use the `Read/Write Splitting Plugin`. Switching between the writer datasource and reader datasource occurs with the help of the `@WithLoadBalancedReaderDataSource` annotation.
diff --git a/examples/AWSDriverExample/src/main/java/software/amazon/DatasourceExample.java b/examples/AWSDriverExample/src/main/java/software/amazon/DatasourceExample.java
index a884edf4e..7f8e23261 100644
--- a/examples/AWSDriverExample/src/main/java/software/amazon/DatasourceExample.java
+++ b/examples/AWSDriverExample/src/main/java/software/amazon/DatasourceExample.java
@@ -40,7 +40,7 @@ public static void main(String[] args) throws SQLException {
ds.setDatabase("employees");
ds.setServerPort("5432");
- // Configure the driver-specific and AWS JDBC Driver properties (optional):
+ // Configure the driver-specific and AWS Advanced JDBC Wrapper properties (optional):
Properties targetDataSourceProps = new Properties();
// Alternatively, instead of using the methods above to configure the basic data source information,
@@ -52,7 +52,7 @@ public static void main(String[] args) throws SQLException {
// Configure any driver-specific properties:
targetDataSourceProps.setProperty("ssl", "true");
- // Configure any AWS JDBC Driver properties:
+ // Configure any AWS Advanced JDBC Wrapper properties:
targetDataSourceProps.setProperty("wrapperLoggerLevel", "ALL");
ds.setTargetDataSourceProperties(targetDataSourceProps);
diff --git a/examples/AWSDriverExample/src/main/java/software/amazon/LimitlessPostgresqlExample.java b/examples/AWSDriverExample/src/main/java/software/amazon/LimitlessPostgresqlExample.java
index 1fb66af98..67a76ea94 100644
--- a/examples/AWSDriverExample/src/main/java/software/amazon/LimitlessPostgresqlExample.java
+++ b/examples/AWSDriverExample/src/main/java/software/amazon/LimitlessPostgresqlExample.java
@@ -40,7 +40,7 @@ public static void main(String[] args) throws SQLException, InterruptedException
ds.setDatabase("test");
ds.setServerPort("5432");
- // Configure the driver-specific and AWS JDBC Driver properties (optional):
+ // Configure the driver-specific and AWS Advanced JDBC Wrapper properties (optional):
Properties targetDataSourceProps = new Properties();
// Alternatively, instead of using the methods above to configure the basic data source information,
@@ -53,7 +53,7 @@ public static void main(String[] args) throws SQLException, InterruptedException
// Configure any driver-specific properties:
// targetDataSourceProps.setProperty("ssl", "true");
- // Configure any AWS JDBC Driver properties:
+ // Configure any AWS Advanced JDBC Wrapper properties:
targetDataSourceProps.setProperty("wrapperLoggerLevel", "ALL");
ds.setTargetDataSourceProperties(targetDataSourceProps);
diff --git a/examples/SpringBootHikariExample/README.md b/examples/SpringBootHikariExample/README.md
index 0fd7aaa43..d56bea796 100644
--- a/examples/SpringBootHikariExample/README.md
+++ b/examples/SpringBootHikariExample/README.md
@@ -1,10 +1,10 @@
-# Tutorial: Getting started with Spring Boot, Hikari, and the AWS JDBC Driver
+# Tutorial: Getting started with Spring Boot, Hikari, and the AWS Advanced JDBC Wrapper
-In this tutorial, you will set up a Spring Boot application using Hikari and the AWS JDBC Driver.
+In this tutorial, you will set up a Spring Boot application using Hikari and the AWS Advanced JDBC Wrapper.
> Note: this tutorial was written using the following technologies:
> - Spring Boot 2.7.0
-> - AWS JDBC Driver 2.6.6
+> - AWS Advanced JDBC Wrapper 2.6.6
> - Postgresql 42.5.4
> - Java 8
@@ -64,11 +64,11 @@ dependencies {
}
```
-Please note that the sample code inside the AWS JDBC Driver project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
+Please note that the sample code inside the AWS Advanced JDBC Wrapper project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
## Step 3: Configure the Datasource
-In the `application.yml` file, configure Hikari and AWS JDBC Driver as its driver.
+In the `application.yml` file, configure Hikari and AWS Advanced JDBC Wrapper as its driver.
```yaml
spring:
diff --git a/examples/SpringHibernateBalancedReaderOneDataSourceExample/README.md b/examples/SpringHibernateBalancedReaderOneDataSourceExample/README.md
index 8d6d05c70..3751d586b 100644
--- a/examples/SpringHibernateBalancedReaderOneDataSourceExample/README.md
+++ b/examples/SpringHibernateBalancedReaderOneDataSourceExample/README.md
@@ -1,11 +1,11 @@
-# Tutorial: Getting Started with the AWS JDBC Driver, Spring Boot and Hibernate for load-balanced read-write and read-only connections (Single Datasource)
+# Tutorial: Getting Started with the AWS Advanced JDBC Wrapper, Spring Boot and Hibernate for load-balanced read-write and read-only connections (Single Datasource)
-In this tutorial, you will set up a Spring Boot and Hibernate application with the AWS Advanced JDBC Driver, and use a single datasource to fetch and update data from an Aurora PostgreSQL database. The datasource is configured to provide a writer connection or a reader connection to off-load a writer node from read-only queries. It provides pooled connections through the AWS Advanced JDBC Driver internal connection pool configuration.
+In this tutorial, you will set up a Spring Boot and Hibernate application with the AWS Advanced JDBC Wrapper, and use a single datasource to fetch and update data from an Aurora PostgreSQL database. The datasource is configured to provide a writer connection or a reader connection to off-load a writer node from read-only queries. It provides pooled connections through the AWS Advanced JDBC Wrapper internal connection pool configuration.
> Note: this tutorial was written using the following technologies:
> - Spring Boot 2.7.1
> - Hibernate
-> - AWS JDBC Driver 2.3.2
+> - AWS Advanced JDBC Wrapper 2.3.2
> - Postgresql 42.5.4
> - Gradle 7
> - Java 11
@@ -13,7 +13,7 @@ In this tutorial, you will set up a Spring Boot and Hibernate application with t
You will progress through the following sections:
1. Create a Gradle Spring Boot project
2. Add the required Gradle dependencies
-3. Configure the AWS Advanced JDBC Driver
+3. Configure the AWS Advanced JDBC Wrapper
## Pre-requisites
- This tutorial uses the Amazon Aurora PostgreSQL database.
@@ -52,10 +52,10 @@ dependencies {
}
```
-Please note that the sample code inside the AWS JDBC Driver project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
+Please note that the sample code inside the AWS Advanced JDBC Wrapper project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
## Step 3: Configure Spring and Hibernate
-Configure Spring to use the AWS JDBC Driver as the default datasource.
+Configure Spring to use the AWS Advanced JDBC Wrapper as the default datasource.
1. In the `application.yml`, add new datasources for Spring:
```yaml
@@ -68,7 +68,7 @@ Configure Spring to use the AWS JDBC Driver as the default datasource.
driver-class-name: software.amazon.jdbc.Driver
type: org.springframework.jdbc.datasource.SimpleDriverDataSource
```
-2. The datasource mentioned above does not use Hikari datasource that is default for Spring 2+ application. The AWS JDBC Driver manages its own internal connection pool (or several connection pools, if needed), which increases overall efficiency and helps facilitate failover support. All necessary configuration parameters are defined in the `F0` configuration profile. Other configuration presets `D`, `E` and `F` can be used as well. Any configuration profile or preset specified should use the [Read/Write Splitting Plugin](../../docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md). More details are available at [Configuration Profiles](../../docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#configuration-profiles) and [Configuration Presets](../../docs/using-the-jdbc-driver/ConfigurationPresets.md).
+2. The datasource mentioned above does not use Hikari datasource that is default for Spring 2+ application. The AWS Advanced JDBC Wrapper manages its own internal connection pool (or several connection pools, if needed), which increases overall efficiency and helps facilitate failover support. All necessary configuration parameters are defined in the `F0` configuration profile. Other configuration presets `D`, `E` and `F` can be used as well. Any configuration profile or preset specified should use the [Read/Write Splitting Plugin](../../docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md). More details are available at [Configuration Profiles](../../docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#configuration-profiles) and [Configuration Presets](../../docs/using-the-jdbc-driver/ConfigurationPresets.md).
Including the optional configuration parameter `readerHostSelectorStrategy` in the connection string helps to set up a strategy to select a reader node. Possible values are `random`, `roundRobin` and `leastConnections`. More details are available at [Reader Selection Strategies](../../docs/using-the-jdbc-driver/ReaderSelectionStrategies.md).
@@ -97,4 +97,4 @@ For detailed logs use `TRACE` for `software.amazon.jdbc` package.
Start the application by running `./gradlew :springhibernateonedatasource:bootRun` in the terminal. You should see the application making a connection to the database and fetching data from the Example table.
# Summary
-This tutorial walks through the steps required to add and configure the AWS Advanced JDBC Driver to a simple Spring Boot and Hibernate application.
+This tutorial walks through the steps required to add and configure the AWS Advanced JDBC Wrapper to a simple Spring Boot and Hibernate application.
diff --git a/examples/SpringHibernateBalancedReaderTwoDataSourceExample/README.md b/examples/SpringHibernateBalancedReaderTwoDataSourceExample/README.md
index 1ae611a4f..c6b9eef47 100644
--- a/examples/SpringHibernateBalancedReaderTwoDataSourceExample/README.md
+++ b/examples/SpringHibernateBalancedReaderTwoDataSourceExample/README.md
@@ -1,11 +1,11 @@
-# Tutorial: Getting Started with the AWS Advanced JDBC Driver, Spring Boot and Hibernate for load-balanced write and read-only connections (Two Datasources)
+# Tutorial: Getting Started with the AWS Advanced JDBC Wrapper, Spring Boot and Hibernate for load-balanced write and read-only connections (Two Datasources)
-In this tutorial, you will set up a Spring Boot and Hibernate application with the AWS Advanced JDBC Driver, and use two datasources to fetch and update data from an Aurora PostgreSQL database. One datasource is configured to provide a writer connection. The other datasource is configured to provide a reader connection to off load a writer node from read-only queries. Both datasources provide pooled connections through AWS Advanced JDBC Driver internal connection pool configuration.
+In this tutorial, you will set up a Spring Boot and Hibernate application with the AWS Advanced JDBC Wrapper, and use two datasources to fetch and update data from an Aurora PostgreSQL database. One datasource is configured to provide a writer connection. The other datasource is configured to provide a reader connection to off load a writer node from read-only queries. Both datasources provide pooled connections through AWS Advanced JDBC Wrapper internal connection pool configuration.
> Note: this tutorial was written using the following technologies:
> - Spring Boot 2.7.1
> - Hibernate
-> - AWS JDBC Driver 2.3.2
+> - AWS Advanced JDBC Wrapper 2.3.2
> - Postgresql 42.5.4
> - Gradle 7
> - Java 11
@@ -13,7 +13,7 @@ In this tutorial, you will set up a Spring Boot and Hibernate application with t
You will progress through the following sections:
1. Create a Gradle Spring Boot project
2. Add the required Gradle dependencies
-3. Configure the AWS Advanced JDBC Driver
+3. Configure the AWS Advanced JDBC Wrapper
## Pre-requisites
- This tutorial uses the Aurora PostgreSQL database.
@@ -56,10 +56,10 @@ dependencies {
}
```
-Please note that the sample code inside the AWS JDBC Driver project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
+Please note that the sample code inside the AWS Advanced JDBC Wrapper project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
## Step 3: Configure Spring and Hibernate
-Configure Spring to use the AWS JDBC Driver as the default datasource.
+Configure Spring to use the AWS Advanced JDBC Wrapper as the default datasource.
1. In the `application.yml`, add new datasources for Spring:
```yaml
@@ -78,7 +78,7 @@ Configure Spring to use the AWS JDBC Driver as the default datasource.
driver-class-name: software.amazon.jdbc.Driver
type: org.springframework.jdbc.datasource.SimpleDriverDataSource
```
-2. The datasources mentioned above do not use Hikari datasources which are the default for Spring 2+ applications. The AWS JDBC Driver manages its own internal connection pool (or several connection pools, if needed), which increases overall efficiency and helps facilitate failover support. All necessary configuration parameters are defined in `SF_F0` configuration profile. Other configuration presets from `SF_` family can be used as well. More details are available at [Configuration Profiles](../../docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#configuration-profiles) and [Configuration Presets](../../docs/using-the-jdbc-driver/ConfigurationPresets.md).
+2. The datasources mentioned above do not use Hikari datasources which are the default for Spring 2+ applications. The AWS Advanced JDBC Wrapper manages its own internal connection pool (or several connection pools, if needed), which increases overall efficiency and helps facilitate failover support. All necessary configuration parameters are defined in `SF_F0` configuration profile. Other configuration presets from `SF_` family can be used as well. More details are available at [Configuration Profiles](../../docs/using-the-jdbc-driver/UsingTheJdbcDriver.md#configuration-profiles) and [Configuration Presets](../../docs/using-the-jdbc-driver/ConfigurationPresets.md).
Optional configuration parameter `readerInitialConnectionHostSelectorStrategy` in connection string helps to setup a strategy selecting a reader node. Possible values are `random`, `roundRobin` and `leastConnections`. More details are available at [Reader Selection Strategies](../../docs/using-the-jdbc-driver/ReaderSelectionStrategies.md).
@@ -107,4 +107,4 @@ For detailed logs use `TRACE` for `software.amazon.jdbc` package.
Start the application by running `./gradlew :springhibernatetwodatasource:bootRun` in the terminal. You should see the application making a connection to the database and fetching data from the `Book` table.
# Summary
-This tutorial walks through the steps required to add and configure the AWS JDBC Driver to a simple Spring Boot and Hibernate application that load balances connections.
+This tutorial walks through the steps required to add and configure the AWS Advanced JDBC Wrapper to a simple Spring Boot and Hibernate application that load balances connections.
diff --git a/examples/SpringHibernateExample/README.md b/examples/SpringHibernateExample/README.md
index 97bb20661..ca2e60bcc 100644
--- a/examples/SpringHibernateExample/README.md
+++ b/examples/SpringHibernateExample/README.md
@@ -1,11 +1,11 @@
-# Tutorial: Getting Started with the AWS Advanced JDBC Driver, Spring Boot and Hibernate
+# Tutorial: Getting Started with the AWS Advanced JDBC Wrapper, Spring Boot and Hibernate
-In this tutorial, you will set up a Spring Boot and Hibernate application with the AWS Advanced JDBC Driver, and use the IAM Authentication plugin to fetch some data from an Aurora PostgreSQL database.
+In this tutorial, you will set up a Spring Boot and Hibernate application with the AWS Advanced JDBC Wrapper, and use the IAM Authentication plugin to fetch some data from an Aurora PostgreSQL database.
> Note: this tutorial was written using the following technologies:
> - Spring Boot 2.7.1
> - Hibernate
-> - AWS JDBC Driver 2.6.6
+> - AWS Advanced JDBC Wrapper 2.6.6
> - Postgresql 42.5.4
> - Gradle 7
> - Java 11
@@ -13,7 +13,7 @@ In this tutorial, you will set up a Spring Boot and Hibernate application with t
You will progress through the following sections:
1. Create a Gradle Spring Boot project
2. Add the required Gradle dependencies
-3. Configure the AWS Advanced JDBC Driver
+3. Configure the AWS Advanced JDBC Wrapper
## Pre-requisites
- A database with IAM authentication enabled. This tutorial uses the Aurora PostgreSQL database. For information on how to enable IAM database authentication for Aurora databases, please see the [AWS documentation](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html).
@@ -136,10 +136,10 @@ dependencies {
}
```
-Please note that the sample code inside the AWS JDBC Driver project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
+Please note that the sample code inside the AWS Advanced JDBC Wrapper project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
## Step 3: Configure Spring and Hibernate
-Configure Spring to use the AWS Advanced JDBC Driver as the default datasource.
+Configure Spring to use the AWS Advanced JDBC Wrapper as the default datasource.
1. In the `application.yml`, add a new datasource for Spring:
@@ -181,4 +181,4 @@ logging:
Start the application by running `./gradlew :springhibernate:bootRun` in the terminal. You should see the application making a connection to the database and fetching data from the Example table.
# Summary
-This tutorial walks through the steps required to add and configure the AWS Advanced JDBC Driver to a simple Spring Boot and Hibernate application.
+This tutorial walks through the steps required to add and configure the AWS Advanced JDBC Wrapper to a simple Spring Boot and Hibernate application.
diff --git a/examples/SpringTxFailoverExample/README.md b/examples/SpringTxFailoverExample/README.md
index 3c21c4a35..8288ffd70 100644
--- a/examples/SpringTxFailoverExample/README.md
+++ b/examples/SpringTxFailoverExample/README.md
@@ -1,10 +1,10 @@
# Tutorial: Getting started with Spring Boot and Failover
-In this tutorial, you will set up a Spring Boot application using the AWS JDBC Driver. This sample application will contain an example of how to retry transactions interrupted by failover. This tutorial is an extension of the [Spring Boot HikariCP example](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/examples/SpringBootHikariExample/README.md) and will contain similar elements.
+In this tutorial, you will set up a Spring Boot application using the AWS Advanced JDBC Wrapper. This sample application will contain an example of how to retry transactions interrupted by failover. This tutorial is an extension of the [Spring Boot HikariCP example](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/examples/SpringBootHikariExample/README.md) and will contain similar elements.
> Note: this tutorial was written using the following technologies:
> - Spring Boot 2.7.0
-> - AWS JDBC Driver 2.6.6
+> - AWS Advanced JDBC Wrapper 2.6.6
> - Postgresql 42.5.4
> - Java 8
@@ -107,11 +107,11 @@ dependencies {
}
```
-Please note that the sample code inside the AWS JDBC Driver project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
+Please note that the sample code inside the AWS Advanced JDBC Wrapper project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
## Step 3: Configure the Datasource
-In the `application.yml` file, configure Hikari and AWS JDBC Driver as its driver.
+In the `application.yml` file, configure Hikari and AWS Advanced JDBC Wrapper as its driver.
Note that in Spring Boot 2 and 3, Hikari is the default DataSource implementation. So, a bean explicitly specifying Hikari as a Datasource is not needed.
diff --git a/examples/SpringWildflyExample/README.md b/examples/SpringWildflyExample/README.md
index 6aa809e08..49b14a5a5 100644
--- a/examples/SpringWildflyExample/README.md
+++ b/examples/SpringWildflyExample/README.md
@@ -1,11 +1,11 @@
-# Tutorial: Getting Started with the AWS JDBC Driver, Spring Boot and Wildfly
+# Tutorial: Getting Started with the AWS Advanced JDBC Wrapper, Spring Boot and Wildfly
-In this tutorial, you will set up a Wildfly and Spring Boot application with the AWS Advanced JDBC Driver, and use the wrapper to execute some simple database operations.
+In this tutorial, you will set up a Wildfly and Spring Boot application with the AWS Advanced JDBC Wrapper, and use the wrapper to execute some simple database operations.
> Note: this tutorial was written using the following technologies:
> - Spring Boot 2.7.1
> - Wildfly 26.1.1 Final
-> - AWS JDBC Driver 2.6.6
+> - AWS Advanced JDBC Wrapper 2.6.6
> - Postgresql 42.5.4
> - Gradle 7
> - Java 11
@@ -99,13 +99,13 @@ dependencies {
}
```
-Please note that the sample code inside the AWS JDBC Driver project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
+Please note that the sample code inside the AWS Advanced JDBC Wrapper project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
## Step 3: Configure Wildfly
> Note: for simplicity, this repository does not contain the entire wildfly application, and instead only contains the modified files.
Download the Wildfly 26.1.1 Servlet-Only Distribution from the [Wildfly website](https://www.wildfly.org/downloads/).
-In the Wildfly `standalone/configuration/standalone.xml` file, configure the AWS Advanced JDBC Driver as your datasource by adding the following to the `` section.
+In the Wildfly `standalone/configuration/standalone.xml` file, configure the AWS Advanced JDBC Wrapper as your datasource by adding the following to the `` section.
```xml
@@ -129,7 +129,7 @@ If you would like to configure any additional properties for the wrapper, such a
You also need to add a new module in the `modules` directory.
To add a new module, you need to add a `module.xml` and provide the required driver JAR files.
The folder containing the `module.xml` needs to match the module name, in this example, the module name is `software.amazon.jdbc`.
-Since this example uses the PostgreSQL JDBC driver as the target driver, you need to add the AWS Advanced JDBC Driver JAR file as well as the PostgreSQL JDBC driver JAR file in the same directory as the `module.xml`.
+Since this example uses the PostgreSQL JDBC driver as the target driver, you need to add the AWS Advanced JDBC Wrapper JAR file as well as the PostgreSQL JDBC driver JAR file in the same directory as the `module.xml`.
```xml
@@ -141,7 +141,7 @@ Since this example uses the PostgreSQL JDBC driver as the target driver, you nee
```
-## Step 4: Configure Spring to use the AWS Advanced JDBC Driver
+## Step 4: Configure Spring to use the AWS Advanced JDBC Wrapper
To configure Spring to use the datasource specified in Wildfly, add an `application.properties` file in `spring/main/resources` with the `jndi-name` property:
```properties
spring.datasource.jndi-name=java:jboss/datasources/AWSWrapper
@@ -198,4 +198,4 @@ Start the application by
3. You should see the Spring application making a connection to the database and fetching data from the Example table.
# Summary
-This tutorial walks through the steps required to add and configure the AWS Advanced JDBC Driver to a simple Spring Boot and Wildfly application.
+This tutorial walks through the steps required to add and configure the AWS Advanced JDBC Wrapper to a simple Spring Boot and Wildfly application.
diff --git a/examples/VertxExample/README.md b/examples/VertxExample/README.md
index e6f1f8614..048974b5f 100644
--- a/examples/VertxExample/README.md
+++ b/examples/VertxExample/README.md
@@ -1,9 +1,9 @@
# Tutorial: Getting started with the AWS Advanced Jdbc Driver and Vert.x
-In this tutorial, you will set up a Vert.x application with the AWS JDBC Driver, and use the driver to execute some simple database operations on an Aurora PostgreSQL database.
+In this tutorial, you will set up a Vert.x application with the AWS Advanced JDBC Wrapper, and use the driver to execute some simple database operations on an Aurora PostgreSQL database.
> Note: this tutorial was written using the following technologies:
-> - AWS JDBC Driver 2.6.6
+> - AWS Advanced JDBC Wrapper 2.6.6
> - PostgreSQL 42.5.4
> - Java 8
> - Vert.x 4.4.2
@@ -57,7 +57,7 @@ dependencies {
}
```
-Please note that the sample code inside the AWS JDBC Driver project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
+Please note that the sample code inside the AWS Advanced JDBC Wrapper project will use the dependency `implementation(project(":aws-advanced-jdbc-wrapper"))` instead of `implementation("software.amazon.jdbc:aws-advanced-jdbc-wrapper:latest")` as seen above.
## Step 3: Set up connection pools
Vert.x applications can use connection pools to handle requests. In this example, we use two connection pools, one to handle write requests and another to handle read requests. Vert.x uses C3P0 by default to manage database connections.
@@ -153,4 +153,4 @@ public void start(Promise startPromise) throws Exception {
Start the application by running the command `./gradlew :vertxexample:run`. Once the application has started, requests can be made using the previously defined routes. For example, to obtain the current instance ID, the command `curl localhost:8888/id` can be run.
# Summary
-This tutorial walks through the steps required to add and configure the AWS JDBC Driver to a simple Vert.x application.
+This tutorial walks through the steps required to add and configure the AWS Advanced JDBC Wrapper to a simple Vert.x application.
diff --git a/wrapper/src/main/java/software/amazon/jdbc/util/ExecutorFactory.java b/wrapper/src/main/java/software/amazon/jdbc/util/ExecutorFactory.java
index 26d6bb234..ff9548830 100644
--- a/wrapper/src/main/java/software/amazon/jdbc/util/ExecutorFactory.java
+++ b/wrapper/src/main/java/software/amazon/jdbc/util/ExecutorFactory.java
@@ -49,7 +49,7 @@ private static ThreadFactory getThreadFactory(String threadName) {
private static ThreadFactory createThreadFactory(String threadName) {
AtomicLong threadCounter = new AtomicLong();
return runnable -> {
- String formattedThreadName = String.format("%s %s-%d", "AWS JDBC Driver",
+ String formattedThreadName = String.format("%s %s-%d", "AWS Advanced JDBC Wrapper",
threadName, threadCounter.incrementAndGet());
Thread thread = new Thread(runnable, formattedThreadName);
thread.setDaemon(true);