JSR 350 State Management

Preview:

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

Citation preview

JSR 350 State Management

Overview and updatePete Raymond

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» Seek feedback on concepts and usage

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

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

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

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

˃ Relational˃ Persistent

» Proprietary APIs˃ Reuse˃ Ease of use

» NoSQL ˃ ?

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

API to Multiple Providers

JEE Client

State Management API

JSE Client

Built-inProvider

3rd partyProvider

CustomProvider

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

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

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

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

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

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

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?

Capability - QoS» Behaviour offered by a provider

˃ Durability˃ Transactions˃ Isolation and concurrency control

» Supported by configuration» Described by a unique name

State Classes

State Connection

State Map

State Connection

Factory

State Management

Registry

0..*

0..*

1

1

1 0..*

State Container

1

0..*

0..*

1

Getting a ConnectionState ConnectionState Connection

FactoryClient

Application

State Management

Registry

Find State Connection Factory

Get State Connection

Create State Connection

Create

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

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

Standards View 350 347 (107)

Client

State Management API (350)

Data Grid API (347)

Standards View 347 350

Client

State Management API (350)

Data Grid API (347)

Standards View 350 & 347Client

State Management API (350)

Data Grid API (347)

State Management API (350)

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

Positioning JSR-350» Comparing state persistence:

˃ Relational / SQL˃ Object ˃ NoSQL

» Target products˃ Application Server˃ Android

Example - StateConnection

Example - StateContainer

Example – get/put StateContainer

Get a StateMap

put/get a Dog/Person

Demo

Design Debates» Typing

˃ Strong versus weak

» Is StateMap necessary / desirable?

Next steps» Expected milestones» How to provide feedback

Q & A

Recommended