An eclipse client server architecture  with asynchronous messaging          based on XMPP               Thomas Kratz      ...
What is XMPP?•   eXtensible Messaging and Presence Protocol•   Bi-directional streaming XML•   Core: IETF RFC 3920, 3921• ...
XMPP Architecture•   Addressing Scheme: node@domain/resource     – JID = Jabber ID     – Node: identity, e.g. user name   ...
The Mango stack      Client               Synchronous remote   Asynchronous               service calls        notificatio...
Long running tasks• http-service call spawns a worker thread on  the server and returns immediately• Client UI runs a fake...
Not so optimisticlocking• Eclipse Editor lifecycle sends XMPP messages  on open/save/close• Server keeps track of opened d...
Floating Licene• Server listens to the „Presence“ part of the  XMPP protocol• Keeps track of online users• Rejects login i...
Q&A• Thank you for listening!• Reach me at eiswind@googlemail.com
Upcoming SlideShare
Loading in...5
×

An eclipse client server architecture with asynchronous messaging

1,071

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,071
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "An eclipse client server architecture with asynchronous messaging"

  1. 1. An eclipse client server architecture with asynchronous messaging based on XMPP Thomas Kratz EclipseCon Europe 2011
  2. 2. What is XMPP?• eXtensible Messaging and Presence Protocol• Bi-directional streaming XML• Core: IETF RFC 3920, 3921• Extensions: XMPP Standards Foundation (XSF) – Membership-based – Elected technical council – Unit of work: XMPP Extension Protocol (XEP) – Process: Experimental, Proposed, Draft, Final• Goals: – Simple clients – Federate everything
  3. 3. XMPP Architecture• Addressing Scheme: node@domain/resource – JID = Jabber ID – Node: identity, e.g. user name – Domain: DNS domain name – Resource: device identifier – node@domain identifies a person• Client talks to “local” server – Wherever the user account is hosted – Tied to directory if desired – Organizational policy enforced• Servers talk to other servers – DNS lookup on domain portion of address – Dialback, MTLS for security – One connection for many conversations
  4. 4. The Mango stack Client Synchronous remote Asynchronous service calls notifications through Spring‘s through Smack HttpInvoker XMPP Api Server
  5. 5. Long running tasks• http-service call spawns a worker thread on the server and returns immediately• Client UI runs a fake worker job (Eclipse Jobs API) that listens to XMPP messages• Worker Thread reports progress to client Job through XMPP messages• Client Job fetches result through second http- service call
  6. 6. Not so optimisticlocking• Eclipse Editor lifecycle sends XMPP messages on open/save/close• Server keeps track of opened database entities• Sends warning on possible conflict• If an enitity gets changed, other users get notified to reload their editor input to prevent conflicts.
  7. 7. Floating Licene• Server listens to the „Presence“ part of the XMPP protocol• Keeps track of online users• Rejects login if maximum user count is exceeded• Notifies online users before server shutdown to prevent data loss.
  8. 8. Q&A• Thank you for listening!• Reach me at eiswind@googlemail.com

×