|
||||||||||
PREV CLASS (src) NEXT CLASS (src) | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.jboss.mq.Connection
This class implements javax.jms.Connection.
It is also the gateway through wich all calls to the JMS server is done. To do its work it needs a ServerIL to invoke (@see org.jboss.mq.server.ServerIL).
The (new from february 2002) logic for clientID is the following: if logging in with a user and passwork a preconfigured clientID may be automatically delivered from the server.
If the client wants to set it's own clientID it must do so on a connection wich does not have a prefonfigured clientID and it must do so before it calls any other methods on the connection (even getClientID()). It is not allowable to use a clientID that either looks like JBossMQ internal one (beginning with ID) or a clientID that is allready in use by someone, or a clientID that is already preconfigured in the server.
If a preconfigured ID is not get, or a valid one is not set, the server will set an internal ID. This ID is NEVER possible to use for durable subscriptions. If a prefconfigured ID or one manually set is possible to use to create a durable subscriptions is governed by the security configuration of JBossMQ. In the default setup, only preconfigured clientID's are possible to use. If using a SecurityManager, permissions to create a surable subscriptions is * the resiult of a combination of the following:
- The clientID is not one of JBossMQ's internal.
- The user is authenticated and has a role that has create set to true in the security config of the destination.
Notes for JBossMQ developers: All calls, except close(), that is possible to do on a connection must call checkClientID()
Field Summary | |
protected java.lang.String |
clientID
This is the clientID |
protected ClientILService (src) |
clientILService
The object that sets up the client IL |
protected static ClockDaemon |
clockDaemon
Manages the thread that pings the connection to see if it is 'alive' |
protected boolean |
closing
Set a soon as close() is called on the connection. |
protected ConnectionToken (src) |
connectionToken
The connection token is used to identify our connection to the server. |
java.util.HashMap |
destinationSubscriptions
Maps a destination to a LinkedList of Subscriptions |
boolean |
modeStop
Is the connection stopped ? |
protected long |
pingPeriod
How often to ping the connection |
protected boolean |
ponged
This feild is reset when a ping is sent, set when ponged. |
protected ServerIL (src) |
serverIL
This is our connection to the JMS server |
java.util.HashMap |
subscriptions
Maps a a subsction id to a Subscription |
protected java.util.HashSet |
temps
Temporary destinations created by this connection |
Method Summary | |
protected void |
askForAnID()
Ask the server for an id |
protected void |
askForAnID(java.lang.String userName,
java.lang.String password)
Ask the server for an id |
void |
asynchClose()
Notification from the server that the connection is closed |
void |
asynchDeleteTemporaryDestination(SpyDestination (src) dest)
Called by a TemporaryDestination which is going to be deleted() |
void |
asynchDeliver(ReceiveRequest (src) [] requests)
Gets the first consumer that is listening to a destination. |
void |
asynchFailure(java.lang.String reason,
java.lang.Throwable t)
Notification of a failure on this connection |
void |
asynchPong(long serverTime)
Invoked when the server pong us |
protected void |
authenticate(java.lang.String userName,
java.lang.String password)
Authenticate a user |
protected void |
checkClientID()
Check that a clientID exists. |
void |
close()
Closes the connection. |
void |
deleteTemporaryDestination(SpyDestination (src) dest)
Called by a TemporaryDestination which is going to be deleted |
void |
doStop()
Stop delivery |
java.lang.String |
getClientID()
Gets the client identifier for this connection. |
ExceptionListener (src) |
getExceptionListener()
Gets the ExceptionListener object for this connection. |
ConnectionMetaData (src) |
getMetaData()
Gets the metadata for this connection. |
ServerIL (src) |
getServerIL()
Gets the ServerIL attribute of the Connection object |
static java.lang.ThreadGroup |
getThreadGroup()
|
protected void |
send(AcknowledgementRequest (src) item)
Acknowledge/Nack a message |
protected void |
send(TransactionRequest (src) transaction)
Commit/rollback |
void |
setClientID(java.lang.String cID)
Sets the client identifier for this connection. |
void |
setExceptionListener(ExceptionListener (src) listener)
Sets an exception listener for this connection. |
void |
start()
Starts (or restarts) a connection's delivery of incoming messages. |
protected void |
startILService()
Start the il |
void |
stop()
Temporarily stops a connection's delivery of incoming messages. |
protected void |
stopILService()
Stop the il |
java.lang.String |
toString()
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface javax.jms.Connection (src) |
createConnectionConsumer, createDurableConnectionConsumer, createSession |
Field Detail |
protected static ClockDaemon clockDaemon
public java.util.HashMap destinationSubscriptions
public java.util.HashMap subscriptions
public boolean modeStop
protected ServerIL (src) serverIL
protected java.lang.String clientID
protected ConnectionToken (src) connectionToken
protected ClientILService (src) clientILService
protected long pingPeriod
protected boolean ponged
protected volatile boolean closing
protected java.util.HashSet temps
Method Detail |
public static java.lang.ThreadGroup getThreadGroup()
public ServerIL (src) getServerIL()
public void asynchClose()
public void asynchDeleteTemporaryDestination(SpyDestination (src) dest)
dest
- the temporary destinationpublic void asynchDeliver(ReceiveRequest (src) [] requests)
requests
- the receive requestspublic void asynchFailure(java.lang.String reason, java.lang.Throwable t)
reason
- the reason for the failuret
- the throwablepublic void asynchPong(long serverTime)
serverTime
- the server timepublic void deleteTemporaryDestination(SpyDestination (src) dest) throws JMSException (src)
dest
- the temporary destination
JMSException (src)
- for any errorpublic void setClientID(java.lang.String cID) throws JMSException (src)
Connection (src)
The preferred way to assign a JMS client's client identifier is for
it to be configured in a client-specific ConnectionFactory
object and transparently assigned to the Connection
object
it creates.
Alternatively, a client can set a connection's client identifier
using a provider-specific value. The facility to set a connection's
client identifier explicitly is not a mechanism for overriding the
identifier that has been administratively configured. It is provided
for the case where no administratively specified identifier exists.
If one does exist, an attempt to change it by setting it must throw an
IllegalStateException
. If a client sets the client identifier
explicitly, it must do so immediately after it creates the connection
and before any other
action on the connection is taken. After this point, setting the
client identifier is a programming error that should throw an
IllegalStateException
.
The purpose of the client identifier is to associate a connection and its objects with a state maintained on behalf of the client by a provider. The only such state identified by the JMS API is that required to support durable subscriptions.
If another connection with the same clientID
is already running when
this method is called, the JMS provider should detect the duplicate ID and throw
an InvalidClientIDException
.
setClientID
in interface Connection (src)
cID
- the unique client identifier
JMSException (src)
- if the JMS provider fails to
set the client ID for this connection due
to some internal error.public java.lang.String getClientID() throws JMSException (src)
Connection (src)
This value is specific to the JMS provider. It is either preconfigured
by an administrator in a ConnectionFactory
object
or assigned dynamically by the application by calling the
setClientID
method.
getClientID
in interface Connection (src)
JMSException (src)
- if the JMS provider fails to return
the client ID for this connection due
to some internal error.public ExceptionListener (src) getExceptionListener() throws JMSException (src)
Connection (src)
ExceptionListener
object for this connection.
Not every Connection
has an ExceptionListener
associated with it.
getExceptionListener
in interface Connection (src)
ExceptionListener
for this connection, or null.
if no ExceptionListener
is associated
with this connection.
JMSException (src)
- if the JMS provider fails to
get the ExceptionListener
for this
connection.Connection.setExceptionListener(javax.jms.ExceptionListener)
public void setExceptionListener(ExceptionListener (src) listener) throws JMSException (src)
Connection (src)
If a JMS provider detects a serious problem with a connection, it
informs the connection's ExceptionListener
, if one has been
registered. It does this by calling the listener's
onException
method, passing it a JMSException
object describing the problem.
An exception listener allows a client to be notified of a problem asynchronously. Some connections only consume messages, so they would have no other way to learn their connection has failed.
A connection serializes execution of its
ExceptionListener
.
A JMS provider should attempt to resolve connection problems itself before it notifies the client of them.
setExceptionListener
in interface Connection (src)
listener
- the exception listener
JMSException (src)
- if the JMS provider fails to
set the exception listener for this connection.public ConnectionMetaData (src) getMetaData() throws JMSException (src)
Connection (src)
getMetaData
in interface Connection (src)
JMSException (src)
- if the JMS provider fails to
get the connection metadata for this connection.ConnectionMetaData
(src) public void close() throws JMSException (src)
Connection (src)
Since a provider typically allocates significant resources outside the JVM on behalf of a connection, clients should close these resources when they are not needed. Relying on garbage collection to eventually reclaim these resources may not be timely enough.
There is no need to close the sessions, producers, and consumers of a closed connection.
Closing a connection causes all temporary destinations to be deleted.
When this method is invoked, it should not return until message
processing has been shut down in an orderly fashion. This means that all
message
listeners that may have been running have returned, and that all pending
receives have returned. A close terminates all pending message receives
on the connection's sessions' consumers. The receives may return with a
message or with null, depending on whether there was a message available
at the time of the close. If one or more of the connection's sessions'
message listeners is processing a message at the time when connection
close
is invoked, all the facilities of the connection and
its sessions must remain available to those listeners until they return
control to the JMS provider.
Closing a connection causes any of its sessions' transactions
in progress to be rolled back. In the case where a session's
work is coordinated by an external transaction manager, a session's
commit
and rollback
methods are
not used and the result of a closed session's work is determined
later by the transaction manager.
Closing a connection does NOT force an
acknowledgment of client-acknowledged sessions.
Invoking the acknowledge
method of a received message
from a closed connection's session must throw an
IllegalStateException
. Closing a closed connection must
NOT throw an exception.
close
in interface Connection (src)
JMSException (src)
- if the JMS provider fails to close the
connection due to some internal error. For
example, a failure to release resources
or to close a socket connection can cause
this exception to be thrown.public void start() throws JMSException (src)
Connection (src)
start
on a connection that has already been
started is ignored.
start
in interface Connection (src)
JMSException (src)
- if the JMS provider fails to start
message delivery due to some internal error.Connection.stop()
public void stop() throws JMSException (src)
Connection (src)
start
method. When the connection is stopped,
delivery to all the connection's message consumers is inhibited:
synchronous receives block, and messages are not delivered to message
listeners.
This call blocks until receives and/or message listeners in progress have completed.
Stopping a connection has no effect on its ability to send messages.
A call to stop
on a connection that has already been
stopped is ignored.
A call to stop
must not return until delivery of messages
has paused. This means that a client can rely on the fact that none of
its message listeners will be called and that all threads of control
waiting for receive
calls to return will not return with a
message until the
connection is restarted. The receive timers for a stopped connection
continue to advance, so receives may time out while the connection is
stopped.
If message listeners are running when stop
is invoked,
the stop
call must
wait until all of them have returned before it may return. While these
message listeners are completing, they must have the full services of the
connection available to them.
stop
in interface Connection (src)
JMSException (src)
- if the JMS provider fails to stop
message delivery due to some internal error.Connection.start()
public java.lang.String toString()
protected void checkClientID() throws JMSException (src)
JMSException (src)
- if clientID is null as post conditionprotected void askForAnID() throws JMSException (src)
JMSException (src)
- for any errorprotected void askForAnID(java.lang.String userName, java.lang.String password) throws JMSException (src)
userName
- the userpassword
- the password
JMSException (src)
- for any errorprotected void authenticate(java.lang.String userName, java.lang.String password) throws JMSException (src)
userName
- the userpassword
- the password
JMSException (src)
- for any errorprotected void send(AcknowledgementRequest (src) item) throws JMSException (src)
item
- the acknowledgement
JMSException (src)
- for any errorprotected void send(TransactionRequest (src) transaction) throws JMSException (src)
transaction
- the transaction request
JMSException (src)
- for any errorprotected void startILService() throws JMSException (src)
JMSException (src)
- for any errorprotected void stopILService() throws JMSException (src)
JMSException (src)
- for any errorpublic void doStop() throws JMSException (src)
JMSException (src)
|
||||||||||
PREV CLASS (src) NEXT CLASS (src) | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |