An eclipse client server architecture with asynchronous messaging

1,314 views

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,314
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×