WebSockets and Equinox OSGi in a Servlet Container - Nedelcho Delchev

Post on 16-Apr-2017

237 views 0 download

Transcript of WebSockets and Equinox OSGi in a Servlet Container - Nedelcho Delchev

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

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.*=@nullorg.osgi.*=@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!