Apache Sling
-
Upload
nobby -
Category
Technology
-
view
2.874 -
download
7
Transcript of Apache Sling
Apache SlingAndreas Hartmann
CTO, BeCompany GmbH
REST
REpresentational State Transfer
Roy T. Fielding‘s dissertation
Not a technology/standard/software
Set of architectural constraints
Optimized for common use-cases of the WWW (based on experience)
REST in the WWW
HTML docs (representations) = states
Hyperlinks + forms = transitions
/products
/products/lenya
GET /products/lenya
/products/cocoon
POST /products/cocoontitle=Apache%20Cocoon
Concerns
Simplicity
Visibility
Reusability
Scalability
Reliability
Extensibility
Cacheability
Efficiency
REST Constraints
Client-Server
Layered transport (firewalls, proxies, …)
Caching
Stateless server
Uniform interface
Code on demand
REST Data Elements
Resource (anything that can be addressed, independent of a particular point in time)
URIs to identify resources
Resource metadata: source link, alternates, …
Representation = data (byte sequence)
Repr. metadata: media type, last modified, …
Uniform Interface
Representation of resources in one of an emerging set of standard formats
Uniform resource identification mechanism
Messages are self-descriptive:representation/resource/control metadata
Intermediaries can transform the messages,e.g. compressing for optimized transport
Common Violations
Indirect application state:Addressing and caching issues
Cookies (server-side state)Frames
Incremental processing issuesEmbedding metadata in HTML head<img> without @width, @heightdynamically sized table columns
Apache Sling
Web application framework
JCR for content storage
Process HTTP requests in a RESTful way
Scripts (JSR-233) or Servlets for processing
OSGi for deploying modules at runtime
Application Scenarios
Everything (well, „everything is content“)
WCM, DAM, Wiki, Blog, ERP, …
Especially for content-oriented applications
Sling encourages REST
Thinking in resources (mapped to JCR nodes)
Representation selection (HTML, Atom, PDF, …) via part of URI
Uniform interface for content handling:GET + POST + PUT + DELETE
UnRESTful Addressing
/product ?id=13423.jsp
URI doesn't addressthe resource
Not part of URI:not cacheable
Request Processing in Sling
/news/today .atom
Resource
sling:resourceType
Servlet / Script
feed
/apps/feed/atom.esp
/news/today ?title=Today
Resource
sling:resourceType
Servlet / Script
feed
/apps/feed/PUT.esp
GET PUT
Sling Demo
Start application
Connect via WebDAV
Connect via Eclipse Plug-In
Dojo Tree Example