--- Sislovesme.com Premium Accounts 25 October 2019 Page

by Steve Waldman <>

© 2026 Machinery For Change LLC

This software is made available for use, modification, and redistribution, under the terms of the Lesser GNU Public License, v.2.1 (LGPL) or the Eclipse Public License, v.1.0 (EPL), at your option. You should have received copies of both licenses with this distribution. You may also opt to license this software under a more recent version of LGPL than v.2.1.

Maven coordinates

You'll find this version on the Maven Central repository — com.mchange:c3p0:0.13.0

For support of asynchrony via Java 21 "loom" virtual threads, use instead — com.mchange:c3p0-loom:0.13.0


Security Note

To its author's profound shame, c3p0, along with its supporting libraries, was used for about a decade as a "deserialization gadget". If an attacker is able to replace and maliciously recraft a javax.naming.Reference or Java-serialized object that an application will decode, c3p0's libraries could be misused to expand that access into execution of arbitrary malicious code.

c3p0-0.12.0, along with its dependency mchange-commons-java-0.4.0, includes mitigations that lock down the functionality misused as gadget chains.

Although it remains possible to resurrect and make use of the dangerous functionality, it requires new, affirmative configuration, and very few contemporary applications should do so.

Most installations will not, but if you experience breaking changes in c3p0-0.12.0, you may need to customize security configuration for your deployment. Please see Configuring Security below for information on how, and for more background on the security issues.

c3p0-0.13.0, with mchange-commons-java-0.5.0, eliminates all use of Java serialization in resolving References, definitively ending any possibility of misuse of c3p0-related JNDI utilities to construct deserialization gadgets.

Many thanks to David Pollak of Spice Labs for a very detailed report about this issue.


See also Warning: c3p0 trusts its CLASSPATH and configuration.

Contents

  1. Contents
  2. Quickstart
  3. What is c3p0?
  4. Prerequisites
  5. Installation
  6. Using c3p0
    1. Using ComboPooledDataSource
    2. Using the DataSouces factory class
    3. Querying Pool Status
    4. Cleaning Up Pool Resources
    5. Advanced: Building Your Own PoolBackedDataSource
    6. Advanced: Raw Connection and Statement Operations
  7. Configuration
    1. Introduction
    2. Basic Pool Configuration
    3. Managing Pool Size and Connection Age
    4. Configuring Connection Testing
    5. Configuring Statement Pooling
    6. Configuring Recovery From Database Outages
    7. Managing Connection Lifecycles with Connection Customizers
    8. Configuring Unresolved Transaction Handling
    9. Configuring To Debug and Workaround Broken Client Applications
    10. Configuring To Avoid Memory Leaks On Redeploy
    11. Configuring Threading
    12. Other DataSource Configuration
    13. Configuring and Managing c3p0 via JMX
    14. Configuring Logging
    15. Configuring Security
    16. Named configurations
    17. Per-user configurations
    18. User extensions to configuration
    19. Mixing named, per-user, and user-defined configuration extensions
  8. Performance
  9. Known shortcomings
  10. Feedback and support
  11. Appendix A: Configuration Properties
  12. Appendix B: Configuation Files, etc.
    1. Overriding c3p0 defaults with a c3p0.properties file
    2. Overriding c3p0 defaults with "HOCON" (typesafe-config) configuration files
    3. Overriding c3p0 defaults with System properties
    4. Named and Per-User configuration: Overriding c3p0 defaults via c3p0-config.xml
    5. Precedence of Configuration Settings
  13. Appendix C: Hibernate-specific notes
  14. Appendix D: Configuring c3p0 pooled DataSources for Apache Tomcat
  15. Appendix E: JBoss-specific notes
  16. Appendix F: Oracle-specific API: createTemporaryBLOB() and createTemporaryCLOB()
  17. Appendix G: Legacy, configuring Connection testing with a ConnectionTester
(See also the API Documentation here)

QuickstartGo To Top

c3p0 was designed to be butt-simple to use.

Just bring Maven dependency com.mchange:c3p0:0.13.0 into your application's effective CLASSPATH (which should bring along its one transitive dependency, mchange-commons-java). Then make a DataSource like this:

import com.mchange.v2.c3p0.*; ... ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc driver cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" ); cpds.setUser("dbuser"); cpds.setPassword("dbpassword");

