+ All Categories
Home > Technology > IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

Date post: 11-Jul-2015
Category:
Upload: trayan-iliev
View: 333 times
Download: 0 times
Share this document with a friend
Popular Tags:
37
IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/ BGJUG Meeting – Sofia November 10, 2014 Slide 1 Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License REST, HATEOAS & Metadata with JAX-RS 2.0 Trayan Iliev IPT – Intellectual Products & Technologies e-mail: [email protected] web: http://www.iproduct.org Oracle®, Java™ and JavaScript™ are trademarks or registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
Transcript
Page 1: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 1Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

REST, HATEOAS & Metadata with JAX-RS 2.0

Trayan Iliev

IPT – Intellectual Products & Technologiese-mail: [email protected]

web: http://www.iproduct.org

Oracle®, Java™ and JavaScript™ are trademarks or registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Page 2: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 2Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Agenda

Service Oriented Architecture (SOA) & REST

REpresentational State Transfer (REST) architectural style – advantages and main constraints

Hypermedia As The Engine Of Application State (HATEOAS)

Richardson Maturity Model of Web Applications

RESTful services + JSON – lightweight and efficient way for building platform independent and loosely-coupled applications

RESTful patterns & anti-patterns

Java API for RESTful Web Services – JAX-RS

Proposal: Separation of Query & Command Representations & dynamically generated meta-data for RESFTUL resources

Let's try it (IPT Course Manager + Polling Demo & hands-on exercises)

Page 3: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 3Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Question 1

How many people know what is REST?

Page 4: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 4Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Question 2

How many people have developed at least one RESTful service with JAX-RS?

Page 5: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 5Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Software Architecture – Definitions [1]

Almost everybody feels at peace with nature: listening to the ocean

waves against the shore, by a still lake, in a field of grass, on a

windblown heath. One day, when we have learned the timeless way

again, we shall feel the same about our towns, and we shall feel as

much at peace in them, as we do today walking by the ocean, or

stretched out in the long grass of a meadow.

— Christopher Alexander, The Timeless Way of Building (1979)

Page 6: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 6Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Software Architecture – Definitions [2]

According to Dr. Roy Thomas Fielding [Architectural Styles and the Design of Network-based Software Architectures, 2000]:

A software architecture is an abstraction of the run-time elements of a software system during some phase of its operation. A system may be composed of many levels of abstraction and many phases of operation,each with its own software architecture.

A software architecture is defined by a configuration of architectural elements - components, connectors, and data - constrained in their relaionships in order to achieve a desired set of architectural properties.

Page 7: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 7Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Software Architecture – Definitions [3]

According to Dr. Roy Thomas Fielding [Architectural Styles and the Design of Network-based Software Architectures, 2000]:

An architectural style is a coordinated set of architectural constraints that restricts the roles/features of architectural elements and the allowed relationships among those elements within any architecture that conforms to that style.

The primary distinction between Network-based architectures and software architectures in general is that communication between components is restricted to message passing, or the equivalent of message passing if a more efficient mechanism can be selected at runtime based on the location of components.

Page 8: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 8Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Architectural Properties

According to Dr. Roy Thomas Fielding [Architectural Styles and the Design of Network-based Software Architectures, 2000]:

PerformanceScalabilityReliabilitySimplicityExtensibility

All of them should be present in a desired Web Architecture and REST architectural style tries to preserve them by consistently applying several architectural constraints

Dynamic evolvabilityCusomizabilityConfigurabilityVisibility

Page 9: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 9Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Service Oriented Architecture (SOA) – Definitions

Thomas Erl: SOA represents an open, agile, extensible, federated, composable architecture comprised of autonomous, QoS-capable, vendor diverse, interoperable, discoverable, and potentially reusable services, implemented as Web services. SOA can establish an abstraction of business logic and technology, resulting in a loose coupling between these domains. SOA is an evolution of past platforms, preserving successful characteristics of traditional architectures, and bringing with it distinct principles that foster service-orientation in support of a service-oriented enterprise. SOA is ideally standardized throughout an enterprise, but achieving this state requires a planned transition and the support of a still evolving technology setReferences: Erl, Thomas. Serviceorientation.org – About the Principles, 2005–06

