Hi,

anonymous wrote : 
  | 1. When the server sends callbacks to the client, are the callbacks 
delivered in the same order they have been sent? 
  | 

1. Pull callbacks are retrieved in the order that the ServerInvocationHandler 
passes them by way of InvokerCallbackHandler.handleCallback().

2. The situation for push callbacks is somewhat more complicated and transport 
specific.  When the ServerInvocationHandler calls 
InvokerCallbackHandler.handleCallback() for a push callback, a client invoker  
on the server side makes an invocation on the callback server invoker on the 
client side.  If callback A is generated and then callback B is generated a 
second later, it's very likely that callback A will arrive before callback B.  
However, there may be some nondeterminism according to the transport and its 
configuration.  The client invoker of the socket transport (and its 
descendants) maintains a connection pool, and if callbacks A and B are 
generated in quick succession, it is possible for them to go out over two 
different connections and for callback B to arrive before callback A.  

If you need to preserve determinism, you can configure the connection pool to 
have no more than one connection by setting 
org.jboss.remoting.transport.MicroSocketClientInvoker.MAX_POOL_SIZE_FLAG to "1" 
in the Client's configuration map.  

There's also a new, and as yet undocumented, facility for registering a 
listener which will receive acknowledgements that callbacks have been 
delivered, and that could be used, at the cost of some latency, to serialize 
the delivery of callbacks.  I need to write that documentation in the next few 
days, and when it's done I'll post a pointer to it.


anonymous wrote : 
  | Is possible to pass the identifier to the server when registering the 
client's callbackhandler? 
  | 

In the interest of completeness I should say that the phrase "the client's 
callbackhandler" is somewhat ambiguous.  (1)  A single callback handler could 
be passed to multiple Clients. (2) Some versions of Client.addListener() create 
a callback Connector as a convenience.  If a single callback handler is passed 
to one of these methods on the same Client, it will appear on the server side 
to be two callback handler instances.

Let's assume, though, that you have a one-one relationship between callback 
handlers and Clients.  Each client is endowed with a unique session ID when it 
is created, and each callback handler that is passed to an addListener() method 
of Client A is given the session ID of Client A.  That session ID can be 
retrieved on the server side by casting to ServerInvokerCallbackHandler the 
InvokerCallbackHandler passed in to ServerInvocationHandler.addListener() and 
calling getClientSessionId() on it.  For more information, see the thread

http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4024506#4024506

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4024543#4024543

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4024543
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to