jsr 350 state management
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 PresentationTRANSCRIPT
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
Further Information» Java State Management Wiki http://java.net/projects/java-state-managemen» JavaOne presentation http://
java.net/downloads/java-state-managemen/2011-J1-Java-State-Management-v2.ppt
» The spec http://www.jcp.org/en/jsr/detail?id=350