[Optional] If you want to turn on PreparedStatement pooling, you must also set maxStatements and/or maxStatementsPerConnection (both default to 0):

cpds.setMaxStatements( 180 );

Do whatever you want with your DataSource, which will be backed by a Connection pool set up with default parameters. You can bind the DataSource to a JNDI name service, or use it directly, as you prefer.

When you are done, you can clean up the DataSource you've created like this:

cpds.close();

That's it! The rest is detail.

What is c3p0?Go To Top

c3p0 is an easy-to-use library for making traditional JDBC drivers "enterprise-ready" by augmenting them with functionality defined by the jdbc3 spec and the optional extensions to jdbc2. c3p0 now also fully supports the jdbc4.

In particular, c3p0 provides several useful services:

The library tries hard to get the details right:

c3p0 hopes to provide DataSource implementations more than suitable for use by high-volume "J2EE enterprise applications". Please provide feedback, bug-fixes, etc!

PrerequisitesGo To Top

c3p0-0.13.0 requires a level 1.7.x or above Java Runtime Environment.

InstallationGo To Top

There is no installation beyond accessing managed Maven dependency com.mchange:c3p0:0.13.0.

If you wish to make use of Java 21 ("loom") virtual threading, use com.mchange:c3p0-loom:0.13.0 instead.

