Package org.opends.server.protocols.jmx
Class JmxClientConnection
- java.lang.Object
-
- org.opends.server.api.ClientConnection
-
- org.opends.server.protocols.jmx.JmxClientConnection
-
- All Implemented Interfaces:
EventListener
,NotificationListener
,RequestHandler
public class JmxClientConnection extends ClientConnection implements NotificationListener
This class defines the set of methods and structures that must be implemented by a Directory Server client connection.
-
-
Field Summary
Fields Modifier and Type Field Description protected String
jmxConnectionID
The JMX connection ID for this client connection.-
Fields inherited from class org.opends.server.api.ClientConnection
authenticationInfo, bindInProgress, saslBindInProgress, startTLSInProgress
-
-
Constructor Summary
Constructors Constructor Description JmxClientConnection(JmxConnectionHandler jmxConnectionHandler, AuthenticationInfo authInfo, ServerContext serverContext)
Creates a new Jmx client connection that will be authenticated as as the specified user.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
disconnect(DisconnectReason disconnectReason, boolean sendNotification, LocalizableMessage message)
Closes the connection to the client, optionally sending it a message indicating the reason for the closure.void
disconnectWithoutUnbind(DisconnectReason disconnectReason, LocalizableMessage message)
Closes the connection to the client, optionally sending it a message indicating the reason for the closure.protected void
finalize()
Called by the Gc when the object is garbage collected Release the cursor in case the iterator was badly used and releaseCursor was never called.String
getClientAddress()
Retrieves a string representation of the address of the client.int
getClientPort()
Retrieves the port number for this connection on the client system if available.ConnectionHandler<?>
getConnectionHandler()
Retrieves the connection handler that accepted this client connection.long
getConnectionID()
Retrieves the unique identifier that has been assigned to this connection.JsonValue
getMonitorSummary()
Returns a summary of this client connection in JSON (format that is both human readable and machine parseable).Operation
getOperationInProgress(int messageID)
Retrieves the operation in progress with the specified message ID.String
getProtocol()
Retrieves the protocol that the client is using to communicate with the Directory Server.InetAddress
getRemoteAddress()
Retrieves theInetAddress
associated with the remote client system.String
getServerAddress()
Retrieves a string representation of the address on the server to which the client connected.int
getServerPort()
Retrieves the port number for this connection on the server system if available.int
getSSF()
Return the Security Strength Factor of a client connection.Flowable<Response>
handle(org.forgerock.services.context.Context context, Request request)
Processes the provided request in a reactive way, which should be either aBindRequest
or aSearchRequest
.void
handleNotification(Notification notif, Object handback)
boolean
isConnectionValid()
Returns whether the Directory Server believes this connection to be valid and available for communication.boolean
isSecure()
Indicates whether this client connection is currently using a secure mechanism to communicate with the server.void
processBind(BindRequest request)
Processes a bind request.Result
processSearch(SearchRequest request)
Processes an JMX search operation with the provided information.void
removeOperationInProgress(int messageID)
Removes the provided operation from the set of operations in progress for this client connection.protected boolean
sendIntermediateResponseMessage(Operation operation, IntermediateResponse intermediateResponse)
Sends the provided intermediate response message to the client.void
sendSearchEntry(SearchOperation searchOperation, SearchResultEntry searchEntry)
Sends the provided search result entry to the client.boolean
sendSearchReference(SearchOperation searchOperation, SearchResultReference searchReference)
Sends the provided search result reference to the client.void
toString(StringBuilder buffer)
Appends a string representation of this client connection to the provided buffer.-
Methods inherited from class org.opends.server.api.ClientConnection
deregisterPersistentSearch, finalizeConnectionInternal, finishBind, finishSaslBind, finishStartTLS, getAuthenticationInfo, getClientHostPort, getConnectTimeString, getIdleTime, getIdleTimeLimit, getKeyManagerProviderDN, getMaxBlockedWriteTimeLimit, getMaxCandidateSetSize, getPersistentSearches, getSASLAuthStateInfo, getServerContext, getServerHostPort, getSizeLimit, getTimeLimit, hasAllPrivileges, hasPrivilege, hasPrivilege, isInnerConnection, mustChangePassword, registerPersistentSearch, sendResponse, sendResponse, setAuthenticationInfo, setIdleTimeLimit, setMaxCandidateSetSize, setMustChangePassword, setResourceLimits, setSASLAuthStateInfo, setSizeLimit, setTimeLimit, setUnauthenticated, toString, updateAuthenticationInfo, updatePrivileges, writeTimeLimitExceeded
-
-
-
-
Field Detail
-
jmxConnectionID
protected String jmxConnectionID
The JMX connection ID for this client connection.
-
-
Constructor Detail
-
JmxClientConnection
public JmxClientConnection(JmxConnectionHandler jmxConnectionHandler, AuthenticationInfo authInfo, ServerContext serverContext)
Creates a new Jmx client connection that will be authenticated as as the specified user.- Parameters:
jmxConnectionHandler
- The connection handler on which we should be registeredauthInfo
- the User authentication infoserverContext
- the server context
-
-
Method Detail
-
handle
public Flowable<Response> handle(org.forgerock.services.context.Context context, Request request)
Processes the provided request in a reactive way, which should be either aBindRequest
or aSearchRequest
.- Specified by:
handle
in interfaceRequestHandler
- Parameters:
context
- The context to process the request, which is expected to contain aRequestDJContext
request
- The request to process. OnlyBindRequest
andSearchRequest
are handled, other requests will return aLdapException
- Returns:
- a stream of responses
-
handleNotification
public void handleNotification(Notification notif, Object handback)
- Specified by:
handleNotification
in interfaceNotificationListener
-
getConnectionID
public long getConnectionID()
Description copied from class:ClientConnection
Retrieves the unique identifier that has been assigned to this connection.- Specified by:
getConnectionID
in classClientConnection
- Returns:
- The unique identifier that has been assigned to this connection.
-
getConnectionHandler
public ConnectionHandler<?> getConnectionHandler()
Description copied from class:ClientConnection
Retrieves the connection handler that accepted this client connection.- Specified by:
getConnectionHandler
in classClientConnection
- Returns:
- The connection handler that accepted this client connection.
-
getProtocol
public String getProtocol()
Description copied from class:ClientConnection
Retrieves the protocol that the client is using to communicate with the Directory Server.- Specified by:
getProtocol
in classClientConnection
- Returns:
- The protocol that the client is using to communicate with the Directory Server.
-
getClientAddress
public String getClientAddress()
Description copied from class:ClientConnection
Retrieves a string representation of the address of the client.- Specified by:
getClientAddress
in classClientConnection
- Returns:
- A string representation of the address of the client.
-
getClientPort
public int getClientPort()
Description copied from class:ClientConnection
Retrieves the port number for this connection on the client system if available.- Specified by:
getClientPort
in classClientConnection
- Returns:
- The port number for this connection on the client system or -1 if there is no client port associated with this connection (e.g. internal client).
-
getServerAddress
public String getServerAddress()
Description copied from class:ClientConnection
Retrieves a string representation of the address on the server to which the client connected.- Specified by:
getServerAddress
in classClientConnection
- Returns:
- A string representation of the address on the server to which the client connected.
-
getServerPort
public int getServerPort()
Description copied from class:ClientConnection
Retrieves the port number for this connection on the server system if available.- Specified by:
getServerPort
in classClientConnection
- Returns:
- The port number for this connection on the server system or -1 if there is no server port associated with this connection (e.g. internal client).
-
getRemoteAddress
public InetAddress getRemoteAddress()
Description copied from class:ClientConnection
Retrieves theInetAddress
associated with the remote client system.- Specified by:
getRemoteAddress
in classClientConnection
- Returns:
- The
InetAddress
associated with the remote client system. It may benull
if the client is not connected over an IP-based connection.
-
isConnectionValid
public boolean isConnectionValid()
Description copied from class:ClientConnection
Returns whether the Directory Server believes this connection to be valid and available for communication.- Specified by:
isConnectionValid
in classClientConnection
- Returns:
- true if the connection is valid, false otherwise
-
isSecure
public boolean isSecure()
Description copied from class:ClientConnection
Indicates whether this client connection is currently using a secure mechanism to communicate with the server. Note that this may change over time based on operations performed by the client or server (e.g., it may go fromfalse
totrue
if the client uses the StartTLS extended operation).- Specified by:
isSecure
in classClientConnection
- Returns:
true
if the client connection is currently using a secure mechanism to communicate with the server, orfalse
if not.
-
processSearch
public Result processSearch(SearchRequest request)
Processes an JMX search operation with the provided information.- Parameters:
request
- The search request.- Returns:
- A result
-
processBind
public void processBind(BindRequest request) throws LdapException
Processes a bind request.- Parameters:
request
- The bind request.- Throws:
LdapException
- If result is not SUCCESS or an error occurs
-
sendSearchEntry
public void sendSearchEntry(SearchOperation searchOperation, SearchResultEntry searchEntry)
Description copied from class:ClientConnection
Sends the provided search result entry to the client.- Specified by:
sendSearchEntry
in classClientConnection
- Parameters:
searchOperation
- The search operation with which the entry is associated.searchEntry
- The search result entry to be sent to the client.
-
sendSearchReference
public boolean sendSearchReference(SearchOperation searchOperation, SearchResultReference searchReference)
Description copied from class:ClientConnection
Sends the provided search result reference to the client.- Specified by:
sendSearchReference
in classClientConnection
- Parameters:
searchOperation
- The search operation with which the reference is associated.searchReference
- The search result reference to be sent to the client.- Returns:
true
if the client is able to accept referrals, orfalse
if the client cannot handle referrals and no more attempts should be made to send them for the associated search operation.
-
sendIntermediateResponseMessage
protected boolean sendIntermediateResponseMessage(Operation operation, IntermediateResponse intermediateResponse)
Description copied from class:ClientConnection
Sends the provided intermediate response message to the client.- Specified by:
sendIntermediateResponseMessage
in classClientConnection
- Parameters:
operation
- The operation with which the intermediate response is associated.intermediateResponse
- The intermediate response message to be sent.- Returns:
true
if processing on the associated operation should continue, orfalse
if not.
-
disconnect
public void disconnect(DisconnectReason disconnectReason, boolean sendNotification, LocalizableMessage message)
Description copied from class:ClientConnection
Closes the connection to the client, optionally sending it a message indicating the reason for the closure. Note that the ability to send a notice of disconnection may not be available for all protocols or under all circumstances. Also note that when attempting to disconnect a client connection as a part of operation processing (e.g., within a plugin or other extension), thedisconnectClient
method within that operation should be called rather than invoking this method directly.All subclasses must invoke the
finalizeConnectionInternal
method during the course of processing this method.- Specified by:
disconnect
in classClientConnection
- Parameters:
disconnectReason
- The disconnect reason that provides the generic cause for the disconnect.sendNotification
- Indicates whether to try to provide notification to the client that the connection will be closed.message
- The message to send to the client. It may benull
if no notification is to be sent.
-
disconnectWithoutUnbind
public void disconnectWithoutUnbind(DisconnectReason disconnectReason, LocalizableMessage message)
Closes the connection to the client, optionally sending it a message indicating the reason for the closure. Note that the ability to send a notice of disconnection may not be available for all protocols or under all circumstances.Contrary to
disconnect(DisconnectReason, boolean, LocalizableMessage)
this method does not attempt to perform an UNBIND operation on the connection.- Parameters:
disconnectReason
- The disconnect reason that provides the generic cause for the disconnect.message
- The message to send to the client. It may benull
if no notification is to be sent.
-
getOperationInProgress
public Operation getOperationInProgress(int messageID)
Description copied from class:ClientConnection
Retrieves the operation in progress with the specified message ID.- Specified by:
getOperationInProgress
in classClientConnection
- Parameters:
messageID
- The message ID of the operation to retrieve.- Returns:
- The operation in progress with the specified message ID, or
null
if no such operation could be found.
-
removeOperationInProgress
public void removeOperationInProgress(int messageID)
Description copied from class:ClientConnection
Removes the provided operation from the set of operations in progress for this client connection. Note that this does not make any attempt to cancel any processing that may already be in progress for the operation.- Specified by:
removeOperationInProgress
in classClientConnection
- Parameters:
messageID
- The message ID of the operation to remove from the set of operations in progress.
-
getMonitorSummary
public JsonValue getMonitorSummary()
Description copied from class:ClientConnection
Returns a summary of this client connection in JSON (format that is both human readable and machine parseable).- Specified by:
getMonitorSummary
in classClientConnection
- Returns:
- A summary of this client connection in JSON.
-
toString
public void toString(StringBuilder buffer)
Description copied from class:ClientConnection
Appends a string representation of this client connection to the provided buffer.- Specified by:
toString
in classClientConnection
- Parameters:
buffer
- The buffer to which the information should be appended.
-
finalize
protected void finalize()
Called by the Gc when the object is garbage collected Release the cursor in case the iterator was badly used and releaseCursor was never called.
-
getSSF
public int getSSF()
Description copied from class:ClientConnection
Return the Security Strength Factor of a client connection.- Specified by:
getSSF
in classClientConnection
- Returns:
- An integer representing the SSF value of a connection.
-
-