SlideShare a Scribd company logo
1 of 33
Download to read offline
WebSocket 
in 
Enterprise 
apps 
Pavel 
Bucek 
(pavel.bucek@oracle.com) 
Oracle 
September 
30, 
2014 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
|
Safe 
Harbor 
Statement 
The 
following 
is 
intended 
to 
outline 
our 
general 
product 
direcPon. 
It 
is 
intended 
for 
informaPon 
purposes 
only, 
and 
may 
not 
be 
incorporated 
into 
any 
contract. 
It 
is 
not 
a 
commitment 
to 
deliver 
any 
material, 
code, 
or 
funcPonality, 
and 
should 
not 
be 
relied 
upon 
in 
making 
purchasing 
decisions. 
The 
development, 
release, 
and 
Pming 
of 
any 
features 
or 
funcPonality 
described 
for 
Oracle’s 
products 
remains 
at 
the 
sole 
discrePon 
of 
Oracle. 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
|
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Program 
Agenda 
What 
is 
WebSocket 
When 
to 
use 
WebSocket 
Security 
(AuthenPcaPon, 
SSL, 
…), 
browser 
support, 
usability 
Code 
paUerns 
Advanced 
topics 
(monitoring, 
tracing, 
clustering, 
…) 
1 
2 
3 
4 
5
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
WebSocket 
protocol 
• RFC 
6455 
(December 
2011) 
• Two 
way 
communicaPon 
protocol, 
replacement 
for 
Long-­‐polling 
– BeUer 
resource 
uPlizaPon 
• Based 
on 
the 
HTTP/1.1 
Upgrade 
mechanism 
– IniPal 
(WebSocket) 
handshake 
uses 
HTTP 
• Includes 
extensions 
and 
Sub 
protocol 
negoPaPon 
– Everything 
else 
is 
then 
encapsulated 
in 
WebSocket 
frames 
– ConnecPon/communicaPon 
can 
be 
closed 
using 
WebSocket 
or 
just 
by 
closing 
underlying 
TCP 
connecPon 
(will 
be 
detected 
as 
1006 
-­‐ 
CLOSED_ABNORMALLY)
When 
NOT 
to 
use 
WebSocket 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• Non-­‐interacPve 
applicaPons 
• Single 
direcPonal 
communicaPon 
(client 
just 
waits/reads 
data 
from 
the 
server) 
– SSE 
– 
Server 
sent 
events 
• Forms 
based 
applicaPons 
• High 
throughput 
(*) 
– Video 
streaming 
can 
be 
implemented 
on 
top 
of 
WebSocket, 
but 
there 
are 
much 
beUer 
protocols 
for 
this 
purpose
When 
you 
should 
consider 
using 
WebSocket 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• ApplicaPon 
needs 
to 
communicate 
with 
the 
server 
– Bi-­‐direcPonal 
communicaPon 
(not 
just 
polling!) 
• InteracPvity 
• Time 
criPcal 
data 
delivery 
– Once 
connecPons 
is 
established, 
the 
message 
overhead 
is 
quite 
low 
• High 
throughput 
(*) 
– Video 
streaming 
can 
be 
implemented 
on 
top 
of 
WebSocket, 
but 
there 
are 
much 
beUer 
protocols 
for 
this 
purpose
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
WebSocket 
usecases 
• Chat-­‐like 
applicaPons 
– Various 
implementaPons 
opPons 
– XMPP 
(Jabber) 
over 
WebSocket 
• Trading 
and 
transacPons 
– Fast 
feedback/execuPon 
• Real-­‐Pme 
monitoring 
– Depends 
on 
the 
data 
source 
– InteracPon 
with 
monitored 
object 
– (SSE?) 
• Remote 
control 
– Input 
with 
“real-­‐Pme” 
feedback 
– From 
industry 
applicaPon 
to 
fun 
apps 
• Games 
– HTML5 
“naPve” 
transport 
– Supported 
by 
improvements 
in 
browsers 
2D/3D 
canvas 
support 
• General 
collaboraPon 
– Customer 
service, 
Social 
apps, 
…
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
WebSocket 
API 
– 
Security 
• Server 
side 
– Standard 
servlet/container 
mechanism 
for 
securing 
web 
services 
– Container-­‐related 
configuraPon, 
not 
all 
of 
those 
relevant 
for 
websockets 
(depends) 
– Origin 
check 
• Client 
side 
– 
Java 
– Official 
API 
does 
not 
provide 
much 
in 
terms 
of 
AuthenPcaPon 
or 
other 
related 
sepngs 
support 
– Not 
only 
about 
AuthenPcaPon; 
SSL 
sepngs 
(TrustStore, 
KeyStore, 
HostnameVerifier) 
– Proxy 
authenPcaPon
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
WebSocket 
API 
– 
Security 
• Client 
side 
– 
Browsers 
– Client 
can 
connect 
only 
to 
the 
same 
host/port 
from 
which 
was 
the 
“staPc” 
page 
opened 
– SpecificaPon 
is 
very 
vague 
and 
does 
not 
really 
touch 
this 
subject 
– Passing 
properPes 
of 
current 
HTML 
page 
to 
WebSocket 
connecPons 
seem 
to 
be 
not 
as 
common 
as 
it 
could 
be 
• Using 
SSL 
client 
cerPficates 
• Passing 
credenPals 
(BASIC, 
DIGEST) 
to 
the 
WebSocket 
connecPon 
• Adding 
Cookies 
to 
headers 
of 
handshake 
response 
– Current 
browser 
API 
cannot 
influence 
or 
intercept 
request/response 
headers
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
WebSocket 
API 
– 
Usability 
• All 
modern 
browsers 
do 
support 
websocket 
– Including 
mobile 
devices 
(Android, 
iOS) 
– There 
are 
available 
soluPons 
for 
older 
browsers 
• Fallback 
transport/containers 
• Flash 
WebSocket 
client 
• Vendor 
proprietary 
soluPons 
– 
WebSocket 
over 
Long-­‐Polling 
etc. 
• HTTP 
Proxy 
is 
not 
an 
issue, 
same 
for 
firewalls
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Java 
API 
for 
WebSocket 
• JSR 
356 
– 
Part 
of 
Java 
EE 
7 
– 1.0 
(May 
2013) 
– 1.1 
(August 
2014) 
• Annotated 
and 
programmaPc 
way 
how 
to 
deploy 
and 
access 
WebSocket 
endpoints 
• Event-­‐driven 
model 
-­‐ 
@OnOpen, 
@OnMessage, 
@OnError, 
@OnClose 
• Encoders/Decoders, 
Path/Query 
parameter 
handling, 
Handshake 
headers 
interceptors, 
CDI 
integraPon, 
…
Java 
API 
for 
WebSocket 
– 
Annotated 
Endpoint 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
|
Java 
API 
for 
WebSocket 
– 
ProgrammaPc 
Endpoint 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
|
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Java 
API 
for 
WebSocket 
Concurrency/Threading 
• Different 
threading 
model 
compared 
to 
“standard” 
Servlet 
• Javax.webscoket.Session 
is 
thread-­‐safe. 
• Each 
method 
might 
be 
invoked 
from 
different 
thread 
– There 
is 
no 
guarantee 
that 
@OnMessage 
will 
be 
always 
called 
from 
the 
same 
thread 
– InvocaPons 
will 
be 
made 
in 
message 
order 
and 
next 
@OnMessage 
won’t 
be 
called 
unless 
previous 
execuPon 
ended 
– ImplicaPons: 
• Method 
implementaPons 
must 
be 
thread 
safe. 
• Double 
check 
the 
resources 
you 
are 
accessing 
from 
Endpoint 
implementaPons
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Java 
API 
for 
WebSocket 
Project 
Tyrus 
• Reference 
ImplementaPon 
for 
JSR 
356 
• WebSocket 
implementaPon 
of 
Oracle 
WebLogic 
Server 
and 
Glassfish 
• Current 
version 
is 
1.8.3 
• hUps://tyrus.java.net 
• Highlighted 
features: 
– Client 
improvements 
(SSL, 
Auth, 
Proxies, 
Reconnect, 
…), 
OpPmized 
broadcast, 
Tracing, 
Monitoring, 
Clustering 
(*), 
…
Tyrus 
– 
Client 
improvements 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• Client 
distributed 
as 
part 
of 
the 
applicaPon 
server 
or 
as 
a 
standalone 
bundle 
– 
convenient 
for 
standalone 
app 
use 
– Grizzly 
based 
container 
(JDK 
1.6+) 
– Java 
7 
NIO 
based 
container 
(JDK 
1.7+) 
• Client 
properPes 
– AuthenPcaPon 
– 
BASIC/DIGEST/custom 
– SSL 
– 
TrustStore, 
KeyStore, 
HostnameVerifier 
– Proxy 
support 
– Reconnect 
Handler, 
…
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tyrus 
– 
Broadcast 
• WebSocket 
API 
provides 
single 
way 
how 
to 
perform 
broadcast 
• Don’t 
• Call 
session.isOpen() 
• Throw 
excepPon 
from 
method 
or 
try-­‐catch 
whole 
iteraPon 
• Do 
• getAsyncRemote()
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tyrus 
– 
Broadcast 
• Tyrus 
provides 
single 
method 
• Proprietary 
• No 
Encoders 
• No 
need 
to 
compose 
new 
frame 
for 
each 
session/client. 
• Parallel 
(*) 
• Cluster-­‐ready 
(*)
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tyrus 
– 
Monitoring 
• Tyrus 
provides 
SPI 
for 
monitoring 
events 
– (up 
to 
session 
level) 
• Tyrus 
contains 
implementaPon 
which 
exposes 
these 
staPsPcs 
as 
JMX 
Beans 
• Also 
included 
in 
Oracle 
WebLogic 
Server 
• Monitored 
data 
– Sent/received 
messages 
per 
session 
(*)/endpoint/applicaPon 
– Message 
types 
(text/binary/control)
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tyrus 
– 
Tracing 
• Feature 
which 
allows 
per-­‐request 
diagnosPcs 
• Useful 
when 
developing 
an 
applicaPon 
– Logged 
messages 
related 
to 
runPme 
processing 
– Handshake 
request/response 
– Endpoint 
path 
matching 
process 
– Encoders/Decoders, 
MessageHandlers
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tyrus 
– 
Clustering 
• JSR 
356 
does 
not 
say 
much 
about 
deploying 
applicaPons 
to 
the 
cluster 
– (There 
is 
only 
small 
noPon 
in 
Session#getUserProperPes() 
javadoc) 
• Currently, 
applicaPon 
will 
behave 
the 
same 
way 
as 
it 
would 
be 
deployed 
to 
single 
node. 
– Issues 
with 
Session.getOpenSessions() 
and 
javax.websocket.Session 
• Custom 
API 
required 
to 
make 
this 
work 
– RemoteSession 
– Distributed 
properPes
Tyrus 
– 
Clustering 
– 
Coherence 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• Message 
based 
architecture 
with 
persisted 
state(s) 
– JMS 
does 
not 
offer 
to 
store 
state 
+ 
harder 
to 
setup 
• Coherence 
Cluster 
used 
as 
backing 
framework 
– Several 
NamedCaches 
• Endpoints, 
Sessions, 
Messages, 
Broadcast, 
DistributedProperPes 
– Scopes 
of 
the 
coherence 
values 
are 
limited 
by 
Coherence 
ContainerAdapter 
• One 
scope 
per 
applicaPon 
per 
parPPon 
(MT) 
– Each 
distributed 
operaPon 
can 
be 
mapped 
to 
Map.put() 
+ 
corresponding 
listener
Tyrus 
– 
Clustering 
– 
Coherence 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Sending 
a 
message 
Coherence 
Cluster 
sendText() 
m 
= 
new 
Message(…) 
msgCache.addListener(m.getId()) 
sessionCache.put(sessionId, 
m) 
Node 
2 
Node 
1 
RemoteSession.sendText 
[session 
created] 
sessionCache.registerListener(…); 
sessionCache.noPfy() 
getLocalSession(sessionId); 
r 
= 
localSession.sendText(m.getM()); 
msgCache.noPfy() 
msgCache.put(m.getId, 
r);
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tyrus 
– 
Clustering 
– 
HA 
• CreaPng 
new 
Session 
on 
the 
server 
might 
be 
expensive 
(allocaPng 
resources, 
registraPons, 
gepng 
id(s) 
from 
database, 
…) 
• Session 
cannot 
be 
persisted 
as 
a 
whole, 
since 
the 
underlying 
TCP 
connecPon 
will 
be 
broken 
and 
this 
is 
recognized 
by 
WebSocket 
protocol 
and 
MUST 
BE 
interpreted 
as 
Close 
with 
1006: 
CLOSED_ABNORMALLY 
– We 
can 
persist 
part 
of 
the 
session 
– 
distributed 
properPes 
• When 
client 
connects 
to 
the 
cluster, 
it 
will 
be 
given 
an 
ID 
and 
if 
this 
will 
be 
re-­‐send 
when 
client 
wants 
to 
reconnect 
(“persistent 
connecPon”), 
server 
implementaPon 
will 
set 
distributed 
properPes 
from 
the 
lost 
session
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tyrus 
– 
Clustering 
– 
HA 
– Client 
will 
receive 
tyrus-­‐cluster-­‐connecPon-­‐id, 
will 
store 
it 
and 
add 
as 
a 
header 
when 
reconnecPng 
– Server: 
@OnOpen 
• IniPalize 
resources 
and 
save 
properPes 
to 
distributed 
properPes 
(TyrusSession#getDistributedProperPes()) 
– Server: 
@On* 
• Distributed 
properPes 
can 
be 
used. 
Please 
be 
aware 
that 
every 
read/write 
performs 
de/serializaPon. 
– When 
connecPon 
is 
broken, 
Session 
is 
closed. 
Client 
reconnects 
with 
added 
header. 
– Server: 
@OnOpen 
• Check 
whether 
distributed 
properPes 
already 
contain 
properPes. 
If 
not, 
reiniPalize, 
otherwise 
use 
them 
(meaning 
that 
this 
is 
reconnected 
session).
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tyrus 
– 
Clustering 
– 
HA 
– Client 
will 
receive 
tyrus-­‐cluster-­‐connecPon-­‐id, 
will 
store 
it 
and 
add 
as 
a 
header 
when 
reconnecPng 
– Server: 
@OnOpen 
• IniPalize 
resources 
and 
save 
properPes 
to 
distributed 
properPes 
(TyrusSession#getDistributedProperPes()) 
– Server: 
@On* 
• Distributed 
properPes 
can 
be 
used. 
Please 
be 
aware 
that 
every 
read/write 
performs 
de/serializaPon. 
– When 
connecPon 
is 
broken, 
Session 
is 
closed. 
Client 
reconnects 
with 
added 
header. 
– Server: 
@OnOpen 
• Check 
whether 
distributed 
properPes 
already 
contain 
properPes. 
If 
not, 
reiniPalize, 
otherwise 
use 
them 
(meaning 
that 
this 
is 
reconnected 
session).
Tyrus 
– 
Clustering 
– 
Coherence 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Client 
Handshake 
request 
Cluster 
Node 
1 
Node 
2 
Handshake 
response 
+ 
cluster 
conn. 
ID 
messages 
Close 
(1006) 
Handshake 
request 
+ 
cluster 
conn. 
ID 
Handshake 
response 
messages 
@OnOpen 
Distributed 
properPes 
Are 
restored 
TCP 
connecPon 
#1 
TCP 
connecPon 
#2
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tyrus 
– 
Clustering 
• SPI 
is 
part 
of 
project 
Tyrus, 
implementaPon 
should 
be 
available 
in 
the 
next 
Oracle 
WebLogic 
Server 
release 
– Built 
on 
top 
of 
Coherence 
• Demo 
– Rumpetroll 
– hUp://rumpetroll.com
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Tyrus 
– 
Clustering
WebSocket.NEXT 
– 
QuesPons? 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• WebSocket 
API 
1.1.NEXT 
• WebSocket-­‐spec: 
hUps://java.net/projects/websocket-­‐spec 
– hUps://java.net/jira/browse/WEBSOCKET_SPEC 
• Reference 
ImplementaPon: 
Tyrus 
hUps://tyrus.java.net 
– users@tyrus.java.net 
– hUps://java.net/jira/browse/TYRUS 
• Pavel 
Bucek: 
pavel.bucek@oracle.com
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
|

More Related Content

What's hot

WebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo ConectadoWebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo ConectadoBruno Borges
 
Web protocols for java developers
Web protocols for java developersWeb protocols for java developers
Web protocols for java developersPavel Bucek
 
HTTP/2 in the Java Platform -- Java Champions call February 2016
HTTP/2 in the Java Platform -- Java Champions call February 2016HTTP/2 in the Java Platform -- Java Champions call February 2016
HTTP/2 in the Java Platform -- Java Champions call February 2016Ed Burns
 
What's New in WebLogic 12.1.3 and Beyond
What's New in WebLogic 12.1.3 and BeyondWhat's New in WebLogic 12.1.3 and Beyond
What's New in WebLogic 12.1.3 and BeyondOracle
 
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessOracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessEd Burns
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Heather VanCura
 
Oracle Cloud: Anything as a Service
Oracle Cloud: Anything as a ServiceOracle Cloud: Anything as a Service
Oracle Cloud: Anything as a ServiceBruno Borges
 
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXTweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXBruno Borges
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouDavid Delabassee
 
Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reza Rahman
 
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to youJava EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to youAlex Theedom
 
Oracle WebLogic Server 12c: Seamless Oracle Database Integration (with NEC, O...
Oracle WebLogic Server 12c: Seamless Oracle Database Integration (with NEC, O...Oracle WebLogic Server 12c: Seamless Oracle Database Integration (with NEC, O...
Oracle WebLogic Server 12c: Seamless Oracle Database Integration (with NEC, O...jeckels
 
Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Edward Burns
 
Burns jsf-confess-2015
Burns jsf-confess-2015Burns jsf-confess-2015
Burns jsf-confess-2015Edward Burns
 
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0David Delabassee
 
Oracle REST Data Services
Oracle REST Data ServicesOracle REST Data Services
Oracle REST Data ServicesChris Muir
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot David Delabassee
 

What's hot (20)

WebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo ConectadoWebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo Conectado
 
Web protocols for java developers
Web protocols for java developersWeb protocols for java developers
Web protocols for java developers
 
MVC 1.0 / JSR 371
MVC 1.0 / JSR 371MVC 1.0 / JSR 371
MVC 1.0 / JSR 371
 
HTTP/2 in the Java Platform -- Java Champions call February 2016
HTTP/2 in the Java Platform -- Java Champions call February 2016HTTP/2 in the Java Platform -- Java Champions call February 2016
HTTP/2 in the Java Platform -- Java Champions call February 2016
 
What's New in WebLogic 12.1.3 and Beyond
What's New in WebLogic 12.1.3 and BeyondWhat's New in WebLogic 12.1.3 and Beyond
What's New in WebLogic 12.1.3 and Beyond
 
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessOracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with Less
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374
 
Oracle Cloud: Anything as a Service
Oracle Cloud: Anything as a ServiceOracle Cloud: Anything as a Service
Oracle Cloud: Anything as a Service
 
JavaCro'15 - HTTP2 Comes to Java! - David Delabassee
JavaCro'15 - HTTP2 Comes to Java! - David DelabasseeJavaCro'15 - HTTP2 Comes to Java! - David Delabassee
JavaCro'15 - HTTP2 Comes to Java! - David Delabassee
 
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXTweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
 
Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!
 
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to youJava EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
 
Oracle WebLogic Server 12c: Seamless Oracle Database Integration (with NEC, O...
Oracle WebLogic Server 12c: Seamless Oracle Database Integration (with NEC, O...Oracle WebLogic Server 12c: Seamless Oracle Database Integration (with NEC, O...
Oracle WebLogic Server 12c: Seamless Oracle Database Integration (with NEC, O...
 
Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.
 
Burns jsf-confess-2015
Burns jsf-confess-2015Burns jsf-confess-2015
Burns jsf-confess-2015
 
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
 
Oracle REST Data Services
Oracle REST Data ServicesOracle REST Data Services
Oracle REST Data Services
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot
 
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
JavaCro'15 - Java EE 8 - An instant snapshot - David DelabasseeJavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
 

Similar to WebSockets in Enterprise Applications

What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)Pavel Bucek
 
Real-World RESTful Service Development Problems and Solutions
Real-World RESTful Service Development Problems and SolutionsReal-World RESTful Service Development Problems and Solutions
Real-World RESTful Service Development Problems and SolutionsMasoud Kalali
 
CON 2107- Think Async: Embrace and Get Addicted to the Asynchronicity of EE
CON 2107- Think Async: Embrace and Get Addicted to the Asynchronicity of EECON 2107- Think Async: Embrace and Get Addicted to the Asynchronicity of EE
CON 2107- Think Async: Embrace and Get Addicted to the Asynchronicity of EEMasoud Kalali
 
What's New and Noteworthy on Oracle CAF 12.1.3
What's New and Noteworthy on Oracle CAF 12.1.3What's New and Noteworthy on Oracle CAF 12.1.3
What's New and Noteworthy on Oracle CAF 12.1.3Bruno Borges
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckEdward Burns
 
WebLogic 12c - OMF Canberra June 2014
WebLogic 12c - OMF Canberra June 2014WebLogic 12c - OMF Canberra June 2014
WebLogic 12c - OMF Canberra June 2014Joelith
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)David Delabassee
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! David Delabassee
 
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Marco Antonio Maciel
 
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)jeckels
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXBruno Borges
 
Server Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeServer Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeJAXLondon2014
 
Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudBruno Borges
 
Weblogic 12c experiences - migrations from iAS-platform
Weblogic 12c experiences - migrations from iAS-platformWeblogic 12c experiences - migrations from iAS-platform
Weblogic 12c experiences - migrations from iAS-platformJon Petter Hjulstad
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQLTed Wennmark
 
Pushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationPushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationDavid Delabassee
 
Using MySQL Enterprise Monitor for Continuous Performance Improvement
Using MySQL Enterprise Monitor for Continuous Performance ImprovementUsing MySQL Enterprise Monitor for Continuous Performance Improvement
Using MySQL Enterprise Monitor for Continuous Performance ImprovementMark Matthews
 
Database as a Service, Collaborate 2016
Database as a Service, Collaborate 2016Database as a Service, Collaborate 2016
Database as a Service, Collaborate 2016Kellyn Pot'Vin-Gorman
 

Similar to WebSockets in Enterprise Applications (20)

What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)
 
Real-World RESTful Service Development Problems and Solutions
Real-World RESTful Service Development Problems and SolutionsReal-World RESTful Service Development Problems and Solutions
Real-World RESTful Service Development Problems and Solutions
 
CON 2107- Think Async: Embrace and Get Addicted to the Asynchronicity of EE
CON 2107- Think Async: Embrace and Get Addicted to the Asynchronicity of EECON 2107- Think Async: Embrace and Get Addicted to the Asynchronicity of EE
CON 2107- Think Async: Embrace and Get Addicted to the Asynchronicity of EE
 
What's New and Noteworthy on Oracle CAF 12.1.3
What's New and Noteworthy on Oracle CAF 12.1.3What's New and Noteworthy on Oracle CAF 12.1.3
What's New and Noteworthy on Oracle CAF 12.1.3
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
 
WebLogic 12c - OMF Canberra June 2014
WebLogic 12c - OMF Canberra June 2014WebLogic 12c - OMF Canberra June 2014
WebLogic 12c - OMF Canberra June 2014
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
 
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
 
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFX
 
Server Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeServer Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David Delabassee
 
Oracle Database Cloud Service
Oracle Database Cloud ServiceOracle Database Cloud Service
Oracle Database Cloud Service
 
Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The Cloud
 
JAX-RS.next
JAX-RS.nextJAX-RS.next
JAX-RS.next
 
Weblogic 12c experiences - migrations from iAS-platform
Weblogic 12c experiences - migrations from iAS-platformWeblogic 12c experiences - migrations from iAS-platform
Weblogic 12c experiences - migrations from iAS-platform
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQL
 
Pushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationPushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home Automation
 
Using MySQL Enterprise Monitor for Continuous Performance Improvement
Using MySQL Enterprise Monitor for Continuous Performance ImprovementUsing MySQL Enterprise Monitor for Continuous Performance Improvement
Using MySQL Enterprise Monitor for Continuous Performance Improvement
 
Database as a Service, Collaborate 2016
Database as a Service, Collaborate 2016Database as a Service, Collaborate 2016
Database as a Service, Collaborate 2016
 

Recently uploaded

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 

WebSockets in Enterprise Applications

  • 1.
  • 2.
  • 3. WebSocket in Enterprise apps Pavel Bucek (pavel.bucek@oracle.com) Oracle September 30, 2014 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 4. Safe Harbor Statement The following is intended to outline our general product direcPon. It is intended for informaPon purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or funcPonality, and should not be relied upon in making purchasing decisions. The development, release, and Pming of any features or funcPonality described for Oracle’s products remains at the sole discrePon of Oracle. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 5. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Program Agenda What is WebSocket When to use WebSocket Security (AuthenPcaPon, SSL, …), browser support, usability Code paUerns Advanced topics (monitoring, tracing, clustering, …) 1 2 3 4 5
  • 6. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | WebSocket protocol • RFC 6455 (December 2011) • Two way communicaPon protocol, replacement for Long-­‐polling – BeUer resource uPlizaPon • Based on the HTTP/1.1 Upgrade mechanism – IniPal (WebSocket) handshake uses HTTP • Includes extensions and Sub protocol negoPaPon – Everything else is then encapsulated in WebSocket frames – ConnecPon/communicaPon can be closed using WebSocket or just by closing underlying TCP connecPon (will be detected as 1006 -­‐ CLOSED_ABNORMALLY)
  • 7. When NOT to use WebSocket Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Non-­‐interacPve applicaPons • Single direcPonal communicaPon (client just waits/reads data from the server) – SSE – Server sent events • Forms based applicaPons • High throughput (*) – Video streaming can be implemented on top of WebSocket, but there are much beUer protocols for this purpose
  • 8. When you should consider using WebSocket Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • ApplicaPon needs to communicate with the server – Bi-­‐direcPonal communicaPon (not just polling!) • InteracPvity • Time criPcal data delivery – Once connecPons is established, the message overhead is quite low • High throughput (*) – Video streaming can be implemented on top of WebSocket, but there are much beUer protocols for this purpose
  • 9. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | WebSocket usecases • Chat-­‐like applicaPons – Various implementaPons opPons – XMPP (Jabber) over WebSocket • Trading and transacPons – Fast feedback/execuPon • Real-­‐Pme monitoring – Depends on the data source – InteracPon with monitored object – (SSE?) • Remote control – Input with “real-­‐Pme” feedback – From industry applicaPon to fun apps • Games – HTML5 “naPve” transport – Supported by improvements in browsers 2D/3D canvas support • General collaboraPon – Customer service, Social apps, …
  • 10. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | WebSocket API – Security • Server side – Standard servlet/container mechanism for securing web services – Container-­‐related configuraPon, not all of those relevant for websockets (depends) – Origin check • Client side – Java – Official API does not provide much in terms of AuthenPcaPon or other related sepngs support – Not only about AuthenPcaPon; SSL sepngs (TrustStore, KeyStore, HostnameVerifier) – Proxy authenPcaPon
  • 11. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | WebSocket API – Security • Client side – Browsers – Client can connect only to the same host/port from which was the “staPc” page opened – SpecificaPon is very vague and does not really touch this subject – Passing properPes of current HTML page to WebSocket connecPons seem to be not as common as it could be • Using SSL client cerPficates • Passing credenPals (BASIC, DIGEST) to the WebSocket connecPon • Adding Cookies to headers of handshake response – Current browser API cannot influence or intercept request/response headers
  • 12. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | WebSocket API – Usability • All modern browsers do support websocket – Including mobile devices (Android, iOS) – There are available soluPons for older browsers • Fallback transport/containers • Flash WebSocket client • Vendor proprietary soluPons – WebSocket over Long-­‐Polling etc. • HTTP Proxy is not an issue, same for firewalls
  • 13. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Java API for WebSocket • JSR 356 – Part of Java EE 7 – 1.0 (May 2013) – 1.1 (August 2014) • Annotated and programmaPc way how to deploy and access WebSocket endpoints • Event-­‐driven model -­‐ @OnOpen, @OnMessage, @OnError, @OnClose • Encoders/Decoders, Path/Query parameter handling, Handshake headers interceptors, CDI integraPon, …
  • 14. Java API for WebSocket – Annotated Endpoint Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 15. Java API for WebSocket – ProgrammaPc Endpoint Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 16. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Java API for WebSocket Concurrency/Threading • Different threading model compared to “standard” Servlet • Javax.webscoket.Session is thread-­‐safe. • Each method might be invoked from different thread – There is no guarantee that @OnMessage will be always called from the same thread – InvocaPons will be made in message order and next @OnMessage won’t be called unless previous execuPon ended – ImplicaPons: • Method implementaPons must be thread safe. • Double check the resources you are accessing from Endpoint implementaPons
  • 17. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Java API for WebSocket Project Tyrus • Reference ImplementaPon for JSR 356 • WebSocket implementaPon of Oracle WebLogic Server and Glassfish • Current version is 1.8.3 • hUps://tyrus.java.net • Highlighted features: – Client improvements (SSL, Auth, Proxies, Reconnect, …), OpPmized broadcast, Tracing, Monitoring, Clustering (*), …
  • 18. Tyrus – Client improvements Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Client distributed as part of the applicaPon server or as a standalone bundle – convenient for standalone app use – Grizzly based container (JDK 1.6+) – Java 7 NIO based container (JDK 1.7+) • Client properPes – AuthenPcaPon – BASIC/DIGEST/custom – SSL – TrustStore, KeyStore, HostnameVerifier – Proxy support – Reconnect Handler, …
  • 19. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Tyrus – Broadcast • WebSocket API provides single way how to perform broadcast • Don’t • Call session.isOpen() • Throw excepPon from method or try-­‐catch whole iteraPon • Do • getAsyncRemote()
  • 20. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Tyrus – Broadcast • Tyrus provides single method • Proprietary • No Encoders • No need to compose new frame for each session/client. • Parallel (*) • Cluster-­‐ready (*)
  • 21. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Tyrus – Monitoring • Tyrus provides SPI for monitoring events – (up to session level) • Tyrus contains implementaPon which exposes these staPsPcs as JMX Beans • Also included in Oracle WebLogic Server • Monitored data – Sent/received messages per session (*)/endpoint/applicaPon – Message types (text/binary/control)
  • 22. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Tyrus – Tracing • Feature which allows per-­‐request diagnosPcs • Useful when developing an applicaPon – Logged messages related to runPme processing – Handshake request/response – Endpoint path matching process – Encoders/Decoders, MessageHandlers
  • 23. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Tyrus – Clustering • JSR 356 does not say much about deploying applicaPons to the cluster – (There is only small noPon in Session#getUserProperPes() javadoc) • Currently, applicaPon will behave the same way as it would be deployed to single node. – Issues with Session.getOpenSessions() and javax.websocket.Session • Custom API required to make this work – RemoteSession – Distributed properPes
  • 24. Tyrus – Clustering – Coherence Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Message based architecture with persisted state(s) – JMS does not offer to store state + harder to setup • Coherence Cluster used as backing framework – Several NamedCaches • Endpoints, Sessions, Messages, Broadcast, DistributedProperPes – Scopes of the coherence values are limited by Coherence ContainerAdapter • One scope per applicaPon per parPPon (MT) – Each distributed operaPon can be mapped to Map.put() + corresponding listener
  • 25. Tyrus – Clustering – Coherence Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Sending a message Coherence Cluster sendText() m = new Message(…) msgCache.addListener(m.getId()) sessionCache.put(sessionId, m) Node 2 Node 1 RemoteSession.sendText [session created] sessionCache.registerListener(…); sessionCache.noPfy() getLocalSession(sessionId); r = localSession.sendText(m.getM()); msgCache.noPfy() msgCache.put(m.getId, r);
  • 26. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Tyrus – Clustering – HA • CreaPng new Session on the server might be expensive (allocaPng resources, registraPons, gepng id(s) from database, …) • Session cannot be persisted as a whole, since the underlying TCP connecPon will be broken and this is recognized by WebSocket protocol and MUST BE interpreted as Close with 1006: CLOSED_ABNORMALLY – We can persist part of the session – distributed properPes • When client connects to the cluster, it will be given an ID and if this will be re-­‐send when client wants to reconnect (“persistent connecPon”), server implementaPon will set distributed properPes from the lost session
  • 27. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Tyrus – Clustering – HA – Client will receive tyrus-­‐cluster-­‐connecPon-­‐id, will store it and add as a header when reconnecPng – Server: @OnOpen • IniPalize resources and save properPes to distributed properPes (TyrusSession#getDistributedProperPes()) – Server: @On* • Distributed properPes can be used. Please be aware that every read/write performs de/serializaPon. – When connecPon is broken, Session is closed. Client reconnects with added header. – Server: @OnOpen • Check whether distributed properPes already contain properPes. If not, reiniPalize, otherwise use them (meaning that this is reconnected session).
  • 28. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Tyrus – Clustering – HA – Client will receive tyrus-­‐cluster-­‐connecPon-­‐id, will store it and add as a header when reconnecPng – Server: @OnOpen • IniPalize resources and save properPes to distributed properPes (TyrusSession#getDistributedProperPes()) – Server: @On* • Distributed properPes can be used. Please be aware that every read/write performs de/serializaPon. – When connecPon is broken, Session is closed. Client reconnects with added header. – Server: @OnOpen • Check whether distributed properPes already contain properPes. If not, reiniPalize, otherwise use them (meaning that this is reconnected session).
  • 29. Tyrus – Clustering – Coherence Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Client Handshake request Cluster Node 1 Node 2 Handshake response + cluster conn. ID messages Close (1006) Handshake request + cluster conn. ID Handshake response messages @OnOpen Distributed properPes Are restored TCP connecPon #1 TCP connecPon #2
  • 30. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Tyrus – Clustering • SPI is part of project Tyrus, implementaPon should be available in the next Oracle WebLogic Server release – Built on top of Coherence • Demo – Rumpetroll – hUp://rumpetroll.com
  • 31. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Tyrus – Clustering
  • 32. WebSocket.NEXT – QuesPons? Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • WebSocket API 1.1.NEXT • WebSocket-­‐spec: hUps://java.net/projects/websocket-­‐spec – hUps://java.net/jira/browse/WEBSOCKET_SPEC • Reference ImplementaPon: Tyrus hUps://tyrus.java.net – users@tyrus.java.net – hUps://java.net/jira/browse/TYRUS • Pavel Bucek: pavel.bucek@oracle.com
  • 33. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |