websockets and equinox osgi in a servlet container
TRANSCRIPT
WebSockets and Equinox OSGi in a Servlet Container
Nedelcho Delchev [SAP]2016-10-27
Who am I?
I am Development Architect in HANA Cloud Platform Core team in the area of extensions for large enterprises in the cloud.
Project lead of Eclipse Dirigible – a Cloud Development Platform project that provides full-fledged capabilities for developing, running and operating cloud applications – http://www.dirigible.io
ServletBridge Architecture
• Server-Side Equinox: http://www.eclipse.org/equinox/server/
• Equinox in a Servlet Container: http://www.eclipse.org/equinox/server/http_in_container.php
• What is OSGi in Servlet Container series by Angelo Zerr: https://angelozerr.wordpress.com/2010/08/31/osgi-equinox-in-a-servlet-container-step0/
ServletBridge Component
Web Container
Servlet Bridge
OSGi Servlet
OSGiServlet
Servlet
Websockets
https://www.pubnub.com/blog/2014-10-01-websockets-and-long-polling-in-javascript-ruby-and-python/
https://www.tutorialspoint.com/websockets/websockets_quick_guide.htm
WebSocket Bridge in WebApp
WebSocket Servlet in OSGi
Registering OSGi WS Servlet in the BundleActivator
Websocket in Web Container
Web ContainerServletBridge [Registered
OSGi WS Servlets]
OSGi WS Servlet
Websocket Servlet
1
2
3
1. Registering 2. Lookup 3. Communication
Classloaders visibility (launch.ini)
osgi.*[email protected].*=@nulleclipse.*=@null
osgi.parentClassloader=fwkosgi.contextClassLoaderParent=fwkorg.osgi.framework.system.packages.extra=javax.websocket,javax.websocket.server,javax.mail,javax.mail.internet,osgi.websockets.bridge
Authentication and Authorization
• Logged-in User• Is User in Role?
“Hello World” via Websocket channel
• Clone – https://github.com/delchev/WebSockets_EquinoxOSGi_ServletContainer.git
• Build & Deploy• Access & Login - http://localhost:8080/services/standard• Create WS Client e.g. in Chrome –
> var logSocket = new WebSocket("ws://localhost:8080/log");• Inspect Frames in Network/WS• Access from a second browser -
http://localhost:8080/services/standard• Send a message from WS client and receive the echo -
logSocket.send("Hello from Client!");
Real-world examples
• By Eclipse Dirigible
Log Console
Terminal
Debug
Scripting Services
http://www.dirigible.io/api/websocket.html
Recap
• You learnt that you can utilize WebSockets in a OSGi environment
• You learnt how to do it via the ‘bridge’ concept• You learnt that it is not just pure theoretical thing,
but it is already used in the real world projects• You got it re-confirmed OSGi is cool• You learnt about existence of an OSGi based
Cloud Development Platform project called Eclipse Dirigible: http://www.dirigible.io
Thank You!
References
• http://www.dirigible.io/blogs/2016/05/19/blogs_web_sockets_and_osgi_in_servlet_container.html