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 OSGi Servlet
Websockets https://www.tutorialspoint.com/websockets/websockets_quick_guide.htm https://www.pubnub.com/blog/2014-10-01-websockets-and-long-polling-in-javascript-ruby-and-python/
WebSocket Bridge in WebApp
WebSocket Servlet in OSGi
Registering OSGi WS Servlet in the BundleActivator
Websocket in Web Container ServletBridge [Registered OSGi WS Servlets] OSGi WS Servlet Websocket Servlet 2 1 3 1. Registering 2. Lookup 3. Communication
Classloaders visibility (launch.ini) osgi.*=@null org.osgi.*=@null eclipse.*=@null osgi.parentClassloader=fwk osgi.contextClassLoaderParent=fwk org.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