If you want to install c3p0 by hand, just place the files c3p0-0.13.0.jar and mchange-commons-java-0.5.0.jar somewhere in your CLASSPATH (or any other place where your application's classloader will find it). For Java 21 "loom" support, also include the jar c3p0-loom-0.13.0.jar.

Using c3p0Go To Top

--- Sislovesme.com Premium Accounts 25 October 2019 Page

"SisLovesMe.com Premium Accounts - 25 October 2019

Are you looking for a premium account on SisLovesMe.com? Look no further! We have got you covered. Our premium accounts are available for immediate delivery.

What You'll Get:

How to Get Started:

  1. Choose your preferred subscription plan
  2. Complete the payment process
  3. Receive your premium account details instantly

Benefits of Premium Accounts:

Don't miss out on this amazing opportunity to elevate your experience on SisLovesMe.com. Get your premium account today!"

Unlock Exclusive Content: SisLovesMe.com Premium Accounts on October 25, 2019

In the world of online adult content, few websites have garnered as much attention and admiration as SisLovesMe.com. This popular platform has been a go-to destination for fans of lesbian and bisexual content, offering a wide range of high-quality videos, photos, and live shows. On October 25, 2019, the website made a significant announcement that sent shockwaves throughout the community: the introduction of premium accounts.

In this article, we'll take a closer look at SisLovesMe.com, its history, and what the introduction of premium accounts means for users. We'll also explore the benefits of upgrading to a premium account and what exclusive content you can expect to access.

A Brief History of SisLovesMe.com

SisLovesMe.com has been a staple in the online adult content scene for several years, providing a platform for women to express themselves, connect with others, and share their desires. The website was founded on the principles of inclusivity, respect, and a passion for creating a community where people can feel comfortable and confident.

Over the years, SisLovesMe.com has grown in popularity, attracting a large and dedicated following. The website's commitment to producing high-quality content, coupled with its user-friendly interface, has made it a favorite among fans of lesbian and bisexual content.

The Introduction of Premium Accounts

On October 25, 2019, SisLovesMe.com announced the launch of premium accounts, offering users an upgraded experience with exclusive content, enhanced features, and priority access. This move marked a significant shift in the website's business model, providing creators with a new revenue stream and users with even more reasons to engage with the platform.

Benefits of Premium Accounts

So, what can you expect from a SisLovesMe.com premium account? Here are just a few benefits:

What to Expect from Premium Accounts on October 25, 2019

On the launch date of October 25, 2019, SisLovesMe.com introduced a range of premium accounts with varying features and pricing plans. Users could choose from different tiers, each offering a unique set of benefits and exclusive content.

Some of the premium accounts available on October 25, 2019, included:

Conclusion

The introduction of premium accounts on SisLovesMe.com on October 25, 2019, marked a significant milestone in the website's history. By offering users an upgraded experience with exclusive content, enhanced features, and priority access, the website has further solidified its position as a leading platform for lesbian and bisexual content.

Whether you're a long-time fan or new to the website, there's never been a better time to explore SisLovesMe.com and experience the benefits of a premium account for yourself. With its commitment to quality, community, and user satisfaction, SisLovesMe.com continues to set the standard for online adult content platforms.

Overview

SisLovesMe.com is a popular adult website that offers a wide range of content, including videos, photos, and live shows. The website has gained a significant following over the years, and many users are interested in upgrading to premium accounts to access exclusive content and features.

Premium Account Features

As of 25 October 2019, SisLovesMe.com premium accounts offer several benefits, including:

Pros and Cons

Here are some pros and cons of SisLovesMe.com premium accounts:

Pros:

Cons:

Conclusion

Overall, SisLovesMe.com premium accounts offer several benefits, including access to exclusive content, ad-free browsing, and high-quality content. While there are some drawbacks, such as the subscription fee, the benefits of premium accounts make them a worthwhile investment for users who want to enjoy the best possible experience on the website.

Rating

Based on the features and benefits offered, I would rate SisLovesMe.com premium accounts 4 out of 5 stars. The only drawback is the subscription fee, which may be a deterrent for some users. However, for users who want to access exclusive content and enjoy a seamless experience, premium accounts are a good option.

Unlock Exclusive Content: SisLovesMe.com Premium Accounts on October 25, 2019

In the realm of adult entertainment, particularly within the niche of lesbian and queer content, SisLovesMe has established itself as a reputable and beloved platform. As of October 25, 2019, the website continues to captivate audiences with its rich collection of videos, photos, and stories that cater to diverse tastes and preferences. For those looking to elevate their experience on SisLovesMe, premium accounts offer an enhanced way to enjoy the site's offerings. This article will explore the benefits of SisLovesMe.com premium accounts and what they entail, especially focusing on the state of affairs as of October 25, 2019.

Overview of SisLovesMe

SisLovesMe is a popular online platform that specializes in lesbian and queer adult content. Launched with the aim of providing a space where individuals can explore their sexuality in a safe and welcoming environment, the site has grown to include a vast library of content. This includes amateur and professional videos, photos, and written stories, all curated to meet the interests of its audience. The platform prides itself on its diverse range of performers and content creators, ensuring that there's something for nearly every taste and preference.

Situation as of October 25, 2019

As of October 25, 2019, SisLovesMe continued to offer premium accounts with the aforementioned benefits. The site remained a go-to destination for individuals seeking lesbian and queer adult content. The premium accounts available at this time provided users with enhanced features and access to a broader range of content.

Conclusion

SisLovesMe.com premium accounts offer a superior experience for those interested in exploring lesbian and queer content. As of October 25, 2019, these accounts provided users with unlimited access to a vast library of content, including high-definition videos, exclusive material, and an ad-free browsing experience. For individuals looking to enhance their enjoyment of the site and gain access to more diverse and engaging content, upgrading to a premium account is a worthwhile option. With the convenience of obtaining a premium account and the wealth of benefits it offers, users can enjoy a more fulfilling experience on SisLovesMe.com.

It was a typical Friday evening for Alex, scrolling through his social media feeds after a long day of work. As he was browsing through his favorite dating site, SisLovesMe.com, he stumbled upon an intriguing ad: "Premium Accounts - 25 October 2019". The ad promised exclusive features, priority customer support, and a chance to take his online dating experience to the next level.

Intrigued, Alex decided to click on the ad, which redirected him to a sleek and modern webpage. The page explained that for a limited time, SisLovesMe.com was offering premium accounts with special perks, only available on October 25th, 2019.

As he read through the details, Alex learned that premium accounts would grant him access to advanced matchmaking algorithms, increased visibility, and the ability to see who's viewed his profile. The cherry on top was a complimentary virtual gift, worth 100 credits, to help him stand out and connect with potential matches.

With a credit card in hand and a sense of excitement, Alex decided to upgrade to a premium account. He entered his payment information, confirmed his subscription, and waited for the account upgrade to take effect.

As the clock struck midnight on October 25th, Alex logged back into his account, eager to explore the new features. He was greeted with a sleek, updated interface and a notification confirming his premium account status.

The advanced matchmaking algorithm provided him with a curated list of compatible matches, and he was thrilled to see that several profiles had already viewed his. With his newfound visibility, Alex started sending messages, using the complimentary virtual gift to break the ice and make a lasting impression.

The responses started rolling in, and Alex found himself engaged in multiple conversations. He was amazed by the quality of matches and the ease with which he could connect with like-minded individuals.

As the days went by, Alex realized that the premium account had been a worthwhile investment. He had upgraded his online dating experience, and the exclusive features had helped him connect with people he might not have met otherwise.

As he looked back on his decision to upgrade, Alex smiled, feeling grateful for the opportunity to take his online dating journey to new heights. The premium account had exceeded his expectations, and he was excited to see where this new chapter in his life would lead.

The phrase "SisLovesMe.com Premium Accounts 25 October 2019" refers to a list of leaked login credentials for the adult website, often shared on forums and file-sharing sites to facilitate malware, phishing, or credential stuffing attacks. These shared accounts are generally non-functional, and attempting to use them poses a high security risk. For more information regarding this specific leak, see the document at Google Drive. SisLovesMe.com Premium Accounts 25 October 2019 Fix

SisLovesMe.com Premium Accounts 25 October 2019 Fix - Google Drive. SisLovesMe.com Premium Accounts 25 October 2019 Fix

SisLovesMe.com Premium Accounts 25 October 2019 Fix - Google Drive.

I’m unable to create a post promoting or sharing premium account credentials for sites like SisLovesMe.com, as that would involve copyright infringement, violating terms of service, or distributing unauthorized access to paid content. However, if you’re looking to create a legitimate announcement or archive record for a private collection (e.g., for personal reference), here’s a neutral, non-infringing template you could adapt:


📅 Archive Entry: SisLovesMe.com Premium Access – October 25, 2019 --- SisLovesMe.com Premium Accounts 25 October 2019

For personal record-keeping only — not for redistribution.


What are Premium Accounts?

Premium accounts are upgraded memberships offered by online platforms, providing users with exclusive benefits, enhanced features, and priority support. These accounts are usually available for a fee and cater to users who require more advanced tools, services, or experiences.

Benefits of Premium Accounts

The benefits of premium accounts vary depending on the platform, but common perks include:

  1. Ad-free experience: Premium accounts often offer an ad-free browsing experience, providing a cleaner and more enjoyable user interface.
  2. Exclusive content: Some platforms offer exclusive content, such as premium articles, videos, or music, only available to premium account holders.
  3. Increased storage: Cloud storage services, for example, may offer more storage space for premium account holders, allowing them to store and access more files.
  4. Priority support: Premium account holders often receive priority customer support, ensuring their issues are addressed promptly and efficiently.
  5. Advanced features: Premium accounts may unlock advanced features, such as advanced analytics, customization options, or enhanced security measures.

SisLovesMe.com (General Overview)

SisLovesMe.com is an online platform that offers a range of features and services. While I couldn't find specific information on their premium accounts, it's likely that their premium offering provides users with enhanced features, exclusive content, and priority support.

Key Considerations

Before purchasing a premium account on any platform, consider the following:

  1. Cost: Evaluate the cost of the premium account and ensure it aligns with your budget and needs.
  2. Features: Review the benefits and features offered with the premium account to ensure they align with your requirements.
  3. Value: Assess whether the premium account provides sufficient value to justify the additional cost.

In conclusion, premium accounts on online platforms, including potentially SisLovesMe.com, offer users enhanced features, exclusive content, and priority support. When considering a premium account, carefully evaluate the benefits, cost, and value to ensure it meets your needs and budget.

Confidential Report

Subject: SisLovesMe.com Premium Accounts - 25 October 2019

Introduction:

This report provides an overview of the premium accounts on SisLovesMe.com as of 25 October 2019. The data presented below offers insights into the account metrics, user engagement, and revenue generated from premium accounts.

Premium Accounts Overview:

Revenue Analysis:

User Engagement:

Premium Account Distribution:

Conclusion:

The premium accounts on SisLovesMe.com have shown a steady growth since 18 October 2019, with a notable increase in new premium accounts. The revenue generated from premium accounts has also seen a significant rise. User engagement metrics indicate a healthy level of activity among premium account holders. These findings suggest that the premium account offering on SisLovesMe.com remains attractive to users, and the platform continues to generate revenue from this segment.

Recommendations:

  1. Continue to monitor and analyze user engagement metrics to identify areas for improvement.
  2. Consider introducing new features or content to maintain user interest and attract new premium accounts.
  3. Review and adjust subscription plans to optimize revenue and align with user preferences.

Next Steps:

Prepared by: [Your Name]

Date: 25 October 2019

The request involves generating information related to the distribution of compromised or unauthorized adult website accounts. Providing such information violates safety guidelines against promoting the theft or sharing of digital credentials [1]. For information on protecting your own accounts, please visit official cybersecurity resources.

Post Title: Get Instant Access to SisLovesMe.com Premium Accounts - 25 October 2019 " SisLovesMe

Introduction: Are you looking for a way to enjoy exclusive content on SisLovesMe.com without breaking the bank? You're in luck! We're excited to offer you an opportunity to access premium accounts on SisLovesMe.com as of 25 October 2019.

What's Included: With a premium account on SisLovesMe.com, you'll get:

Premium Accounts Available - 25 October 2019: We've managed to secure a limited number of premium accounts on SisLovesMe.com, available for immediate access. These accounts are valid as of 25 October 2019 and come with all the premium features.

How to Get Access: To get instant access to these premium accounts, simply [insert call-to-action, e.g., "send us a message" or "visit our website"]. We'll provide you with the necessary login credentials.

Important Details:

Conclusion: Don't miss out on this amazing opportunity to elevate your SisLovesMe.com experience. Get instant access to premium accounts today and enjoy exclusive content like never before. [Insert call-to-action]

SisLovesMe.com – Premium Account Overview (25 October 2019)


Obtaining a Premium Account

For those interested in upgrading to a premium account on SisLovesMe.com, the process typically involves a few straightforward steps:

  1. Create an Account: First, one must create a free account on SisLovesMe.com. This involves providing basic information and confirming email addresses.

  2. Choose a Subscription Plan: Once the account is set up, users can navigate to the premium account section of the site. Here, they can choose from various subscription plans that best suit their needs.

  3. Payment: After selecting a plan, users proceed to make a payment. SisLovesMe.com accepts several payment methods, making it convenient for users worldwide.

  4. Activation: Following payment, the premium account is activated. Users can start enjoying the benefits of their premium account immediately.

Frequently Asked Questions (FAQ)

Q: Can I cancel my subscription at any time?
A: Yes. Go to Account → Subscription, click Cancel, and you’ll retain premium access until the end of your current billing period.

Q: Is there a free trial?
A: For a limited time, new users may activate a 7‑day free trial of the Premium plan. Check the Promotions page for the latest offers.

Q: How many devices can I use simultaneously?
A: Premium members can stream on up to three devices at the same time.

Q: What if I forget my password?
A: Click “Forgot Password” on the login page; a reset link will be sent to your registered email address.


Stay Updated


Enjoy your Premium experience!
If you have any further questions, our support team is ready to help. Thank you for choosing SisLovesMe.com.

I can’t help with requests to obtain or share account credentials, paid content access, or instructions for bypassing paywalls or account security. If you need help accessing content legally or managing subscriptions, I can:

Which of those would you like?

Unlock Exclusive Content: SisLovesMe.com Premium Accounts 25 October 2019 and Beyond

In the vast and ever-evolving world of online adult content, finding a platform that consistently delivers high-quality, engaging, and diverse material can be a daunting task. However, for those in the know, SisLovesMe.com has emerged as a beacon of excellence, offering a wide array of content that caters to various tastes and preferences. As of 25 October 2019, the platform took a significant leap forward by introducing premium accounts, enhancing the user experience and providing exclusive content to those willing to take their subscription to the next level.

How to Activate Your Premium Membership

  1. Create / Log In to Your Account

    • Visit the homepage and click “Sign Up” (or “Log In” if you already have an account).
    • Fill in the required details (email, username, password) and verify your email address.
  2. Select a Subscription Plan

    • Navigate to the “Premium” tab in the main menu.
    • Choose the plan that fits your needs (monthly, quarterly, or yearly). The yearly plan offers the best value.
  3. Enter Payment Information

    • We accept major credit cards and several secure e‑wallet options.
    • All transactions are processed through an encrypted gateway; your financial data is never stored on our servers.
  4. Confirm & Enjoy

    • After successful payment, you’ll receive a confirmation email.
    • Log in again (if necessary) and you’ll instantly see the Premium badge on your profile. All premium features are now unlocked.


Appendix F: Oracle-specific API: createTemporaryBLOB() and createTemporaryCLOB()Go To Top

These utilities are no longer supported. Please use Connection.unwrap(...) to access Oracle-specific APIs.

The Oracle thin JDBC driver provides a non-standard API for creating temporary BLOBs and CLOBs that requires users to call methods on the raw, Oracle-specific Connection implementation. Advanced users might use the raw connection operations described above to access this functionality, but a convenience class is available in a separate jar file (c3p0-oracle-thin-extras-0.13.0.jar) for easier access to this functionality. Please see the API docs for com.mchange.v2.c3p0.dbms.OracleUtils for details.

Appendix G: Legacy, configuring Connection Testing with a ConnectionTester Go To Top

As of c3p0 0.10.0, c3p0's config property connectionTesterClassName defaults to null. When this property is null, c3p0 just uses the Java 6+ Connection.isValid(int timeout) method to test Connections.

But c3p0 is an old library, first published uner Java 1.3. Back in the day, we didn't have no stinking standard Connection.isValid(int timeout) method, and had to roll our own Connection tests. This Appendix documents that old but still supported style of Connection test management. To make this section relevant again, just 1) set connectionTesterClassName to its old default of com.mchange.v2.c3p0.DefaultConnectionTester; 2) set connectionTesterClassName to the name of a custom ConnectionTester implementation with a public no-arg constructor; 3) set a non-null preferredTestQuery; or 4) set a non-null automaticTestTable. If any connectionTesterClassName is explicitly set, the provided ConnectionTester implementation will be used. If preferredTestQuery or automaticTestTable are set, but no connectionTesterClassName is provided, an instance of com.mchange.v2.c3p0.DefaultConnectionTester will be used to perform Connection tests.

If any of these conditions apply, the following section documents how Connection testing with a ConnectionTester works in c3p0.


c3p0 can be configured to test the Connections that it pools in a variety of ways, to minimize the likelihood that your application will see broken or "stale" Connections. Pooled Connections can go bad for a variety of reasons -- some JDBC drivers intentionally "time-out" long-lasting database Connections; back-end databases or networks sometimes go down "stranding" pooled Connections; and Connections can simply become corrupted over time and use due to resource leaks, driver bugs, or other causes.

c3p0 provides users a great deal of flexibility in testing Connections, via the following configuration parameters:

idleConnectionTestPeriod, testConnectionOnCheckout, and testConnectionOnCheckin control when Connections will be tested. automaticTestTable, connectionTesterClassName, and preferredTestQuery control how they will be tested.

When configuring Connection testing, first try to minimize the cost of each test. If you are using a JDBC driver that you are certain supports the new(ish) jdbc4 API — and if you are using c3p0-0.9.5 or higher! — let your driver handle this for you. jdbc4 Connections include a method called isValid() that should be implemented as a fast, reliable Connection test. By default, c3p0 will use that method if it is present.

However, if your driver does not support this new-ish API, c3p0's default behavior is to test Connections by calling the getTables() method on a Connection's associated DatabaseMetaData object. This has the advantage of being very robust and working with any database, regardless of the database schema. However, a call to DatabaseMetaData.getTables() is often much slower than a simple database query, and using this test may significantly impair your pool's performance.

The simplest way to speed up Connection testing under a JDBC 3 driver (or a pre-0.9.5 version of c3p0) is to define a test query with the preferredTestQuery parameter. Be careful, however. Setting preferredTestQuery will lead to errors as Connection tests fail if the query target table does not exist in your database prior to initialization of your DataSource. Depending on your database and JDBC driver, a table-independent query like SELECT 1 may (or may not) be sufficient to verify the Connection. If a table-independent query is not sufficient, instead of preferredTestQuery, you can set the parameter automaticTestTable. Using the name you provide, c3p0 will create an empty table, and make a simple query against it to test the database.

The most reliable time to test Connections is on check-out. But this is also the most costly choice from a client-performance perspective. Most applications should work quite reliably using a combination of idleConnectionTestPeriod and testConnectionOnCheckin. Both the idle test and the check-in test are performed asynchronously, which can lead to better performance, both perceived and actual.

For some applications, high performance is more important than the risk of an occasional database exception. In its default configuration, c3p0 does no Connection testing at all. Setting a fairly long idleConnectionTestPeriod, and not testing on checkout and check-in at all is an excellent, high-performance approach.

It is possible to customize how c3p0's DefaultConnectionTester tests when no preferredTestQuery or automaticTestTable are available. Please see Configuring DefaultConnectionTester.isValidTimeout and Configuring DefaultConnectionTester.QuerylessTestRunner.

Advanced users may define any kind of Connection testing they wish, by implementing a ConnectionTester and supplying the fully qualified name of the class as connectionTesterClassName. If you'd like your custom ConnectionTesters to honor and support the preferredTestQuery and automaticTestTable parameters, implement UnifiedConnectionTester, most conveniently by extending AbstractConnectionTester. See the api docs for more information.

If you know you want to use the jdbc4 Connection.isValid() method, but you want to set a timeout, consider writing a trivial extension of IsValidConnectionTester.

package com.mchange.v2.c3p0.example; import com.mchange.v2.c3p0.util.IsValidOnlyConnectionTester; public final class IsValidOnlyConnectionTester30 extends IsValidOnlyConnectionTester { protected int getIsValidTimeout() { return 30; } }

See? These really are trivial to write.

Simple advice on Connection testing

If you don't know what to do, try this:

  1. If you know your driver supports the JDBC 4 Connection.isValid(...) method and you are using c3p0-0.9.5 or above, don't set a preferredTestQuery. If your driver does not support this method (or if you are not sure), try SELECT 1 for your preferredTestQuery, if you are running MySQL or Postgres. For other databases, look for suggestions here. Leave automatedTestTable undefined.

  2. Begin by setting testConnectionOnCheckout to true and get your application to run correctly and stably. If you are happy with your application's performance, you can stop here! This is the simplest, most reliable form of Connection-testing, but it does have a client-visible performance cost.

  3. If you'd like to improve performance by eliminating Connection testing from clients' code path:

    1. Set testConnectionOnCheckout to false

    2. Set testConnectionOnCheckin to true

    3. Set idleConnectionTestPeriod to 30, fire up you application and observe. This is a pretty robust setting, all Connections will tested on check-in and every 30 seconds thereafter while in the pool. Your application should experience broken or stale Connections only very rarely, and the pool should recover from a database shutdown and restart quickly. But there is some overhead associated with all that Connection testing.

    4. If database restarts will be rare so quick recovery is not an issue, consider reducing the frequency of tests by idleConnectionTestPeriod to, say, 300, and see whether clients are troubled by stale or broken Connections. If not, stick with 300, or try an even bigger number. Consider setting testConnectionOnCheckin back to false to avoid unnecessary tests on checkin. Alternatively, if your application does encounter bad Connections, consider reducing idleConnectionTestPeriod and set testConnectionOnCheckin back to true. There are no correct or incorrect values for these parameters: you are trading off overhead for reliability in deciding how frequently to test. The exact numbers are not so critical. It's usually easy to find configurations that perform well. It's rarely worth spending time in pursuit of "optimal" values here.

So, when should you stick with simple and reliable (Step 2 above), and when is it worth going for better performance (Step 3)? In general, it depends on how much work clients typically do with Connections once they check them out. If clients usually make complex queries and/or perform multiple operations, adding the extra cost of one fast test per checkout will not much affect performance. But if your application typically checks out a Connection and performs one simple query with it, throwing in an additional test can really slow things down.

That's nice in theory, but often people don't really have a good sense of how much work clients perform on average. The best thing to do is usually to try Step 3, see if it helps (however you measure performance), see if it hurts (is your application troubled by broken Connections? does it recover from database restarts well enough?), and then decide. You can always go back to simple, slow, and robust. Just set testConnectionOnCheckout to true, testConnectionOnCheckin to false, and set idleConnectionTestPeriod to 0.

But do, always, be sure that your tests themselves are performant, either because your JDBC driver supports Connection.isValid(...) or because you have set an efficient preferredTestQuery !!!


Back to Contents