SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Server Sent Events, Async Servlet,
WebSockets and JSON; born to
work
Masoud Kalali: Principal Software                                                                              Bhakti Mehta: Principal Member of Technical
Engineer at ORACLE                                                                                             Staff at ORACLE
Blog: Http://kalali.me                                                                                         Blog: http://www.java.net/blogs/bhaktimehta
Twitter: @MasoudKalali                                                                                         Twitter: @bhakti_mehta

    1Copyright © 2012, Oracle and/or its affiliates. All rights reserved.   Insert Information Protection Policy Classification from Slide 13
Program Agenda
        § Introduction
        § Polling
        § Server Sent Events (SSE)
        § WebSockets
        § JSON-P
        § JAXRS 2.0
        § AsyncServlet
        § Demo
        § Q&A


Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Polling
        § Used by vast majority of AJAX applications
        § Poll the server for data
        § Client --->request--> Server
        § If no data empty response is returned




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Polling Drawbacks
        § Http overhead
        § Reducing the interval will consume more
             bandwidth and processing resources.




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Long Polling
        § Uses persistent or long-lasting HTTP connection between the server
          and the client
        § If server does not have data holds request open
        § COMET




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Long Polling Drawbacks
           § Missing error handling
           § Involves hacks by adding script tags to an infinite iframe
           § Hard to check the state of request




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Server Sent Events
        § Unidirectional channel between server and client
        § Server pushes data to your app when it wants
        § No need to make initial request
        § Updates can be streamed froms server to client as they happen




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Polling vs Long Polling vs Server Sent Events
        § Polling: GET. If data, process data. GET...
                 1 GET = 1 HTTP response header and maybe a chunk of data.

        § Long-polling: GET. Wait. Process data. GET...
                 1 GET = 1 HTTP response header and chunks of data.

        § SSE: Subscribe to event stream. Wait. Process data. Wait. Process
             data. Wait..
               1 GET = 1 HTTP response header, many chunks of data


Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Server Sent Events and EventSource
        § Subscribing to event stream
             To subscribe to an event stream, create an EventSource object and
             pass it the URL of your stream:
               Example in javascript
                         eventSource = new EventSource(url);
                         eventSource.onmessage = function (event) {
                       }


        § Setting up handlers for events
               You can optionally listen for onopen and onerror:

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Server Sent Events and Message format
        § Sending an event stream
        § Construct a plaintext response, served with a text/event-stream
             Content-Type, that follows the SSE format.
        § The response should contain a "data:" line, followed by your
          message, followed by two "n" characters to end the stream:
        § Sample message format


                data: My messagenn




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Server Sent Events and JSON
        § Sending JSON
             You can send multiple lines without breaking JSON format by
             sending messages like this
                      data: {n
                      data: "name": "John Doe",n
                      data: "id": 12345n
                      data: }nn


        § On client side
                      source.addEventListener('message', function(e) {
                        var data = JSON.parse(e.data);

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Server Sent Events and Reconnection
        § If the connection drops, the EventSource fires an error event and
          automatically tries to reconnect.
        § The server can also control the timeout before the client tries to
          reconnect.




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Server Sent Events and Jersey 2.0 apis

           § Client apis in Jersey 2.0
                           Client client = ClientFactory.newClient();
                           WebTarget webTarget= client.target(new URI(TARGET_URI)) ;
           § EventSource apis in Jersey 2.0
                           EventSource eventSource = new EventSource(webTarget, executorService) {
                           @Override
                            public void onEvent(InboundEvent inboundEvent) {
                                                    // get the data from the InboundEvent


                              }



Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Best practices for ServerSentEvents

        § Check if eventSource's origin attribute is the expected
               domain to get the messages from
                      if (e.origin != 'http://foo.com') {
                               alert('Origin was not http://foo.com');
                      return;




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Best practices for ServerSentEvents

        § Check that the data in question is of the expected format..
        § Only accept a certain number of messages per minute to avoid DOS
        § This will avoid cases where attackers can send high volume of
             messages and receiving page does expensive computations




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Best practices for ServerSentEvents

        § Associating an ID with an event
             Setting an ID lets the browser keep track of the last event fired
                       ●
                                 Incase connection is dropped a special Last-Event-ID is set
                                 with new request
                       ●
                                  This lets the browser determine which event is appropriate to
                                 fire. The message event contains a e.lastEventId property.




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
WebSockets
        § Full duplex communication in either direction
        § A component of HTML5
        § API under w3c, protocol under IETF(RFC 6455)
        § Good support by different browsers
        § Use existing infrastructure




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
WebSockets Client Server Handshake
        § Client and Server upgrade from Http protocol to WebSocket protocol
             during initial handshake
                GET /text HTTP/1.1rn
                Upgrade: WebSocketrn
                Connection: Upgradern
                Host: www.websocket.orgrn …rn
        § Handshake from server looks like
                HTTP/1.1 101 WebSocket Protocol Handshakern
                Upgrade: WebSocketrn
                Connection: Upgradern …rn



Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
WebSockets Code Snippet
        § After the upgrade HTTP is completely out of the picture at this point.
        § Using the lightweight WebSocket wire protocol, messages can now
             be sent or received by either endpoint at any time.

        § Creating a Websocket
                    ws = new WebSocket("ws://localhost:8080/../WebSocketChat");


        § You can set handlers for events onopen or onerror




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
WebSockets API JSR 356
        § @WebSocketEndpoint
             signifies that the Java class it decorates is to be deployed as
             a WebSocket endpoint.
        § Additionally the following components can be annotated with
             @WebServiceEndpoint
              ●
                a stateless session EJB
                       ●
                                   a singleton EJB
                       ●
                                   a CDI managed bean



Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
WebSockets Annotations
    § Decorate methods on @WebSocketEndpoint annotated Java class
         with
                   ●
                             @WebSocketOpen to specify when the resulting endpoint
                             receives a new connection
                   ●
                             @WebSocketClose to specify when the connection is closed.




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
WebSockets and security
        § WebSockets URI starts with ws/wss
        § Conform to the same security that already exists at container level




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Java API for Processing JSON (JSON-P)
      JSR 353
        § Streaming API to produce/consume JSON
        § Similar to StAX API in XML world
        § Object model API to represent JSON
        § Similar to DOM API in XML world




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JsonParser
        § JsonParser – Parses JSON in a streaming way from input sources
        § Similar to StAX’s XMLStreamReader, a pull parser
        § Parser state events :
               START_ARRAY, START_OBJECT, KEY_NAME, VALUE_STRING, VALUE_NUMBER,
               VALUE_TRUE, VALUE_FALSE, VALUE_NULL, END_OBJECT, END_ARRAY

        § Created using :
               Json.createParser(…),

               Json.createParserFactory(...).createParser(…)




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JSON sample data
         {

                         "firstName": "John", "lastName": "Smith", "age": 25,

                         "phoneNumber": [

                                        { "type": "home", "number": "212 555-1234" },

                                        { "type": "fax", "number": "646 555-4567" }]}

                         ]

         }




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JSonParser
                Iterator<Event> it = parser.iterator();

                Event event = it.next();                               // START_OBJECT

                event = it.next();                                     // KEY_NAME

                event = it.next();                                     // VALUE_STRING

                 String name = parser.getString();                     // "John”




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JsonGenerator
        § JsonGenerator – Generates JSON in a streaming way to output
          sources
        § Similar to StAX’s XMLStreamWriter
        § Created using :
             Json.createGenerator(…),

           Json.createGeneratorFactory(...).createGenerator(…)




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JsonGenerator
  JsonArray address= Json.createGenerator().beginArray()                               [

           .beginObject()                                                  {

                .add("type", "home”).add("number", "212 555-1234")              "type": "home", "number": "212 555-1234"

           .endObject()                                                    }

           .beginObject()                                                  ,{

                .add("type", "fax”).add("number", "646 555-4567")          "type": "fax", "number": "646 555-4567"

           .endObject()                                                    }

       .endArray();                                                    ]




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Object Model API
        § JsonObject/JsonArray – JSON object and array structure
        § JsonString and JsonNumber for string and number value
        § JsonBuilder – Builds JsonObject and JsonArray Programmatically
        § JsonReader – Reads JsonObject and JsonArray from input source
        § JsonWriter – Writes JsonObject and JsonArray to output source




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JsonReader
§ Reads JsonObject and JsonArray from input source
§ Uses pluggable JsonParser


    try (JsonReader reader = new JsonReader(io)) {

         JsonObject obj = reader.readObject();

    }




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JsonWriter
§ Writes JsonObject and JsonArray to output source
§ Uses pluggable JsonGenerator


    // Writes a JSON object

    try (JsonWriter writer = new JsonWriter(io)) {

             writer.writeObject(obj);

    }




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JAX-RS 2.0
§ New in JAX-RS 2.0
§ Client API
§ Filters and Interceptors
§ Client-side and Server-side Asynchronous
§ Improved Connection Negotiation
§ Validation Alignment with JSR 330




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JAXRS 2.0 Client API
§ Code snippet


      Client client = ClientFactory.newClient();

      WebTarget webTarget= client.target(new URI(TARGET_URI)) ;

       webTarget.request().post(Entity.text(message));




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JAXRS 2.0 and Asynchronous support
@Path("/async/longRunning")

public class MyResource {

 @Context private ExecutionContext ctx;

 @GET @Produces("text/plain")

 public void longRunningOp() {

      Executors.newSingleThreadExecutor().submit( new Runnable() {

       public void run() {

             Thread.sleep(10000);                         // Sleep 10 secs

             ctx.resume("Hello async world!");

         } }); ctx.suspend();                                       // Suspend connection and return

 }…}



  Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JAXRS 2.0 and @Suspend annotation
  @Path("/async/longRunning")

  public class MyResource {

     @Context private ExecutionContext ctx;

     @GET @Produces("text/plain") @Suspend

     public void longRunningOp() {

       Executors.newSingleThreadExecutor().submit( new Runnable() {

            public void run() {

                  Thread.sleep(10000);                         // Sleep 10 secs

                  ctx.resume("Hello async world!");

              } });

  //ctx.suspend();                           // Suspend connection and return

     }…}
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Async Servlet components
        § Thread Pool and Queue
        § AsyncContext
        § Runnable instance
        § Servlet/Filter chain




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
DEMO


Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Demo class diagram


  Create EventSource
    ParseJson data
   Display in servlet




                                                                                  Writes the message
 Gets data from                                                              on the EventChannel
twitter search
    apis



      Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
AsyncServlet code sample
               protected void service(final HttpServletRequest request, final HttpServletResponse response)
                         throws ServletException, IOException {
                       final AsyncContext asyncContext = request.startAsync();
                         asyncContext.setTimeout(TIMEOUT);
                         asyncContext.addListener(new AsyncListener() {
                         // Override the methods for onComplete, onError, onAsyncStartup
                         }


                      Thread t = new Thread(new AsyncRequestProcessor(asyncContext));
                         t.start();
      }




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
AsyncServlet code sample
  class AsyncRequestProcessor implements Runnable {
               @Override
               public void run() {
                          Client client = ClientFactory.newClient();
                           webTarget = client.target(new URI(TARGET_URI));
                           EventSource eventSource = new EventSource(webTarget, executorService) {
                                  public void onEvent(InboundEvent inboundEvent) {
                                        try {
                                              //get the JSON data and parse it
                                        }




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Trying the sample

Clone the sample from the following repo:
https://github.com/kalali/jersey-sse-twitter-sample/
Follow the readme which involves:
  ● Do a mvn clean install

  ● Get latest GlassFish build

  ● Deploy the application

  ● Hit the http://localhost:8080/jersey-sse-twitter-sample/TestClient




 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Related sessions at JavaOne
         ●
                   HOL4461: Developing JAX-RS Web Applications Utilizing Server-
                   Sent Events and WebSocket Tuesday, Oct 2, 4:30 PM - 6:30 PM
         ●
                   CON4435: JAX-RS 2.0: New and Noteworthy in the RESTful Web
                   Services API Tuesday, Oct 2, 1:00 PM - 2:00 PM
         ●
                   CON3566: JSR 353: Java API for JSON Processing Wednesday,
                   Oct 3, 10:00 AM - 11:00 AM
         ●
                   CON7001: HTML5 WebSocket and Java Wednesday, Oct 3, 4:30
                   PM - 5:30 PM




Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
43Copyright © 2012, Oracle and/or its affiliates. All rights reserved.   Insert Information Protection Policy Classification from Slide 13

Weitere ähnliche Inhalte

Was ist angesagt?

Racing The Web - Hackfest 2016
Racing The Web - Hackfest 2016Racing The Web - Hackfest 2016
Racing The Web - Hackfest 2016Aaron Hnatiw
 
Where is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkWhere is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkFlink Forward
 
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...Amazon Web Services Korea
 
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)Amazon Web Services Korea
 
높은 가용성과 성능 향상을 위한 ElastiCache 활용 팁 - 임근택, SendBird :: AWS Summit Seoul 2019
높은 가용성과 성능 향상을 위한 ElastiCache 활용 팁 - 임근택, SendBird :: AWS Summit Seoul 2019 높은 가용성과 성능 향상을 위한 ElastiCache 활용 팁 - 임근택, SendBird :: AWS Summit Seoul 2019
높은 가용성과 성능 향상을 위한 ElastiCache 활용 팁 - 임근택, SendBird :: AWS Summit Seoul 2019 Amazon Web Services Korea
 
Enabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseEnabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseDataStax Academy
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon Web Services Korea
 
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 
Connect2016 AD1387 Integrate with XPages and Java
Connect2016 AD1387 Integrate with XPages and JavaConnect2016 AD1387 Integrate with XPages and Java
Connect2016 AD1387 Integrate with XPages and JavaJulian Robichaux
 
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021Amazon Web Services Korea
 
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...Amazon Web Services Korea
 
Elastic Load Balancing 심층 분석 - AWS Summit Seoul 2017
Elastic Load Balancing 심층 분석 - AWS Summit Seoul 2017Elastic Load Balancing 심층 분석 - AWS Summit Seoul 2017
Elastic Load Balancing 심층 분석 - AWS Summit Seoul 2017Amazon Web Services Korea
 
HTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowHTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowPrabhdeep Singh
 
Node.js File system & Streams
Node.js File system & StreamsNode.js File system & Streams
Node.js File system & StreamsEyal Vardi
 
아마존닷컴처럼 Amazon Forecast로 시계열 예측하기 - 강지양 솔루션즈 아키텍트, AWS / 강태욱 매니저, GSSHOP :: A...
아마존닷컴처럼 Amazon Forecast로 시계열 예측하기 - 강지양 솔루션즈 아키텍트, AWS / 강태욱 매니저, GSSHOP :: A...아마존닷컴처럼 Amazon Forecast로 시계열 예측하기 - 강지양 솔루션즈 아키텍트, AWS / 강태욱 매니저, GSSHOP :: A...
아마존닷컴처럼 Amazon Forecast로 시계열 예측하기 - 강지양 솔루션즈 아키텍트, AWS / 강태욱 매니저, GSSHOP :: A...Amazon Web Services Korea
 
Deterministic simulation testing
Deterministic simulation testingDeterministic simulation testing
Deterministic simulation testingFoundationDB
 
프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)
프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)
프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)Amazon Web Services Korea
 
AWS 에서 DevOps 시작하기 – 정영준, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
AWS 에서 DevOps 시작하기 – 정영준, AWS 솔루션즈 아키텍트:: AWS Builders Online Series AWS 에서 DevOps 시작하기 – 정영준, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
AWS 에서 DevOps 시작하기 – 정영준, AWS 솔루션즈 아키텍트:: AWS Builders Online Series Amazon Web Services Korea
 

Was ist angesagt? (20)

Racing The Web - Hackfest 2016
Racing The Web - Hackfest 2016Racing The Web - Hackfest 2016
Racing The Web - Hackfest 2016
 
Where is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkWhere is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in Flink
 
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
 
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
 
높은 가용성과 성능 향상을 위한 ElastiCache 활용 팁 - 임근택, SendBird :: AWS Summit Seoul 2019
높은 가용성과 성능 향상을 위한 ElastiCache 활용 팁 - 임근택, SendBird :: AWS Summit Seoul 2019 높은 가용성과 성능 향상을 위한 ElastiCache 활용 팁 - 임근택, SendBird :: AWS Summit Seoul 2019
높은 가용성과 성능 향상을 위한 ElastiCache 활용 팁 - 임근택, SendBird :: AWS Summit Seoul 2019
 
Deep Dive into AWS Fargate
Deep Dive into AWS FargateDeep Dive into AWS Fargate
Deep Dive into AWS Fargate
 
Enabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseEnabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax Enterprise
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
Connect2016 AD1387 Integrate with XPages and Java
Connect2016 AD1387 Integrate with XPages and JavaConnect2016 AD1387 Integrate with XPages and Java
Connect2016 AD1387 Integrate with XPages and Java
 
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
 
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
AWS KMS 에서 제공하는 봉투암호화 방식의 암호화 및 사이닝 기능에 대한 소개와 실습 - 신은수, AWS 솔루션즈 아키텍트 :: AWS...
 
Elastic Load Balancing 심층 분석 - AWS Summit Seoul 2017
Elastic Load Balancing 심층 분석 - AWS Summit Seoul 2017Elastic Load Balancing 심층 분석 - AWS Summit Seoul 2017
Elastic Load Balancing 심층 분석 - AWS Summit Seoul 2017
 
HTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowHTL(Sightly) - All you need to know
HTL(Sightly) - All you need to know
 
Node.js File system & Streams
Node.js File system & StreamsNode.js File system & Streams
Node.js File system & Streams
 
아마존닷컴처럼 Amazon Forecast로 시계열 예측하기 - 강지양 솔루션즈 아키텍트, AWS / 강태욱 매니저, GSSHOP :: A...
아마존닷컴처럼 Amazon Forecast로 시계열 예측하기 - 강지양 솔루션즈 아키텍트, AWS / 강태욱 매니저, GSSHOP :: A...아마존닷컴처럼 Amazon Forecast로 시계열 예측하기 - 강지양 솔루션즈 아키텍트, AWS / 강태욱 매니저, GSSHOP :: A...
아마존닷컴처럼 Amazon Forecast로 시계열 예측하기 - 강지양 솔루션즈 아키텍트, AWS / 강태욱 매니저, GSSHOP :: A...
 
Deterministic simulation testing
Deterministic simulation testingDeterministic simulation testing
Deterministic simulation testing
 
프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)
프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)
프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)
 
AWS 에서 DevOps 시작하기 – 정영준, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
AWS 에서 DevOps 시작하기 – 정영준, AWS 솔루션즈 아키텍트:: AWS Builders Online Series AWS 에서 DevOps 시작하기 – 정영준, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
AWS 에서 DevOps 시작하기 – 정영준, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
 

Andere mochten auch

REST, Web Sockets, Server-sent Events
REST, Web Sockets, Server-sent EventsREST, Web Sockets, Server-sent Events
REST, Web Sockets, Server-sent EventsIvano Malavolta
 
Getting Started with WebSocket and Server-Sent Events in Java
Getting Started with WebSocket and Server-Sent Events in JavaGetting Started with WebSocket and Server-Sent Events in Java
Getting Started with WebSocket and Server-Sent Events in JavaArun Gupta
 
HTML5 Server Sent Events/JSF JAX 2011 Conference
HTML5 Server Sent Events/JSF  JAX 2011 ConferenceHTML5 Server Sent Events/JSF  JAX 2011 Conference
HTML5 Server Sent Events/JSF JAX 2011 ConferenceRoger Kitain
 
Streams, Streams Everywhere! An Introduction to Rx
Streams, Streams Everywhere! An Introduction to RxStreams, Streams Everywhere! An Introduction to Rx
Streams, Streams Everywhere! An Introduction to RxAndrzej Sitek
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwLuke Adamczewski
 
Server-Side Programming Primer
Server-Side Programming PrimerServer-Side Programming Primer
Server-Side Programming PrimerIvano Malavolta
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?Edward Burns
 
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
 
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouCON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouEdward Burns
 
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...jaxLondonConference
 

Andere mochten auch (10)

REST, Web Sockets, Server-sent Events
REST, Web Sockets, Server-sent EventsREST, Web Sockets, Server-sent Events
REST, Web Sockets, Server-sent Events
 
Getting Started with WebSocket and Server-Sent Events in Java
Getting Started with WebSocket and Server-Sent Events in JavaGetting Started with WebSocket and Server-Sent Events in Java
Getting Started with WebSocket and Server-Sent Events in Java
 
HTML5 Server Sent Events/JSF JAX 2011 Conference
HTML5 Server Sent Events/JSF  JAX 2011 ConferenceHTML5 Server Sent Events/JSF  JAX 2011 Conference
HTML5 Server Sent Events/JSF JAX 2011 Conference
 
Streams, Streams Everywhere! An Introduction to Rx
Streams, Streams Everywhere! An Introduction to RxStreams, Streams Everywhere! An Introduction to Rx
Streams, Streams Everywhere! An Introduction to Rx
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
 
Server-Side Programming Primer
Server-Side Programming PrimerServer-Side Programming Primer
Server-Side Programming Primer
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
 
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)
 
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouCON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To You
 
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
 

Ähnlich wie Server Sent Events, Async Servlet, Web Sockets and JSON; born to work together!

Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Max Andersen
 
Con fess 2013-sse-websockets-json-bhakti
Con fess 2013-sse-websockets-json-bhaktiCon fess 2013-sse-websockets-json-bhakti
Con fess 2013-sse-websockets-json-bhaktiBhakti Mehta
 
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta jaxconf
 
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Getting Started with WebSocket and Server-Sent Events using Java by Arun GuptaGetting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Getting Started with WebSocket and Server-Sent Events using Java by Arun GuptaCodemotion
 
Fight empire-html5
Fight empire-html5Fight empire-html5
Fight empire-html5Bhakti Mehta
 
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Arun Gupta
 
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...jaxLondonConference
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Arun Gupta
 
HTML5 Websockets and Java - Arun Gupta
HTML5 Websockets and Java - Arun GuptaHTML5 Websockets and Java - Arun Gupta
HTML5 Websockets and Java - Arun GuptaJAX London
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaYevgeniy Brikman
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_daviddTakashi Ito
 
Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()Bruno Borges
 
OTN Tour 2013: What's new in java EE 7
OTN Tour 2013: What's new in java EE 7OTN Tour 2013: What's new in java EE 7
OTN Tour 2013: What's new in java EE 7Bruno Borges
 
Coherence 12.1.2 Live Events
Coherence 12.1.2 Live EventsCoherence 12.1.2 Live Events
Coherence 12.1.2 Live Eventsharvraja
 
WebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the FutureWebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the FutureFrank Greco
 
GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012Arun Gupta
 
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
 

Ähnlich wie Server Sent Events, Async Servlet, Web Sockets and JSON; born to work together! (20)

Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
 
Con fess 2013-sse-websockets-json-bhakti
Con fess 2013-sse-websockets-json-bhaktiCon fess 2013-sse-websockets-json-bhakti
Con fess 2013-sse-websockets-json-bhakti
 
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
 
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Getting Started with WebSocket and Server-Sent Events using Java by Arun GuptaGetting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
 
Fight empire-html5
Fight empire-html5Fight empire-html5
Fight empire-html5
 
Java ee7 1hour
Java ee7 1hourJava ee7 1hour
Java ee7 1hour
 
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
 
Websocket 1.0
Websocket 1.0Websocket 1.0
Websocket 1.0
 
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
 
HTML5 Websockets and Java - Arun Gupta
HTML5 Websockets and Java - Arun GuptaHTML5 Websockets and Java - Arun Gupta
HTML5 Websockets and Java - Arun Gupta
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_davidd
 
Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()
 
OTN Tour 2013: What's new in java EE 7
OTN Tour 2013: What's new in java EE 7OTN Tour 2013: What's new in java EE 7
OTN Tour 2013: What's new in java EE 7
 
Coherence 12.1.2 Live Events
Coherence 12.1.2 Live EventsCoherence 12.1.2 Live Events
Coherence 12.1.2 Live Events
 
WebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the FutureWebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the Future
 
GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012
 
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!
 

Mehr von Masoud Kalali

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
 
BOF 2193 - How to work from home effectively
BOF 2193 - How to work from home effectivelyBOF 2193 - How to work from home effectively
BOF 2193 - How to work from home effectivelyMasoud Kalali
 
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
 
How to avoid top 10 security risks in Java EE applications and how to avoid them
How to avoid top 10 security risks in Java EE applications and how to avoid themHow to avoid top 10 security risks in Java EE applications and how to avoid them
How to avoid top 10 security risks in Java EE applications and how to avoid themMasoud Kalali
 
Confess 2013: OWASP Top 10 and Java EE security in practice
Confess 2013: OWASP Top 10 and Java EE security in practiceConfess 2013: OWASP Top 10 and Java EE security in practice
Confess 2013: OWASP Top 10 and Java EE security in practiceMasoud Kalali
 
Utilize the Full Power of GlassFish Server and Java EE Security
Utilize the Full Power of GlassFish Server and Java EE SecurityUtilize the Full Power of GlassFish Server and Java EE Security
Utilize the Full Power of GlassFish Server and Java EE SecurityMasoud Kalali
 
Slides for the #JavaOne Session ID: CON11881
Slides for the #JavaOne Session ID: CON11881Slides for the #JavaOne Session ID: CON11881
Slides for the #JavaOne Session ID: CON11881Masoud Kalali
 
Security in java ee platform: what is included, what is missing
Security in java ee platform: what is included, what is missingSecurity in java ee platform: what is included, what is missing
Security in java ee platform: what is included, what is missingMasoud Kalali
 
An Overview of RUP methodology
An Overview of RUP methodologyAn Overview of RUP methodology
An Overview of RUP methodologyMasoud Kalali
 
An overview of software development methodologies.
An overview of software development methodologies.An overview of software development methodologies.
An overview of software development methodologies.Masoud Kalali
 
NIO.2, the I/O API for the future
NIO.2, the I/O API for the futureNIO.2, the I/O API for the future
NIO.2, the I/O API for the futureMasoud Kalali
 

Mehr von Masoud Kalali (13)

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
 
BOF 2193 - How to work from home effectively
BOF 2193 - How to work from home effectivelyBOF 2193 - How to work from home effectively
BOF 2193 - How to work from home effectively
 
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
 
How to avoid top 10 security risks in Java EE applications and how to avoid them
How to avoid top 10 security risks in Java EE applications and how to avoid themHow to avoid top 10 security risks in Java EE applications and how to avoid them
How to avoid top 10 security risks in Java EE applications and how to avoid them
 
Java EE 7 overview
Java EE 7 overviewJava EE 7 overview
Java EE 7 overview
 
Confess 2013: OWASP Top 10 and Java EE security in practice
Confess 2013: OWASP Top 10 and Java EE security in practiceConfess 2013: OWASP Top 10 and Java EE security in practice
Confess 2013: OWASP Top 10 and Java EE security in practice
 
Utilize the Full Power of GlassFish Server and Java EE Security
Utilize the Full Power of GlassFish Server and Java EE SecurityUtilize the Full Power of GlassFish Server and Java EE Security
Utilize the Full Power of GlassFish Server and Java EE Security
 
Slides for the #JavaOne Session ID: CON11881
Slides for the #JavaOne Session ID: CON11881Slides for the #JavaOne Session ID: CON11881
Slides for the #JavaOne Session ID: CON11881
 
Security in java ee platform: what is included, what is missing
Security in java ee platform: what is included, what is missingSecurity in java ee platform: what is included, what is missing
Security in java ee platform: what is included, what is missing
 
An Overview of RUP methodology
An Overview of RUP methodologyAn Overview of RUP methodology
An Overview of RUP methodology
 
An overview of software development methodologies.
An overview of software development methodologies.An overview of software development methodologies.
An overview of software development methodologies.
 
NIO.2, the I/O API for the future
NIO.2, the I/O API for the futureNIO.2, the I/O API for the future
NIO.2, the I/O API for the future
 

Kürzlich hochgeladen

Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 

Kürzlich hochgeladen (20)

Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 

Server Sent Events, Async Servlet, Web Sockets and JSON; born to work together!

  • 1. Server Sent Events, Async Servlet, WebSockets and JSON; born to work Masoud Kalali: Principal Software Bhakti Mehta: Principal Member of Technical Engineer at ORACLE Staff at ORACLE Blog: Http://kalali.me Blog: http://www.java.net/blogs/bhaktimehta Twitter: @MasoudKalali Twitter: @bhakti_mehta 1Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13
  • 2. Program Agenda § Introduction § Polling § Server Sent Events (SSE) § WebSockets § JSON-P § JAXRS 2.0 § AsyncServlet § Demo § Q&A Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 3. Polling § Used by vast majority of AJAX applications § Poll the server for data § Client --->request--> Server § If no data empty response is returned Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 4. Polling Drawbacks § Http overhead § Reducing the interval will consume more bandwidth and processing resources. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 5. Long Polling § Uses persistent or long-lasting HTTP connection between the server and the client § If server does not have data holds request open § COMET Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 6. Long Polling Drawbacks § Missing error handling § Involves hacks by adding script tags to an infinite iframe § Hard to check the state of request Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 7. Server Sent Events § Unidirectional channel between server and client § Server pushes data to your app when it wants § No need to make initial request § Updates can be streamed froms server to client as they happen Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 8. Polling vs Long Polling vs Server Sent Events § Polling: GET. If data, process data. GET... 1 GET = 1 HTTP response header and maybe a chunk of data. § Long-polling: GET. Wait. Process data. GET... 1 GET = 1 HTTP response header and chunks of data. § SSE: Subscribe to event stream. Wait. Process data. Wait. Process data. Wait.. 1 GET = 1 HTTP response header, many chunks of data Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 9. Server Sent Events and EventSource § Subscribing to event stream To subscribe to an event stream, create an EventSource object and pass it the URL of your stream: Example in javascript eventSource = new EventSource(url); eventSource.onmessage = function (event) { } § Setting up handlers for events You can optionally listen for onopen and onerror: Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 10. Server Sent Events and Message format § Sending an event stream § Construct a plaintext response, served with a text/event-stream Content-Type, that follows the SSE format. § The response should contain a "data:" line, followed by your message, followed by two "n" characters to end the stream: § Sample message format data: My messagenn Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 11. Server Sent Events and JSON § Sending JSON You can send multiple lines without breaking JSON format by sending messages like this data: {n data: "name": "John Doe",n data: "id": 12345n data: }nn § On client side source.addEventListener('message', function(e) { var data = JSON.parse(e.data); Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 12. Server Sent Events and Reconnection § If the connection drops, the EventSource fires an error event and automatically tries to reconnect. § The server can also control the timeout before the client tries to reconnect. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 13. Server Sent Events and Jersey 2.0 apis § Client apis in Jersey 2.0 Client client = ClientFactory.newClient(); WebTarget webTarget= client.target(new URI(TARGET_URI)) ; § EventSource apis in Jersey 2.0 EventSource eventSource = new EventSource(webTarget, executorService) { @Override public void onEvent(InboundEvent inboundEvent) { // get the data from the InboundEvent } Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 14. Best practices for ServerSentEvents § Check if eventSource's origin attribute is the expected domain to get the messages from if (e.origin != 'http://foo.com') { alert('Origin was not http://foo.com'); return; Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 15. Best practices for ServerSentEvents § Check that the data in question is of the expected format.. § Only accept a certain number of messages per minute to avoid DOS § This will avoid cases where attackers can send high volume of messages and receiving page does expensive computations Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 16. Best practices for ServerSentEvents § Associating an ID with an event Setting an ID lets the browser keep track of the last event fired ● Incase connection is dropped a special Last-Event-ID is set with new request ● This lets the browser determine which event is appropriate to fire. The message event contains a e.lastEventId property. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 17. WebSockets § Full duplex communication in either direction § A component of HTML5 § API under w3c, protocol under IETF(RFC 6455) § Good support by different browsers § Use existing infrastructure Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 18. WebSockets Client Server Handshake § Client and Server upgrade from Http protocol to WebSocket protocol during initial handshake GET /text HTTP/1.1rn Upgrade: WebSocketrn Connection: Upgradern Host: www.websocket.orgrn …rn § Handshake from server looks like HTTP/1.1 101 WebSocket Protocol Handshakern Upgrade: WebSocketrn Connection: Upgradern …rn Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 19. WebSockets Code Snippet § After the upgrade HTTP is completely out of the picture at this point. § Using the lightweight WebSocket wire protocol, messages can now be sent or received by either endpoint at any time. § Creating a Websocket ws = new WebSocket("ws://localhost:8080/../WebSocketChat"); § You can set handlers for events onopen or onerror Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 20. WebSockets API JSR 356 § @WebSocketEndpoint signifies that the Java class it decorates is to be deployed as a WebSocket endpoint. § Additionally the following components can be annotated with @WebServiceEndpoint ● a stateless session EJB ● a singleton EJB ● a CDI managed bean Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 21. WebSockets Annotations § Decorate methods on @WebSocketEndpoint annotated Java class with ● @WebSocketOpen to specify when the resulting endpoint receives a new connection ● @WebSocketClose to specify when the connection is closed. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 22. WebSockets and security § WebSockets URI starts with ws/wss § Conform to the same security that already exists at container level Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 23. Java API for Processing JSON (JSON-P) JSR 353 § Streaming API to produce/consume JSON § Similar to StAX API in XML world § Object model API to represent JSON § Similar to DOM API in XML world Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 24. JsonParser § JsonParser – Parses JSON in a streaming way from input sources § Similar to StAX’s XMLStreamReader, a pull parser § Parser state events : START_ARRAY, START_OBJECT, KEY_NAME, VALUE_STRING, VALUE_NUMBER, VALUE_TRUE, VALUE_FALSE, VALUE_NULL, END_OBJECT, END_ARRAY § Created using : Json.createParser(…), Json.createParserFactory(...).createParser(…) Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 25. JSON sample data { "firstName": "John", "lastName": "Smith", "age": 25, "phoneNumber": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" }]} ] } Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 26. JSonParser Iterator<Event> it = parser.iterator(); Event event = it.next(); // START_OBJECT event = it.next(); // KEY_NAME event = it.next(); // VALUE_STRING String name = parser.getString(); // "John” Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 27. JsonGenerator § JsonGenerator – Generates JSON in a streaming way to output sources § Similar to StAX’s XMLStreamWriter § Created using : Json.createGenerator(…), Json.createGeneratorFactory(...).createGenerator(…) Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 28. JsonGenerator JsonArray address= Json.createGenerator().beginArray() [ .beginObject() { .add("type", "home”).add("number", "212 555-1234") "type": "home", "number": "212 555-1234" .endObject() } .beginObject() ,{ .add("type", "fax”).add("number", "646 555-4567") "type": "fax", "number": "646 555-4567" .endObject() } .endArray(); ] Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 29. Object Model API § JsonObject/JsonArray – JSON object and array structure § JsonString and JsonNumber for string and number value § JsonBuilder – Builds JsonObject and JsonArray Programmatically § JsonReader – Reads JsonObject and JsonArray from input source § JsonWriter – Writes JsonObject and JsonArray to output source Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 30. JsonReader § Reads JsonObject and JsonArray from input source § Uses pluggable JsonParser try (JsonReader reader = new JsonReader(io)) { JsonObject obj = reader.readObject(); } Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 31. JsonWriter § Writes JsonObject and JsonArray to output source § Uses pluggable JsonGenerator // Writes a JSON object try (JsonWriter writer = new JsonWriter(io)) { writer.writeObject(obj); } Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 32. JAX-RS 2.0 § New in JAX-RS 2.0 § Client API § Filters and Interceptors § Client-side and Server-side Asynchronous § Improved Connection Negotiation § Validation Alignment with JSR 330 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 33. JAXRS 2.0 Client API § Code snippet Client client = ClientFactory.newClient(); WebTarget webTarget= client.target(new URI(TARGET_URI)) ; webTarget.request().post(Entity.text(message)); Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 34. JAXRS 2.0 and Asynchronous support @Path("/async/longRunning") public class MyResource { @Context private ExecutionContext ctx; @GET @Produces("text/plain") public void longRunningOp() { Executors.newSingleThreadExecutor().submit( new Runnable() { public void run() { Thread.sleep(10000); // Sleep 10 secs ctx.resume("Hello async world!"); } }); ctx.suspend(); // Suspend connection and return }…} Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 35. JAXRS 2.0 and @Suspend annotation @Path("/async/longRunning") public class MyResource { @Context private ExecutionContext ctx; @GET @Produces("text/plain") @Suspend public void longRunningOp() { Executors.newSingleThreadExecutor().submit( new Runnable() { public void run() { Thread.sleep(10000); // Sleep 10 secs ctx.resume("Hello async world!"); } }); //ctx.suspend(); // Suspend connection and return }…} Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 36. Async Servlet components § Thread Pool and Queue § AsyncContext § Runnable instance § Servlet/Filter chain Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 37. DEMO Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 38. Demo class diagram Create EventSource ParseJson data Display in servlet Writes the message Gets data from on the EventChannel twitter search apis Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 39. AsyncServlet code sample protected void service(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { final AsyncContext asyncContext = request.startAsync(); asyncContext.setTimeout(TIMEOUT); asyncContext.addListener(new AsyncListener() { // Override the methods for onComplete, onError, onAsyncStartup } Thread t = new Thread(new AsyncRequestProcessor(asyncContext)); t.start(); } Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 40. AsyncServlet code sample class AsyncRequestProcessor implements Runnable { @Override public void run() { Client client = ClientFactory.newClient(); webTarget = client.target(new URI(TARGET_URI)); EventSource eventSource = new EventSource(webTarget, executorService) { public void onEvent(InboundEvent inboundEvent) { try { //get the JSON data and parse it } Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 41. Trying the sample Clone the sample from the following repo: https://github.com/kalali/jersey-sse-twitter-sample/ Follow the readme which involves: ● Do a mvn clean install ● Get latest GlassFish build ● Deploy the application ● Hit the http://localhost:8080/jersey-sse-twitter-sample/TestClient Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 42. Related sessions at JavaOne ● HOL4461: Developing JAX-RS Web Applications Utilizing Server- Sent Events and WebSocket Tuesday, Oct 2, 4:30 PM - 6:30 PM ● CON4435: JAX-RS 2.0: New and Noteworthy in the RESTful Web Services API Tuesday, Oct 2, 1:00 PM - 2:00 PM ● CON3566: JSR 353: Java API for JSON Processing Wednesday, Oct 3, 10:00 AM - 11:00 AM ● CON7001: HTML5 WebSocket and Java Wednesday, Oct 3, 4:30 PM - 5:30 PM Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 43. 43Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13