|
SAP NetWeaver 2004S SPS 10 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.sap.mw.jco.JCO.Pool
This class encapsulates a connection pool.
A pool is a set of client-connections to a certain destination with the same logon data.
The pool creates automatically new connections to the specified remote system
or returns an already existing one. The reusing of existing connections can increase the performance
of your application by avoiding of logging on to the remote server.
The pool class also provides methods to return a connection
back to the pool when it is no longer needed.
It checks periodically which connections are not longer in use and
can be closed in order to save valuable system resources.
The time period after which the pool checks the connections
as well as the time after which a connection will time-out
can be configured by the application.
Note: SAP recommends to use a connection pool with a technical user for application
internal calls only. If authenticated user makes use of the application calling remote functions,
it is recommended to use dedicated connections with the identity of the accessing user. This
allows the backend to check for correct access permissions.
Note:All pools created by an application are visible for all applications
running in the same VM.
| Field Summary | |
protected com.sap.mw.jco.util.LimitedList |
available
List of free connections in this pool |
protected long |
connection_timeout
The time (ms) after which a connection will be regarded as timed out |
protected int |
current_used
Number of allocated connections from this pool |
int |
INFINITE
The max of connections these can be created by the pool |
protected boolean |
is_initialized
Indicates whether the pool is initialized or not |
protected JCO.PoolManager |
manager
Reference to the pool manager |
protected JCO.Client |
master
The master connection for this pool |
protected int |
max_connections
The max. number of connections these can be created by the pool |
protected int |
max_pool_size
The max. number of opened connections holding by the pool |
protected int |
max_used
The max. number of connections used so far |
protected long |
max_wait_time
The max. time to wait for a getClient() request |
protected String |
name
Name of this pool |
protected long |
next_timeout_check
The time interval (ms) after which the connections will be checked for timeouts periodically |
protected byte |
r3_version
The R/3 version of the partner (0, 2, 3 or 4) |
protected boolean |
reset_on_release
Whether to reset the client connection on release |
protected long |
timeout_check_period
The time interval (ms) after which the connections will be checked for timeouts periodically |
protected com.sap.mw.jco.util.ObjectList |
waiting_threads
Queue that holds waiting threads |
| Constructor Summary | |
protected |
JCO.Pool(JCO.PoolManager manager,
String name,
JCO.Client master,
int max_pool_size)
Creates a new pool. |
| Method Summary | |
protected void |
checkForTimeout()
Process the necessary operation on timeout |
protected void |
clear()
Disconnects all available clients |
void |
detachFromPool(JCO.Client client)
Detaches a client-connection from the pool. |
boolean |
getAbapDebug()
Returns true if ABAP debugging is enabled for the connections of this pool, and false otherwise. |
protected JCO.Client |
getClient(boolean reset)
Returns a client from the pool |
long |
getConnectionTimeout()
Returns the connection timeout in milliseconds. |
int |
getCurrentPoolSize()
Returns the number of connections that are created for this pool and are currently alive. |
int |
getMaxConnections()
Returns the maximum number of connections that can be allocated from the pool. |
int |
getMaxPoolSize()
Returns the maximum number of connections that will be pooled. |
int |
getMaxUsed()
Returns the max. number of connections used simultaneously so far |
long |
getMaxWaitTime()
Returns the maximum time to wait in a connection request for a free connection. |
String |
getName()
Returns the pool's name |
int |
getNumUsed()
Returns the number of connections in the pool which are currently reserved by the application due to calls to JCO.getClient(). |
int |
getNumWaitingThreads()
Returns the number of threads that are waiting for a connection. |
JCO.PoolManager |
getPoolManager()
Returns the pool manager this pool is a member of |
boolean |
getResetOnRelease()
Returns true if a connection is being cleaned up in JCO.releaseClient(), false otherwise. |
byte[] |
getStates()
Deprecated. This method will be removed in the next release. Use getNumUsed(), getCurrentPoolSize() instead |
long |
getTimeoutCheckPeriod()
Returns the timeout check period in milliseconds. |
boolean |
getTrace()
Returns whether trace for this pool is enabled or not. |
protected void |
initPool()
Initializes the pool |
protected void |
releaseClient(JCO.Client client)
Returns the client connection to the pool |
void |
setAbapDebug(boolean debug)
Enables/disables ABAP debug. |
void |
setConnectionTimeout(long connection_timeout)
Sets the connection timeout in milliseconds. |
void |
setMaxConnections(int max_connections)
Sets the maximum number of connections which can be allocated from the pool. |
void |
setMaxPoolSize(int max_pool_size)
Sets the maximum number of connections which will be held open by the pool for possible future reuse after they have been released. |
void |
setMaxWaitTime(long max_wait_time)
Sets the maximum time to wait in a connection request for a free connection. |
void |
setResetOnRelease(boolean reset_on_release)
Enables/disables cleanup when the client is being returned to its pool. |
void |
setTimeoutCheckPeriod(long timeout_check_period)
Sets the timeout check period in milliseconds. |
void |
setTrace(boolean trace)
Enables/disables RFC tracing for the connections of the pool. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public final int INFINITE
protected String name
protected JCO.Client master
protected int max_pool_size
protected int max_connections
protected long max_wait_time
protected long connection_timeout
protected long timeout_check_period
protected long next_timeout_check
protected int max_used
protected int current_used
protected com.sap.mw.jco.util.LimitedList available
protected com.sap.mw.jco.util.ObjectList waiting_threads
protected JCO.PoolManager manager
protected boolean is_initialized
protected byte r3_version
protected boolean reset_on_release
| Constructor Detail |
protected JCO.Pool(JCO.PoolManager manager,
String name,
JCO.Client master,
int max_pool_size)
manager - the pool-manager this pool will be a member ofmaster - the connection that fully specifies the connection parameters to
a remote server and which will be shared among all connections in this poolmax_pool_size - the max. number of connections that can be opened simultaneously| Method Detail |
protected void initPool()
JCO.Exception - if the pool could not be initializedpublic final void setResetOnRelease(boolean reset_on_release)
reset_on_release - if true reset the connection, e.g. free all resources
that might have been allocated on either the server side or by the local
middleware layer. On systems below SAP 4.0A resetting a connection
effectively means closing and subsequently reopening the connection
which is a very expensive process. However, several scenarios
(e.g. BAPIs) need reinitialized connections while others might not.
This depends strongly on the function modules and their implementation
in the mySAP system. In certain cases it might be worthwhile to switch
the cleanup off for performance reasons. Use with care !public final boolean getResetOnRelease()
public void setAbapDebug(boolean debug)
debug - if true enables ABAP debugging, disables it otherwisepublic final boolean getAbapDebug()
setAbapDebug(boolean)public final boolean getTrace()
public final void setTrace(boolean trace)
trace - if true enables the trace and disables it otherwise.public final String getName()
public final JCO.PoolManager getPoolManager()
public final int getMaxPoolSize()
setMaxPoolSize(int),
getMaxConnections()public final void setMaxPoolSize(int max_pool_size)
IllegalArgumentException - if max_pool_size is
less than zero.getMaxConnections()public final int getMaxConnections()
setMaxConnections(int)public final void setMaxConnections(int max_connections)
max_connections - maximum numbert of connections
JCO.Exception - if an error occurs during resizing of poolsetMaxPoolSize(int)public final int getCurrentPoolSize()
getClient(pool_name) method
plus the number of connections that are currently held by the pool (being the
connections that have been previuosly released with the releaseClient(client)
method).
public final int getMaxUsed()
public final int getNumUsed()
public final int getNumWaitingThreads()
public final void setMaxWaitTime(long max_wait_time)
max_wait_time - the maximum time to wait for a free connection
in millisecondspublic final long getMaxWaitTime()
public long getConnectionTimeout()
setMaxWaitTime(long),
setConnectionTimeout(long),
PoolManager#setConnectionTimeout(long)public void setConnectionTimeout(long connection_timeout)
connection_timeout - the new value for the connection timeout in millisecondsgetConnectionTimeout()public long getTimeoutCheckPeriod()
public void setTimeoutCheckPeriod(long timeout_check_period)
timeout_check_period - the timeout check period in milliseconds.
IllegalArgumentException - if timeout_check_period is negative.getTimeoutCheckPeriod()protected final void clear()
public final byte[] getStates()
getNumUsed(), getCurrentPoolSize() instead
getNumUsed(), getCurrentPoolSize()
to get information about allocated clients and the free client
connections remained in the pool.
Returns an empty array for backwards compatibility.
getNumUsed(),
getCurrentPoolSize()protected final JCO.Client getClient(boolean reset)
reset - if true reset the connection, e.g. free all resources
that might have been allocated on either the server side or by the local
middleware layer. On systems below SAP 4.0A resetting a connection
effectively means closing and subsequently reopening the connection
which is a very expensive process. However, several scenarios
e.g. BAPIs) might need such reinitialized connections. Use with care !
JCO.Exception - with the error group set to JCO.Exception.JCO_ERROR_RESOURCE,
if a client could not be allocated, i.e. the client pool is exhausted or removed.releaseClient(com.sap.mw.jco.JCO.Client)protected final void releaseClient(JCO.Client client)
client - the client connection which is being returned to its pool
JCO.Exception - thrown if a connection could not be released or
disconnected cleanlygetClient(boolean),
setResetOnRelease(boolean)public void detachFromPool(JCO.Client client)
client - the client connection which is being returned to its pool
JCO.Exception - thrown if a connection could not be removed from pool
cleanlyprotected final void checkForTimeout()
|
SAP NetWeaver 2004S SPS 10 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||