Class NetworkServerMBeanImpl
- java.lang.Object
-
- org.apache.derby.impl.drda.NetworkServerMBeanImpl
-
- All Implemented Interfaces:
NetworkServerMBean
class NetworkServerMBeanImpl extends java.lang.Object implements NetworkServerMBean
This is an implementation of the
org.apache.derby.mbeans.drda.NetworkServerMBean
, providing management and monitoring capabilities related to the Network Server through JMX.This bean uses callbacks to the NetworkServerControlImpl class instead of invoking NetworkServerControl, as it is the impl class that contains most of the information we want to expose via JMX.
- See Also:
NetworkServerMBean
-
-
Field Summary
Fields Modifier and Type Field Description private static SystemPermission
CONTROL
private long
lastReceiveBytes
private long
lastReceiveTime
private long
lastSentBytes
private long
lastSentTime
private static SystemPermission
MONITOR
private int
receiveResult
private int
sentResult
private NetworkServerControlImpl
server
private long
startTime
-
Constructor Summary
Constructors Constructor Description NetworkServerMBeanImpl(NetworkServerControlImpl nsc)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static void
checkControl()
Ensure the caller has permission to control the network server.private static void
checkMonitor()
Ensure the caller has permission to monitor the network server.private static void
checkPermission(SystemPermission permission)
int
getAccumulatedConnectionCount()
Gets the accumulated number of connections.int
getActiveConnectionCount()
Gets the number of currently active connections.long
getBytesReceived()
Gets the total number of bytes read by the server since it was started.int
getBytesReceivedPerSecond()
Gets the number of bytes received per second by the Network Server.long
getBytesSent()
Gets the total number of bytes written by the server since it was started.int
getBytesSentPerSecond()
Gets the number of bytes sent per second by the Network Server.int
getConnectionCount()
Gets the total number of current connections (waiting or active) to the Network Server.int
getConnectionThreadPoolSize()
Get the size of the connection thread pool.java.lang.String
getDrdaHost()
Gets the network interface address on which the Network Server is listening.boolean
getDrdaKeepAlive()
Reports whether or not the Derby Network Server will send keep-alive probes and attempt to clean up connections for disconnected clients (the value of thederby.drda.keepAlive
property).int
getDrdaMaxThreads()
Reports the maximum number of client connection threads the Network Server will allocate at any given time.int
getDrdaPortNumber()
Gets the port number on which the Network Server is listening for client connections.java.lang.String
getDrdaSecurityMechanism()
The Derby security mechanism required by the Network Server for all client connections.java.lang.String
getDrdaSslMode()
Reports whether client connections must be encrypted using Secure Sockets Layer (SSL), and whether certificate based peer authentication is enabled.int
getDrdaStreamOutBufferSize()
The size of the buffer used for streaming BLOB and CLOB from server to client.int
getDrdaTimeSlice()
If the server propertyderby.drda.maxThreads
is set to a non-zero value, this is the number of milliseconds that each client connection will actively use in the Network Server before yielding to another connection.boolean
getDrdaTraceAll()
Whether server-side tracing is enabled for all client connections (sessions).java.lang.String
getDrdaTraceDirectory()
Indicates the location of tracing files on the server host, if server tracing has been enabled.private java.lang.String
getServerProperty(java.lang.String property)
Gets the value of a specific network server setting (property).long
getStartTime()
Return start time.long
getUptime()
Return time server has been running.int
getWaitingConnectionCount()
Gets the number of currently waiting connections.void
ping()
Pings the Network Server.
-
-
-
Field Detail
-
server
private NetworkServerControlImpl server
-
startTime
private final long startTime
-
CONTROL
private static final SystemPermission CONTROL
-
MONITOR
private static final SystemPermission MONITOR
-
lastReceiveTime
private long lastReceiveTime
-
lastReceiveBytes
private long lastReceiveBytes
-
receiveResult
private int receiveResult
-
lastSentTime
private long lastSentTime
-
lastSentBytes
private long lastSentBytes
-
sentResult
private int sentResult
-
-
Constructor Detail
-
NetworkServerMBeanImpl
NetworkServerMBeanImpl(NetworkServerControlImpl nsc)
-
-
Method Detail
-
checkControl
private static void checkControl()
Ensure the caller has permission to control the network server.
-
checkMonitor
private static void checkMonitor()
Ensure the caller has permission to monitor the network server.
-
checkPermission
private static void checkPermission(SystemPermission permission)
-
getDrdaHost
public java.lang.String getDrdaHost()
Description copied from interface:NetworkServerMBean
Gets the network interface address on which the Network Server is listening. This corresponds to the value of the
derby.drda.host
property.For example, the value "
localhost
" means that the Network Server is listening on the local loopback interface only.The special value "
0.0.0.0
" (IPv4 environments only) represents the "unspecified address" - also known as the anylocal or wildcard address. In this context this means that the server is listening on all network interfaces (and may thus be able to see connections from both the local host as well as remote hosts, depending on which network interfaces are available).Requires
SystemPermission("server", "control")
if a security manager is installed.- Specified by:
getDrdaHost
in interfaceNetworkServerMBean
- Returns:
- the the network interface address on which the Network Server is
listening (
derby.drda.host
)
-
getDrdaKeepAlive
public boolean getDrdaKeepAlive()
Description copied from interface:NetworkServerMBean
Reports whether or not the Derby Network Server will send keep-alive probes and attempt to clean up connections for disconnected clients (the value of the
derby.drda.keepAlive
property).If
true
, a keep-alive probe is sent to the client if a "long time" (by default, more than two hours) passes with no other data being sent or received. This will detect and clean up connections for clients on powered-off machines or clients that have disconnected unexpectedly.If
false
, Derby will not attempt to clean up connections from disconnected clients, and will not send keep-alive probes.Requires
SystemPermission("server", "monitor")
if a security manager is installed.See also the documentation for the property
derby.drda.keepAlive
in the Derby Server and Administration Guide, section Managing the Derby Network Server, subsection Setting Network Server Properties, subsubsection derby.drda.keepAlive property.- Specified by:
getDrdaKeepAlive
in interfaceNetworkServerMBean
- Returns:
true
if Derby Network Server will send keep-alive probes and attempt to clean up connections for disconnected clients (derby.drda.keepAlive
)
-
getDrdaMaxThreads
public int getDrdaMaxThreads()
Description copied from interface:NetworkServerMBean
Reports the maximum number of client connection threads the Network Server will allocate at any given time. This corresponds to the
derby.drda.maxThreads
property.Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getDrdaMaxThreads
in interfaceNetworkServerMBean
- Returns:
- the maximum number of client connection threads the Network
Server will allocate at any given time
(
derby.drda.maxThreads
)
-
getDrdaPortNumber
public int getDrdaPortNumber()
Description copied from interface:NetworkServerMBean
Gets the port number on which the Network Server is listening for client connections. This corresponds to the value of the
derby.drda.portNumber
Network Server setting.Requires
SystemPermission("server", "control")
if a security manager is installed.- Specified by:
getDrdaPortNumber
in interfaceNetworkServerMBean
- Returns:
- the port number on which the Network Server is listening for client connections.
-
getDrdaSecurityMechanism
public java.lang.String getDrdaSecurityMechanism()
Description copied from interface:NetworkServerMBean
The Derby security mechanism required by the Network Server for all client connections. This corresponds to the value of the
derby.drda.securityMechanism
property on the server.If not set, the empty String will be returned, which means that the Network Server accepts any connection which uses a valid security mechanism.
For a list of valid security mechanisms, refer to the documentation for the
derby.drda.securityMechanism
property in the Derby Server and Administration Guide.Requires
SystemPermission("server", "control")
if a security manager is installed.- Specified by:
getDrdaSecurityMechanism
in interfaceNetworkServerMBean
- Returns:
- the security mechanism required by the Network Server for all
client connections (
derby.drda.securityMechanism
)
-
getDrdaSslMode
public java.lang.String getDrdaSslMode()
Description copied from interface:NetworkServerMBean
Reports whether client connections must be encrypted using Secure Sockets Layer (SSL), and whether certificate based peer authentication is enabled. Refers to the
derby.drda.sslMode
property.Peer authentication means that the other side of the SSL connection is authenticated based on a trusted certificate installed locally.
The value returned is one of "
off
" (no SSL encryption), "basic
" (SSL encryption, no peer authentication) and "peerAuthentication
" (SSL encryption and peer authentication). Refer to the Derby Server and Administration Guide for more details.Requires
SystemPermission("server", "control")
if a security manager is installed.- Specified by:
getDrdaSslMode
in interfaceNetworkServerMBean
- Returns:
- whether client connections must be encrypted using Secure
Sockets Layer (SSL), and whether certificate based peer
authentication is enabled (
derby.drda.sslMode
)
-
getDrdaStreamOutBufferSize
public int getDrdaStreamOutBufferSize()
Description copied from interface:NetworkServerMBean
The size of the buffer used for streaming BLOB and CLOB from server to client. Refers to the
derby.drda.streamOutBufferSize
property.This setting may improve streaming performance when the default sizes of packets being sent are significantly smaller than the maximum allowed packet size in the network.
Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getDrdaStreamOutBufferSize
in interfaceNetworkServerMBean
- Returns:
- the size of the buffer used for streaming blob/clob from server
to client (
derby.drda.streamOutBufferSize
)
-
getDrdaTimeSlice
public int getDrdaTimeSlice()
Description copied from interface:NetworkServerMBean
If the server property
derby.drda.maxThreads
is set to a non-zero value, this is the number of milliseconds that each client connection will actively use in the Network Server before yielding to another connection. If this value is 0, a waiting connection will become active once a currently active connection is closed.Refers to the
derby.drda.timeSlice
server property.Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getDrdaTimeSlice
in interfaceNetworkServerMBean
- Returns:
- the number of milliseconds that each client connection will
actively use in the Network Server before yielding to
another connection (
derby.drda.timeSlice
) - See Also:
NetworkServerMBean.getDrdaMaxThreads()
-
getDrdaTraceAll
public boolean getDrdaTraceAll()
Description copied from interface:NetworkServerMBean
Whether server-side tracing is enabled for all client connections (sessions). Refers to the
derby.drda.traceAll
server property.Tracing may for example be useful when providing technical support information. The Network Server also supports tracing for individual connections (sessions), see the Derby Server and Administration Guide ("Controlling tracing by using the trace facility") for details.
When tracing is enabled, tracing information from each client connection will be written to a separate trace file.
Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getDrdaTraceAll
in interfaceNetworkServerMBean
- Returns:
- whether tracing for all client connections is enabled
(
derby.drda.traceAll
) - See Also:
NetworkServerMBean.getDrdaTraceDirectory()
-
getDrdaTraceDirectory
public java.lang.String getDrdaTraceDirectory()
Description copied from interface:NetworkServerMBean
Indicates the location of tracing files on the server host, if server tracing has been enabled.
If the server setting
derby.drda.traceDirectory
is set, its value will be returned. Otherwise, the Network Server's default values will be taken into account when producing the result.Requires
SystemPermission("server", "control")
if a security manager is installed.- Specified by:
getDrdaTraceDirectory
in interfaceNetworkServerMBean
- Returns:
- the potential location of tracing files on the server host
- See Also:
NetworkServerMBean.getDrdaTraceAll()
-
getConnectionCount
public int getConnectionCount()
Description copied from interface:NetworkServerMBean
Gets the total number of current connections (waiting or active) to the Network Server.
Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getConnectionCount
in interfaceNetworkServerMBean
- Returns:
- the number of current connections
- See Also:
NetworkServerMBean.getActiveConnectionCount()
,NetworkServerMBean.getWaitingConnectionCount()
-
getActiveConnectionCount
public int getActiveConnectionCount()
Description copied from interface:NetworkServerMBean
Gets the number of currently active connections. All connections are active if the DrdaMaxThreads attribute (
derby.drda.maxThreads
property) is 0.If DrdaMaxThreads is > 0 and DrdaTimeSlice is 0, connections remain active until they are closed. If there are more than DrdaMaxThreads connections, inactive connections will be waiting for some active connection to close. The connection request will return when the connection becomes active.
If DrdaMaxThreads is > 0 and DrdaTimeSlice > 0, connections will be alternating beetween active and waiting according to Derby's time slicing algorithm.
Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getActiveConnectionCount
in interfaceNetworkServerMBean
- Returns:
- the number of active connections
- See Also:
NetworkServerMBean.getDrdaMaxThreads()
,NetworkServerMBean.getDrdaTimeSlice()
,NetworkServerMBean.getWaitingConnectionCount()
-
getWaitingConnectionCount
public int getWaitingConnectionCount()
Description copied from interface:NetworkServerMBean
Gets the number of currently waiting connections. This number will always be 0 if DrdaMaxThreads is 0. Otherwise, if the total number of connections is less than or equal to DrdaMaxThreads, then no connections are waiting.
Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getWaitingConnectionCount
in interfaceNetworkServerMBean
- Returns:
- the number of waiting connections
- See Also:
NetworkServerMBean.getActiveConnectionCount()
,NetworkServerMBean.getDrdaMaxThreads()
,NetworkServerMBean.getDrdaTimeSlice()
-
getConnectionThreadPoolSize
public int getConnectionThreadPoolSize()
Description copied from interface:NetworkServerMBean
Get the size of the connection thread pool. If DrdaMaxThreads (
derby.drda.maxThreads
) is set to a non-zero value, the size of the thread pool will not exceed this value.Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getConnectionThreadPoolSize
in interfaceNetworkServerMBean
- Returns:
- the size of the Network Server's connection thread pool
- See Also:
NetworkServerMBean.getDrdaMaxThreads()
-
getAccumulatedConnectionCount
public int getAccumulatedConnectionCount()
Description copied from interface:NetworkServerMBean
Gets the accumulated number of connections. This includes all active and waiting connections since the Network Server was started. This number will not decrease as long as the Network Server is running.
Require
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getAccumulatedConnectionCount
in interfaceNetworkServerMBean
- Returns:
- the accumulated number of connections made since server startup
-
getBytesReceived
public long getBytesReceived()
Description copied from interface:NetworkServerMBean
Gets the total number of bytes read by the server since it was started.
Require
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getBytesReceived
in interfaceNetworkServerMBean
- Returns:
- the total number of bytes received by the server
-
getBytesSent
public long getBytesSent()
Description copied from interface:NetworkServerMBean
Gets the total number of bytes written by the server since it was started.
Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getBytesSent
in interfaceNetworkServerMBean
- Returns:
- the total number of bytes sent by the server
-
getBytesReceivedPerSecond
public int getBytesReceivedPerSecond()
Description copied from interface:NetworkServerMBean
Gets the number of bytes received per second by the Network Server. This number is calculated by taking into account the number of bytes received since the last calculation (or since MBean startup if it is the first time this attibute is being read).
The shortest interval measured is 1 second. This means that a new value will not be calculated unless there has been at least 1 second since the last calculation.
Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getBytesReceivedPerSecond
in interfaceNetworkServerMBean
- Returns:
- the number of bytes received per second
-
getBytesSentPerSecond
public int getBytesSentPerSecond()
Description copied from interface:NetworkServerMBean
Gets the number of bytes sent per second by the Network Server. This number is calculated by taking into account the number of bytes sent since the last calculation (or since MBean startup if it is the first time this attibute is being read).
The shortest interval measured is 1 second. This means that a new value will not be calculated unless there has been at least 1 second since the last calculation.
Requires
SystemPermission("server", "monitor")
if a security manager is installed.- Specified by:
getBytesSentPerSecond
in interfaceNetworkServerMBean
- Returns:
- the number of bytes sent per millisecond
-
getStartTime
public long getStartTime()
Return start time.- Specified by:
getStartTime
in interfaceNetworkServerMBean
- Returns:
- the difference, measured in milliseconds, between the time the Network Server was started and Unix epoch (1970-01-01T00:00:00Z)
- See Also:
System.currentTimeMillis()
-
getUptime
public long getUptime()
Return time server has been running.- Specified by:
getUptime
in interfaceNetworkServerMBean
- Returns:
- the difference, measured in milliseconds, between the current time and the time the Network Server was started
- See Also:
NetworkServerMBean.getStartTime()
-
ping
public void ping() throws java.lang.Exception
Pings the Network Server.- Specified by:
ping
in interfaceNetworkServerMBean
- Throws:
java.lang.Exception
- if the ping fails.- See Also:
NetworkServerMBean.ping()
-
getServerProperty
private java.lang.String getServerProperty(java.lang.String property)
Gets the value of a specific network server setting (property). Most server-related property keys have the prefixderby.drda.
and may be found in the org.apache.derby.iapi.reference.Property class.- Parameters:
property
- the name of the server property- Returns:
- the value of the given server property
- See Also:
Property
-
-