Developing “RESTful transactions” with Apache Sling

Preview:

Citation preview

APACHE SLING & FRIENDS TECH MEETUP BERLIN, 23-25 SEPTEMBER 2013

“RESTful transactions” with Apache Sling Şenol Taş

About

adaptTo() 2013 2

§  My Name is Şenol Taş §  Senior Computer Scientist §  Adobe in Basel, Switzerland

@thelabertasch

adaptTo() 2013 3

Why such a boring Topic?

Because websites are…

adaptTo() 2013 4

§  No longer simple advertisement platforms

§  Not only “online Business cards” §  Not a “nice to have” medium §  Not a “Playground” §  …..

Because websites are…

adaptTo() 2013 5

§  Serious business §  Make $$$ §  Complex §  MUST have §  “Real” Applications

adaptTo() 2013 6

Your Website IS THE Application

Let’s….

adaptTo() 2013 7

§  Find out “what is a transaction?” §  Quick reminder about REST §  How do this two concepts work

together?

adaptTo() 2013 8

What are Transactions?

What are Transactions?

adaptTo() 2013 9

adaptTo() 2012 10

“An input message to a computer system that must be dealt with as a single unit of work”

What are Transactions?

adaptTo() 2013 11

§  begin transaction §  debit checking account §  credit savings account §  update history log §  commit transaction

What are Transactions?

adaptTo() 2013 12

§  Late 70s: Jim Gray defined the semantic of reliable transactions

§  Early 80s: Andreas Reuter and Theo Härder defined the acronym “ACID” in their paper “Principles of Transaction-Oriented Database Recovery”

ACID

adaptTo() 2013 13

§  Atomicity §  Consistency §  Isolation §  Durability

How do tools like hybernate help?

adaptTo() 2013 14

adaptTo() 2013 15

What is REST?

What is REST?

adaptTo() 2013 16

§  Representational State Transfer §  Stateless §  Client-server §  Cachable §  Scalable §  …..

What is REST?

adaptTo() 2013 17

§  So? How does this work together with transactions?

adaptTo() 2013 18

REST and transaction is a oxymoron

REST and transactions

adaptTo() 2013 19

§  Atomicity §  Consistency §  Isolation §  Durability

What are the challenges?

adaptTo() 2013 20

§  HTTP REQUEST – RESPONSE PATTERN

§  STATELESS §  …..?

Change your mindset…

adaptTo() 2013 21

§  Not everything has to be done in one request

§  If you are using POST.jsp or similar in Sling, most likely something is wrong

§  Events and Observations are your friends

§  Use the full power of the Sling Default Post and GET Servlet

Remember the cheat sheet from Lars?

adaptTo() 2013 22

Example

adaptTo() 2013 23

§  Resource: /home/senol/profile

§  Begin transaction §  change interests §  Commit transaction

Begin Transaction

adaptTo() 2013 24

§  Copy the node /home/senol/profile to /home/senol/transactions/profile/*

Change interests

adaptTo() 2013 25

§  Update with regular post request

Commit transaction

adaptTo() 2012 26

§  With observation or events

§  Directly

Things of interest

adaptTo() 2012 27

§  Communicating with services layer §  Distributed transactions §  Nested transactions §  Locking…

§  Using Adobe CQ? §  Have a look at the Workflow Launcher!

adaptTo() 2013 28

Thank you and have a RESTful Day!

Recommended