jsr 350 state management

35
JSR 350 State Management Overview and update Pete Raymond

Upload: alida

Post on 29-Jan-2016

72 views

Category:

Documents


0 download

DESCRIPTION

Overview and update Pete Raymond. JSR 350 State Management. Overview. Purpose of this presentation Background JSR Requirements Key concepts Relationship to other standards/approaches Example API Demo Timeline Q & A. Purpose. Raise awareness of JSR-350 State Management - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: JSR 350 State Management

JSR 350 State Management

Overview and updatePete Raymond

Page 2: JSR 350 State Management

Overview» Purpose of this presentation» Background » JSR Requirements» Key concepts» Relationship to other standards/approaches» Example API» Demo» Timeline» Q & A

Page 3: JSR 350 State Management

Purpose» Raise awareness of JSR-350 State Management» Seek feedback on concepts and usage

Page 4: JSR 350 State Management

Background» Standard formed through JCP (2.8 2.9)» Oracle lead (Mitch Upton), participation from

Red Hat, IBM and independents» Expert group activated April 2012 » Some existing proprietary solutions in

WebLogic, Tomcat and JBoss

Page 5: JSR 350 State Management

Requirements» “…develop an API that applications and JavaEE

containers can use to offload the responsibility of state management into third party providers with different quality of service characteristics” (JSR)

» Standardize existing APIs

Page 6: JSR 350 State Management

Use Cases» Mobile - cross platform state handling» Integration - Transfer of state between

platforms» Capability based provider querying» Transient data e.g. session state» Non relational data e.g. JSON, XML, JavaScript

Page 7: JSR 350 State Management

Why State Management Standard and not…» This slide needs more» JPA

˃ Relational˃ Persistent

» Proprietary APIs˃ Reuse˃ Ease of use

» NoSQL ˃ ?

Page 8: JSR 350 State Management

Design Goals» Store and retrieve state independent of

mechanism» Modular and consistent implementation » Capability based matching of client and

provider» Support innovation and the cloud» Easy to use interfaces – user, provider, platform

Page 9: JSR 350 State Management

API to Multiple Providers

JEE Client

State Management API

JSE Client

Built-inProvider

3rd partyProvider

CustomProvider

Page 10: JSR 350 State Management

Key Concepts» State (State Container)» State Connection Factory» State Connection» State Container» State Map» Capability

Page 11: JSR 350 State Management

State» Unit of data » Uniquely identified within a scope» Persistent for a business period» Used by web apps, web services, JSF, CDI» Currently implemented via in memory, file,

database, cluster

Page 12: JSR 350 State Management

State Connection Factory» Create one or more State Connections based on

required capabilities» Associated to single provider» Typed e.g. Java class (…probably)

Page 13: JSR 350 State Management

State Connection» Connection to state management services

provided by some provider» Expose capabilities» Contains configuration» Controls the transaction – either local or

distributed using JTA» Use directly or to get a StateMap

Page 14: JSR 350 State Management

State Container» Container for a user-defined state value that

allows a State Management provider to present and track system-level details about the value

» An instance of State contains a single user-specified value

Page 15: JSR 350 State Management

State Map» Exposes only entries with a given key and value type in

StateConnection» Convenience interface - clients deal directly with user-

specified key and value types, no need to see containing structures such as Key and StateContainer

» Contains:˃ globally unique key˃ value of a user-defined type˃ tracking information

» Key˃ User defined + GUID

» Values ˃ Java type (e.g. Person class)˃ Streams?˃ XML?

Page 16: JSR 350 State Management

Capability - QoS» Behaviour offered by a provider

˃ Durability˃ Transactions˃ Isolation and concurrency control

» Supported by configuration» Described by a unique name

Page 17: JSR 350 State Management

State Classes

State Connection

State Map

State Connection

Factory

State Management

Registry

0..*

0..*

1

1

1 0..*

State Container

1

0..*

0..*

1

Page 18: JSR 350 State Management

Getting a ConnectionState ConnectionState Connection

FactoryClient

Application

State Management

Registry

Find State Connection Factory

Get State Connection

Create State Connection

Create

Page 19: JSR 350 State Management

Using a StateContainerKeyDog

Client Application

StateConnection

new (“fido”, “Sheperd”)

createKey(fido.getUniqueName(), String.class, Dog.class)

put(fidoKey, fido)

fidoKey

StateContainer fidoState

get(fidoKey)

fido copy

State Container

create

create

Store

Retrieve

Page 20: JSR 350 State Management

Using a StateMapDog

Client Application

StateConnection

new (“fido”, “Sheperd”)

getStateMap(String.class, Dog.class)

put(fidoKey, fido)

StateMap dogMap

get(fidoKey)

fido copy

State Map

create Store

Retrieve

Page 21: JSR 350 State Management

Standards View 350 347 (107)

Client

State Management API (350)

Data Grid API (347)

Page 22: JSR 350 State Management

Standards View 347 350

Client

State Management API (350)

Data Grid API (347)

Page 23: JSR 350 State Management

Standards View 350 & 347Client

State Management API (350)

Data Grid API (347)

State Management API (350)

Page 24: JSR 350 State Management

Roles » Provider

˃ Implement the specification˃ Innovate with new capabilities

» Administrator / Developer˃ Configure the state connection factory˃ Make a State Connection available

» Developer˃ Use State Connection and State to accelerate development

Page 25: JSR 350 State Management

Positioning JSR-350» Comparing state persistence:

˃ Relational / SQL˃ Object ˃ NoSQL

» Target products˃ Application Server˃ Android

Page 26: JSR 350 State Management

Example - StateConnection

Page 27: JSR 350 State Management

Example - StateContainer

Page 28: JSR 350 State Management

Example – get/put StateContainer

Page 29: JSR 350 State Management

Get a StateMap

Page 30: JSR 350 State Management

put/get a Dog/Person

Page 31: JSR 350 State Management

Demo

Page 32: JSR 350 State Management

Design Debates» Typing

˃ Strong versus weak

» Is StateMap necessary / desirable?

Page 33: JSR 350 State Management

Next steps» Expected milestones» How to provide feedback

Page 34: JSR 350 State Management

Q & A