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
![Page 1: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/1.jpg)
JSR 350 State Management
Overview and updatePete Raymond
![Page 2: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/2.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/3.jpg)
Purpose» Raise awareness of JSR-350 State Management» Seek feedback on concepts and usage
![Page 4: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/4.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/5.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/6.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/7.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/8.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/9.jpg)
API to Multiple Providers
JEE Client
State Management API
JSE Client
Built-inProvider
3rd partyProvider
CustomProvider
![Page 10: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/10.jpg)
Key Concepts» State (State Container)» State Connection Factory» State Connection» State Container» State Map» Capability
![Page 11: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/11.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/12.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/13.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/14.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/15.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/16.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/17.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/18.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/19.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/20.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/21.jpg)
Standards View 350 347 (107)
Client
State Management API (350)
Data Grid API (347)
![Page 22: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/22.jpg)
Standards View 347 350
Client
State Management API (350)
Data Grid API (347)
![Page 23: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/23.jpg)
Standards View 350 & 347Client
State Management API (350)
Data Grid API (347)
State Management API (350)
![Page 24: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/24.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/25.jpg)
Positioning JSR-350» Comparing state persistence:
˃ Relational / SQL˃ Object ˃ NoSQL
» Target products˃ Application Server˃ Android
![Page 26: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/26.jpg)
Example - StateConnection
![Page 27: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/27.jpg)
Example - StateContainer
![Page 28: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/28.jpg)
Example – get/put StateContainer
![Page 29: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/29.jpg)
Get a StateMap
![Page 30: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/30.jpg)
put/get a Dog/Person
![Page 31: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/31.jpg)
Demo
![Page 32: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/32.jpg)
Design Debates» Typing
˃ Strong versus weak
» Is StateMap necessary / desirable?
![Page 33: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/33.jpg)
Next steps» Expected milestones» How to provide feedback
![Page 34: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/34.jpg)
Q & A
![Page 35: JSR 350 State Management](https://reader036.vdocument.in/reader036/viewer/2022081505/5681575c550346895dc505c8/html5/thumbnails/35.jpg)
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