Page 10: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 10Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

SOA == SOAP + WSDL?

Web Services are:

components for building distributed applications in SOA architectural style

communicate using open protocols

are self-descriptive and self-content

can be searched and found using UDDI or ebXML registries (and more recent specifications – WSIL & Semantic Web Services)

Source: http://en.wikipedia.org/wiki/File:Webservices.png, Author: H. VoormannLicense: Creative Commons Attribution 3.0 Unported

SemanticModels

Mapping WSDL

MessagesWSDL

Page 11: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 11Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Java EE 6 Architecture

Source: http://en.wikipedia.org/wiki/File:SOA_Detailed_Diagram.png, Author: JamesLWilliams2010, License: Creative Commons Attribution 3.0 Unported

Service Oriented Architecture (SOA)

Page 12: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 12Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

SOA Implemetation - Java SE/EE 6 APIs

According to Java™ EE Specification:Web Services (SOAP)

Java API for XML Web Services (JAX-WS)

Java Architecture for XML Binding (JAXB)

SOAP with Attachments API for Java (SAAJ)

Java API for XML Registries (JAXR)

RESTful Web ServicesJava API for RESTful Web Services - JAX-RS

Page 13: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 13Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Representational State Transfer (REST) [1]

REpresentational State Transfer (REST) is an architecture for accessing distributed hypermedia web-services

The resources are identified by URIs and are accessed and manipulated using an HHTP interface base methods (GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH)

Information is exchanged using representations of these resources

Lightweight alternative to SOAP+WSDL -> HTTP + Any representation format (e.g. JavaScript™ Object Notation – JSON)

Page 14: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 14Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Representational State Transfer (REST) [2]

Identification of resources – URIs

Representation of resources – e.g. HTML, XML, JSON, etc.

Manipulation of resources through these representations

Self-descriptive messages - Internet media type (MIME type) provides enough information to describe how to process the message. Responses also explicitly indicate their cacheability.

Hypermedia as the engine of application state (aka HATEOAS)

Application contracts are expressed as media types and [semantic] link realtions (rel attribute - RFC5988, "Web Linking")

