All Packages Class Hierarchy This Package Previous Next Index
Class com.extropia.net.JavaCGIBridgePool
java.lang.Object
|
+----com.extropia.net.JavaCGIBridgePool
- public class JavaCGIBridgePool
- extends Object
- implements Runnable
This is a class that manages the creation and reuse of
previously created JavaCGIBridge Objects. This is useful
in two cases.
First, if your applet requires using JavaCGIBridge many
times during its life, it can be wasteful to keep creating
new JavaCGIBridge objects for use. The JavaCGIBridgePool
class creates a new JavaCGIBridge if none are available
and it hands back an existing idle JavaCGIBridge Object
otherwise for reuse.
Second, if you methods in the JavaCGIBridge which cause
it to return control back to the main applet thread before
it has actually finished with the HTTP communication, then
JavaCGIBridgePool also takes into account the status of
the JavaCGIBridge objects in deciding whether or not
to hand it to the user. If the JavaCGIBridge object claims
it is still processing an HTTP request in another thread,
then the JavaCGIBridgePool will pass over that object and
look at the next one or create a new instance if no more
is available.
In addition, if you turn on the feature, a separate
thread will be spawned which will periodically check
if there are any JavaCGIBridge objects that have timed
out. These will be stopped and the observers of the
timed out JavaCGIBridge object will be notified of the
exception.
Most traditional object pool implementations require
explicit check in and check out procedures so that the
pool knows that the object has been handed back in for
reuse. JavaCGIBridgePool does not operate this way.
Since JavaCGIBridge objects know when they are done
processing and have their state set to IDLE, the
JavaCGIBridgePool reclaims these objects at that point.
Therefore, it is important to always use JavaCGIBridgePool
to get the next JavaCGIBridge object after each request
instead of reusing it on your own. If you plan on reusing
a JavaCGIBridge object on your own, it is better if you
create it yourself. However, if you create your own, you
will lose a lot of the built in logic of the JavaCGIBridgePool
class.
Design note: This class is meant to be used as a singleton.
However, instead of simply containing static methods, you need
to instantiate this class. The reason for this is that
browsers tend to run all applets in a single java virtual
machine. Using a class singleton instead of an instantiated
object singleton would therefore introduce subtle bugs if
multiple applets provide different defaults to the Pool.
If you wish to use a class singleton mechanism, I would
suggest creating a wrapper class that has a JavaCGIBridgePool
static member. This could be an advantage if you are
explicitly designing your application to share JavaCGIBridge
objects between applets.
- Version:
- 2.00, 18 Jul 1998
- Author:
- Gunther Birznieks, Marty Hall
-
JavaCGIBridgePool()
-
-
cleanPool()
- Checks the pool to see if any JavaCGIBridge
objects have timed out.
-
clearPool()
- Clears out the pool of JavaCGIBridge objects.
-
getCleanTime()
-
Returns the time in milliseconds that a thread will
wait before waking up and seeing whether any
JavaCGIBridge objects in the pool need cleaning out.
-
getDefaultEndDataSeparator()
- Returns the default End of Data separator value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool.
-
getDefaultFieldSeparator()
- Returns the default field separator value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool.
-
getDefaultParseAsRaw()
- Returns the default ParseAsRaw value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool.
-
getDefaultParsedNotifyInterval()
- Returns the default ParsedNotifyInterval value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool.
-
getDefaultRawNotifyInterval()
- Returns the default RawNotifyInterval value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool.
-
getDefaultRecordSeparator()
- Returns the default record separator value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool.
-
getDefaultStartDataSeparator()
- Returns the default Start of Data separator value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool.
-
getDefaultTimeOut()
- Returns the default communication time out
in milliseconds for the class.
-
getJavaCGIBridge()
- Obtains a free JavaCGIBridge object or creates a
new one if none are available.
-
getJavaCGIBridgeExtension()
- Obtains a free JavaCGIBridgeExtension object or creates a
new one if none are available.
-
getMaxObjects()
- Returns a value indicating the maximum number
of objects the JavaCGIBridgePool is allowed
to hold.
-
getMaxSpareObjects()
- Returns a value indicating the maximum number
of objects the JavaCGIBridgePool keeps lying around
in the IDLE state.
-
removeJavaCGIBridge(JavaCGIBridge)
- Removes a particular JavaCGIBridge object from
the pool.
-
run()
-
Thread that cleans up timed out
JavaCGIBridge objects.
-
setCleanTime(int)
- Sets the time between when the JavaCGIBridgePool's
thread will check if objects in the pool have
timed out and need to be cleaned.
-
setDefaultEndDataSeparator(String)
- Sets the default End of Data value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool.
-
setDefaultFieldSeparator(String)
- Sets the default field separator value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool.
-
setDefaultParseAsRaw(boolean)
- Sets the default ParseAsRaw value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool.
-
setDefaultParsedNotifyInterval(int)
- Sets the default ParsedNotifyInterval value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool.
-
setDefaultRawNotifyInterval(int)
- Sets the default RawNotifyInterval value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool.
-
setDefaultRecordSeparator(String)
- Sets the default record separator value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool.
-
setDefaultStartDataSeparator(String)
- Sets the default Start of Data value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool.
-
setDefaultTimeOut(int)
- Sets the default communication time out in
milliseconds for the class.
-
setMaxObjects(int)
- Sets the maximum number of objects the JavaCGIBridgePool
can hold.
-
setMaxSpareObjects(int)
- Sets the maximum number of spare IDLE objects the
JavaCGIBridgePool keeps lying around.
JavaCGIBridgePool
public JavaCGIBridgePool()
getJavaCGIBridge
public JavaCGIBridge getJavaCGIBridge()
- Obtains a free JavaCGIBridge object or creates a
new one if none are available.
- Returns:
- JavaCGIBridge
- See Also:
- getJavaCGIBridgeExtension
getJavaCGIBridgeExtension
public JavaCGIBridgeExtension getJavaCGIBridgeExtension()
- Obtains a free JavaCGIBridgeExtension object or creates a
new one if none are available.
- Returns:
- JavaCGIBridgeExtension
- See Also:
- getJavaCGIBridge
removeJavaCGIBridge
public synchronized boolean removeJavaCGIBridge(JavaCGIBridge jcb)
- Removes a particular JavaCGIBridge object from
the pool. If the status is not idle, the object
will not be removed.
- Parameters:
- jcb - JavaCGIBridge object to remove
- Returns:
- boolean returns true if object was removed
- See Also:
- cleanPool
clearPool
public synchronized void clearPool()
- Clears out the pool of JavaCGIBridge objects. Objects
not currently in use are removed from the pool.
Objects current in use are kept in the pool.
- See Also:
- removeJavaCGIBridge
getMaxObjects
public int getMaxObjects()
- Returns a value indicating the maximum number
of objects the JavaCGIBridgePool is allowed
to hold. Zero (the default) indicates
unlimited number of JavaCGIBridge objects can
be created.
- Returns:
- int maximum number of JavaCGIBridge objects
the JavaCGIBridgePool can hold
- See Also:
- setMaxObjects, getJavaCGIBridge, getJavaCGIBridgeExtension
setMaxObjects
public void setMaxObjects(int max)
- Sets the maximum number of objects the JavaCGIBridgePool
can hold. Zero (the default) indicates unlimited
number of JavaCGIBridge objects can be created.
- Parameters:
- max - maximum number of JavaCGIBridge objects
the JavaCGIBridgePool can hold
- See Also:
- getMaxObjects, getJavaCGIBridge, getJavaCGIBridgeExtension
getMaxSpareObjects
public int getMaxSpareObjects()
- Returns a value indicating the maximum number
of objects the JavaCGIBridgePool keeps lying around
in the IDLE state. It is useful to lower this
if you want to conserve RAM and you think there
might be a point in your software where many objects
would be created at once. This might occur if many
asynchronous requests need to be serviced. Zero (the default)
indicates unlimited number of JavaCGIBridge IDLE objects
can be left hanging around. This value is used when
the cleanPool() method tries to clean out unnecessary or
timed out objects.
- See Also:
- setMaxSpareObjects, cleanPool
setMaxSpareObjects
public void setMaxSpareObjects(int max)
- Sets the maximum number of spare IDLE objects the
JavaCGIBridgePool keeps lying around. It is useful
to lower this value if you want to conserve RAM and
you think there might be a point in your software where
many objects would be created at once which you don't
want to keep around for the life of the program
- See Also:
- getMaxSpareObjects, cleanPool
getCleanTime
public int getCleanTime()
- Returns the time in milliseconds that a thread will
wait before waking up and seeing whether any
JavaCGIBridge objects in the pool need cleaning out.
- Returns:
- int time in miiliseconds for thread to wake up
for cleaning up the JavaCGIBridgePool
- See Also:
- setCleanTime, cleanPool
setCleanTime
public void setCleanTime(int cleanUpTime)
- Sets the time between when the JavaCGIBridgePool's
thread will check if objects in the pool have
timed out and need to be cleaned.
If the time is 0 (default), then no thread cleans
up automatically. If the time is positive, then this
method actually creates and starts the thread that
watches the objects for cleanup.
- Parameters:
- cleanUpTime - the time in milliseconds before
checking objects for clean up.
- See Also:
- getCleanTime, cleanPool
run
public void run()
- Thread that cleans up timed out
JavaCGIBridge objects. It wakes
up at a user defined interval and
checks the objects for time out then.
Note that this thread will not start unless
setCleanTime() has been called with a
time other than 0.
- See Also:
- getCleanTime, setCleanTime
cleanPool
public synchronized void cleanPool()
- Checks the pool to see if any JavaCGIBridge
objects have timed out. If they have, it shuts
down the object, notifies the observers of the
timeout exception, and then gets removed from
the pool.
This method is generally called from within
the pool's clean up thread. However, this
method has been made public in case you want
to deterministically call this routine at
various stages in your program.
The cleanPool will also make sure that no
more than the maxSpareObjects will exist
in the pool.
- See Also:
- removeJavaCGIBridge, getCleanTime, setCleanTime, clearPool, getMaxSpareObjects, setMaxSpareObjects
getDefaultTimeOut
public int getDefaultTimeOut()
- Returns the default communication time out
in milliseconds for the class. The default is
initially set to 10 seconds.
When the object retrieves data from a URL, it must get
the data within timeout milliseconds or a
JavaCGIBridgeTimeOutException is thrown.
- Returns:
- default communication time out in milliseconds
- See Also:
- setDefaultTimeOut
setDefaultTimeOut
public void setDefaultTimeOut(int t)
- Sets the default communication time out in
milliseconds for the class. The default is initially
set to 10 seconds.
When the object retrieves data from a URL, it must get
the data within timeout milliseconds or a
JavaCGIBridgeTimeOutException is thrown.
- Parameters:
- t - default communication time out in milliseconds
- See Also:
- getDefaultTimeOut
getDefaultParseAsRaw
public boolean getDefaultParseAsRaw()
- Returns the default ParseAsRaw value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool. The default value for this parameter is false.
- Returns:
- default ParseAsRaw value to be assigned
- See Also:
- setDefaultParseAsRaw
setDefaultParseAsRaw
public void setDefaultParseAsRaw(boolean b)
- Sets the default ParseAsRaw value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool. The default value for this parameter
is initially set to false.
- Parameters:
- b - default ParseAsRaw value to be assigned
- See Also:
- getDefaultParseAsRaw
getDefaultParsedNotifyInterval
public int getDefaultParsedNotifyInterval()
- Returns the default ParsedNotifyInterval value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool. The default value for this parameter is 0.
- Returns:
- default ParsedNotifyInterval value to be assigned
- See Also:
- setDefaultParsedNotifyInterval
setDefaultParsedNotifyInterval
public void setDefaultParsedNotifyInterval(int i)
- Sets the default ParsedNotifyInterval value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool. The default value for this parameter
is initially set to 0.
- Parameters:
- i - default ParsedNotifyInterval value to be assigned
- See Also:
- getDefaultParsedNotifyInterval
getDefaultRawNotifyInterval
public int getDefaultRawNotifyInterval()
- Returns the default RawNotifyInterval value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool. The default value for this parameter is 0.
- Returns:
- default RawNotifyInterval value to be assigned
- See Also:
- setDefaultRawNotifyInterval
setDefaultRawNotifyInterval
public void setDefaultRawNotifyInterval(int i)
- Sets the default RawNotifyInterval value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool. The default value for this parameter
is initially set to 0.
- Parameters:
- i - default RawNotifyInterval value to be assigned
- See Also:
- getDefaultRawNotifyInterval
getDefaultStartDataSeparator
public String getDefaultStartDataSeparator()
- Returns the default Start of Data separator value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool. The default value for this parameter is "<!--start of data-->\n".
- Returns:
- default start of data separator value to be assigned
- See Also:
- setDefaultStartDataSeparator
setDefaultStartDataSeparator
public void setDefaultStartDataSeparator(String s)
- Sets the default Start of Data value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool. The default value for this parameter
is initially set to "<!--start of data-->\n".
- Parameters:
- s - default start of data value to be assigned
- See Also:
- getDefaultStartDataSeparator
getDefaultEndDataSeparator
public String getDefaultEndDataSeparator()
- Returns the default End of Data separator value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool. The default value for this parameter is "<!--end of data-->".
- Returns:
- default end of data value to be assigned
- See Also:
- setDefaultEndData
setDefaultEndDataSeparator
public void setDefaultEndDataSeparator(String s)
- Sets the default End of Data value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool. The default value for this parameter
is initially set to "<!--end of data-->".
- Parameters:
- s - default end of data value to be assigned
- See Also:
- getDefaultEndData
getDefaultFieldSeparator
public String getDefaultFieldSeparator()
- Returns the default field separator value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool. The default value for this parameter is "|".
- Returns:
- default field separator value to be assigned
- See Also:
- setDefaultFieldSeparator
setDefaultFieldSeparator
public void setDefaultFieldSeparator(String s)
- Sets the default field separator value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool. The default value for this parameter
is initially set to "|".
- Parameters:
- s - default field separator value to be assigned
- See Also:
- getDefaultFieldSeparator
getDefaultRecordSeparator
public String getDefaultRecordSeparator()
- Returns the default record separator value to be assigned
to the JavaCGIBridge object when it is handed out from
the pool. The default value for this parameter is "\n".
- Returns:
- default record separator value to be assigned
- See Also:
- setDefaultRecordSeparator
setDefaultRecordSeparator
public void setDefaultRecordSeparator(String s)
- Sets the default record separator value to be assigned
to the JavaCGIBridge object when it is handed out
from the pool. The default value for this parameter
is initially set to "\n".
- Parameters:
- s - default record separator value to be assigned
- See Also:
- getDefaultRecordSeparator
All Packages Class Hierarchy This Package Previous Next Index