|
Java example source code file (Pool.java)
The Pool.java Java example source code/* * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.sun.jndi.ldap.pool; import java.util.Map; import java.util.WeakHashMap; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.io.PrintStream; import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue; import javax.naming.NamingException; /** * A map of pool ids to Connections. * Key is an object that uniquely identifies a PooledConnection request * (typically information needed to create the connection). * The definitions of the key's equals() and hashCode() methods are * vital to its unique identification in a Pool. * * Value is a ConnectionsRef, which is a reference to Connections, * a list of equivalent connections. * * Supports methods that * - retrieves (or creates as necessary) a connection from the pool * - removes expired connections from the pool * * Connections cleanup: * A WeakHashMap is used for mapping the pool ids and Connections. * A SoftReference from the value to the key is kept to hold the map * entry as long as possible. This allows the GC to remove Connections * from the Pool under situations of VM running out of resources. * To take an appropriate action of 'closing the connections' before the GC * reclaims the ConnectionsRef objects, the ConnectionsRef objects are made * weakly reachable through a list of weak references registered with * a reference queue. * Upon an entry gets removed from the WeakHashMap, the ConnectionsRef (value * in the map) object is weakly reachable. When another sweep of * clearing the weak references is made by the GC it puts the corresponding * ConnectionsWeakRef object into the reference queue. * The reference queue is monitored lazily for reclaimable Connections * whenever a pooled connection is requested or a call to remove the expired * connections is made. The monitoring is done regularly when idle connection * timeout is set as the PoolCleaner removes expired connections periodically. * As determined by the experiements, cleanup of resources using the * ReferenceQueue mechanism is reliable and has immidiate effect than the * finalizer approach. * * @author Rosanna Lee */ final public class Pool { static final boolean debug = com.sun.jndi.ldap.LdapPoolManager.debug; /* * Used for connections cleanup */ private static final ReferenceQueue<ConnectionsRef> queue = new ReferenceQueue<>(); private static final Collection<Reference Other Java examples (source code examples)Here is a short list of links related to this Java Pool.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.