[Source: http://en.wikipedia.org/wiki/Representational_state_transfer]

Page 15: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 15Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Advantages of REST

Scalability of component interactions – through layering the client server-communication and enabling load-balancing, shared caching, security policy enforcement;

Generality of interfaces – allowing simplicity, reliability, security and improved visibility by intermediaries, easy configuration, robustness, and greater efficiency by fully utilizing the capabilities of HTTP protocol;

Independent development and evolution of components, dynamic evolvability of services, without breaking existing clients.

Fault tolerat, Recoverable, Secure, Loosely coupled

Page 16: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 16Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Richardson's Maturity Model of Web Services

According to Leonard Richardson [Talk at QCon, 2008 - http://www.crummy.com/writing/speaking/2008-QCon/act3.html]:

Level 0 – POX: Single URI (XML-RPC, SOAP)

Level 1 – Resources: Many URIs, Single Verb (URI Tunneling)

Level 2 – HTTP Verbs: Many URIs, Many Verbs (CRUD – e.g Amazon S3)

Level 3 – Hypermedia Links Control the Application State = HATEOAS (Hypertext As The Engine Of Application State) === truely RESTful Services

Page 17: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 17Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Is There A Level 4 for WebApp Maturity?

Considerations:

Command Query Responsibility Segregation (CQRS):http://martinfowler.com/bliki/CQRS.html (Gentle introduction by Martin Fowler) & ReportingDatabases: http://martinfowler.com/bliki/ReportingDatabase.html

A single representation type can not be optimal for both reading (Query) and updating the application state (Command)

We may prefer to model Query and Command as separate resources / representation types

Page 18: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 18Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

What About Meta-Data?

Very important for a RESTful applications where resources and resource states are dynamically discoverable / changeable

But what we have?

For SOAP services there is a WSDL (XML Schema based data type descriptions)

REST should have the same -> Welcome WADL !

But is it really a good thing to have a static description of dynamically changeable resources and valid resource state change transitions?

Static model can be evil in a Live World!

Page 19: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 19Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Web Application Description Language (WADL)

XML-based file format providing machine-readable description of HTTP-based web application resources – typically RESTful web services

WADL is a W3C Member SubmissionMultiple resourcesInter-connections between resourcesHTTP methods that can be applied accessing each resource Expected inputs, outputs and their data-type formatsXML Schema data-type formats for representing the RESTful resources

But WADL resource description is static ... let's make it dynamic!

Източник: http://en.wikipedia.org/wiki/File:Webservices.png, автор: H. VoormannЛиценз: Creative Commons Attribution 3.0 Unported

Page 20: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 20Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

The New Kids on the Block: JSON, JSON Schema & Hyper Schema, Microformats

There are good use cases for WADL (REST resource metadata descriptions): automatic generation of client code & functional REST service tests, client data validation, building of generic REST clients.

WADL is XML (and relies on XML Schema Definitions) – this is a limitation for JavaScript Clients

Welcome JSON Schema & JSON Hyper-Schema !

But there are also Microformats (XHTML Meta Data Profiles –XMDP): e.g. hCard, hReview, hProduct, hCalendar ...

Talking about meta-data: W3C Resource Description Framework (RDF) and Web Ontology Language (OWL)

Page 21: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 21Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Metadata-Representations Proposal (& Questions)

Meta-data can be very useful for generic REST clients and agents crawling the Web!

Meta-data should be dynamically generated

... but can be more stable than the data it describes

Separation of data and meta-data representations (different life-cycles – allows optional retrieval, caching)

Meta-data should be dynamically discoverable using hyper links in resource representations (rel= type/ describedby/ lrdd?)

Separation of Command and Query representations -> optimal representations for each task (possibly with separate MIME types – application/vnd.*+json/xml?)

Page 22: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 22Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

RESTful Patterns and Best Practices

According to Cesare Pautasso [http://www.jopera.org/files/SOA2009-REST-Patterns.pdf]:

Uniform Contract

Content Negotiation

Entity Endpoint

Endpoint Redirection

Distributed Response Caching

Entity Linking

Idempotent Capability

Message-based State Deferral, etc.

Page 23: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 23Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

REST Antipatterns and Worst Practices

According to Jacob Kaplan-Moss [http://jacobian.org/writing/rest-worst-practices/]:

Conflating models and resources

Hardcoded authentication

Resource-specific output formats

Hardcoded output formats

Weak HTTP method support (e.g. tunell everything through GET/POST)

Improper use of links

Couple the REST API to the application

Page 24: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 24Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Java API for RESTful Web Service (JAX-RS)

Packages: javax.ws.rs, javax.ws.rs.core, javax.ws.rs.ext Basic annotations:

@Path@PathParam@QueryParam@FormParam@HeaderParam@CookieParam@MatrixParam@DefaultValue@Encoded

Източник: http://en.wikipedia.org/wiki/File:Webservices.png, автор: H. VoormannЛиценз: Creative Commons Attribution 3.0 Unported

@Produces@Consumes, @HttpMethod@GET@POST@PUT@DELETE@Provider@Context

Page 25: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 25Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Implementing REST Resources using JAX-RS [1]

@Stateless@Path("courses")@TransactionManagement(TransactionManagementType.BEAN)public class CoursesResource extends AbstractFacade<Course> { @PersistenceContext(unitName = "IPTCourseManagerPU") private EntityManager em; @Context private UriInfo context; @Resource UserTransaction utx;

Page 26: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 26Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Implementing REST Resources using JAX-RS [2]

@POST@Consumes({"application/json", "application/xml"})public Response createCourse(Course entity){ try { utx.begin(); super.create(entity); utx.commit(); return Response.created(UriBuilder.fromUri(context.getAbsolutePath()).path(entity.getId().toString()).build()).build(); } catch (Exception ex) { throw new WebApplicationException(ex); }}

Page 27: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 27Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Implementing REST Resources using JAX-RS [3]

@GET@Produces({"application/xml", "application/json"})public CoursesRepresentation getAllCourses() { return new CoursesRepresentation(super.findAll());}

@Path("{id}")public CourseResource getCourseResource( @PathParam("id") Integer id) { return new CourseResource(id, em, utx);}

Sub-resource

Page 28: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 28Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Some Open Source WS Implementation Stacks

Glassfish Metro – http://metro.java.net/ – JAX-WS (SOAP + WSDL) Reference Implementation

Glassfish Jersey – http://jersey.java.net/ – JAX-RS (JSR 311) Reference Implementation for building RESTful Web services

RESTEasy – http://resteasy.jboss.org/ – JBoss JAX-RS implementation

Apache CXF – http://cxf.apache.org/ – JAX-WS & JAX-RS

Apache Axis 2 – http://axis.apache.org/axis2/java/core/ – SOAP & REST web services

Page 29: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 29Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Proposed Architecture:jQuery Client + RESTful Backend

Page 30: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 30Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

REST Demo: IPT Course Manager + Generic Client

Page 31: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 31Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Polling Demo + Hands-on Exercises (1)

Page 32: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 32Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Polling Demo + Hands-on Exercises (2)

You can clone (or download) IPT Git repository at: https://github.com/iproduct/BGJUG-REST-Demo/

Demos & exercises are provided as NetBeans projects – please follow the setup instructions.

There are four JAX-RS 2 (Jersey) demos in the repository with corresponding _Exercises (complete methods to satisfy functional tests):

1.RestfulHello – introduction to JAX-RS – simple HelloResource & StudentResource CRUD

2.PollingDemoBasic – basic version of RESTful poll voting service

3.PollingDemoSubresourceJPA – RESTful CRUD – Alternative & Vote sub-resources added + JPA persistence (default Apache Derby used)

4.PollingDemoHATEOAS – hypermedia version with navigable state

Page 33: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 33Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Polling Demo Resources

Page 34: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 34Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Polling Demo – Poll Resource States

Page 35: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 35Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Want to Learn More?

Welcome to IPT Java™ trainings [http://www.iproduct.org/]:

Programming in Java Language - 3 modules

Web Programming with Java Technology: Servlet 3.1, JSP, JSTL, EL, JSF 2.2, Facelets & Templating, AJAX, JSON, WebSocket

Java Enterprise Technologies (Java EE 7) – EJB 3.2, JSF 2.2, JAX-RS 2.0, Web Services, WebSocket, JMS, CDI, Bean Validation, JPA, JTA, Batch and Concurrency

Service Oriented Architecture (SOA) & Contemporary Standards for Business Process Modeling (BPM) - SOAP, WSDL 2.0, REST, SOA, SCA, SDO, BPMN, WS-BPEL

Java™ Portlet Development with JSR 286: Portlet 2.0 API, Liferay® 6 & GateIn 3 – JSP™, JSF 2.2 & AJAX Portlet

Oracle®, Java™ and JavaScript™ are trademarks or registered trademarks of Oracle and/or its affiliates. Liferay® is a registered trademark of Liferay, Inc. Other names may be trademarks of their respective owners.

Page 36: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 36Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

References

R. Fielding, Architectural Styles and the Design of Networkbased Software Architectures, PhD Thesis, University of California, Irvine, 2000

Fielding's blog discussing REST – http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

Representational state transfer (REST) in Wikipedia – http://en.wikipedia.org/wiki/Representational_state_transfer

Hypermedia as the Engine of Application State (HATEOAS) in Wikipedia – http://en.wikipedia.org/wiki/HATEOAS

JavaScript Object Notation (JSON) – http://www.json.org/

JAX-RS 2.0 (JSR 339) Reference Implementation for building RESTful Web services – http://jersey.java.net/

Page 37: IPT_REST_Dynamic_Metadata_Proposal_BGJUG_2014

IPT – Intellectual Products & Technologies Trayan Iliev, http://www.iproduct.org/

BGJUG Meeting – Sofia

November 10, 2014

Slide 37Licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Thanks for Your Attention!

Questions?