Suche senden
Hochladen
GIDS 2012: JAX-RS 2.0: RESTful Java on Steroids
•
2 gefällt mir
•
6,748 views
Arun Gupta
Folgen
GIDS 2012: JAX-RS 2.0: RESTful Java on Steroids
Weniger lesen
Mehr lesen
Technologie
News & Politik
Melden
Teilen
Melden
Teilen
1 von 52
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
JAX-RS 2.0: RESTful Web services on steroids
JAX-RS 2.0: RESTful Web services on steroids
codemotion_es
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the Cloud
codemotion_es
JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?
Arun Gupta
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012
Arun Gupta
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
Arun Gupta
Websocket 1.0
Websocket 1.0
Arun Gupta
Java EE 7 and HTML5: Developing for the Cloud
Java EE 7 and HTML5: Developing for the Cloud
Arun Gupta
PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012
Arun Gupta
Weitere ähnliche Inhalte
Was ist angesagt?
GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012
Arun Gupta
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Arun Gupta
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Arun Gupta
Jfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE Application
Arun Gupta
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
Arun Gupta
JAX RS 2.0 - OTN Bangalore 2013
JAX RS 2.0 - OTN Bangalore 2013
Jagadish Prasath
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Arun Gupta
Everything You Need to Know about Diagnostics and Debugging on Microsoft Inte...
Everything You Need to Know about Diagnostics and Debugging on Microsoft Inte...
goodfriday
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
Reza Rahman
Java EE 7 - Overview and Status
Java EE 7 - Overview and Status
Java Usergroup Berlin-Brandenburg
Java EE 7 at JAX London 2011 and JFall 2011
Java EE 7 at JAX London 2011 and JFall 2011
Arun Gupta
Was ist angesagt?
(11)
GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Jfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE Application
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
JAX RS 2.0 - OTN Bangalore 2013
JAX RS 2.0 - OTN Bangalore 2013
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Everything You Need to Know about Diagnostics and Debugging on Microsoft Inte...
Everything You Need to Know about Diagnostics and Debugging on Microsoft Inte...
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
Java EE 7 - Overview and Status
Java EE 7 - Overview and Status
Java EE 7 at JAX London 2011 and JFall 2011
Java EE 7 at JAX London 2011 and JFall 2011
Andere mochten auch
Best Practices for Interoperable XML Databinding with JAXB
Best Practices for Interoperable XML Databinding with JAXB
Martin Grebac
JSR-222 Java Architecture for XML Binding
JSR-222 Java Architecture for XML Binding
Heiko Scherrer
Andrei Niculae - JavaEE6 - 24mai2011
Andrei Niculae - JavaEE6 - 24mai2011
Agora Group
Jaxb
Jaxb
Manav Prasad
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services
javatwo2011
WS - SecurityPolicy
WS - SecurityPolicy
Prabath Siriwardena
XML parsing using jaxb
XML parsing using jaxb
Malintha Adikari
An Overview of Web Services: SOAP and REST
An Overview of Web Services: SOAP and REST
Ram Awadh Prasad, PMP
Developing Web Services With Oracle Web Logic Server
Developing Web Services With Oracle Web Logic Server
Gaurav Sharma
Mixing OAuth 2.0, Jersey and Guice to Build an Ecosystem of Apps - JavaOne...
Mixing OAuth 2.0, Jersey and Guice to Build an Ecosystem of Apps - JavaOne...
Hermann Burgmeier
Java Web Services [2/5]: Introduction to SOAP
Java Web Services [2/5]: Introduction to SOAP
IMC Institute
Java Web Services [5/5]: REST and JAX-RS
Java Web Services [5/5]: REST and JAX-RS
IMC Institute
ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2
Rodrigo Cândido da Silva
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WS
Carol McDonald
Java Web Services [4/5]: Java API for XML Web Services
Java Web Services [4/5]: Java API for XML Web Services
IMC Institute
Java Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web Services
IMC Institute
REST API Design for JAX-RS And Jersey
REST API Design for JAX-RS And Jersey
Stormpath
RESTful Web Services with Jersey
RESTful Web Services with Jersey
Scott Leberknight
Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)
Martin Necasky
WS - Security
WS - Security
Prabath Siriwardena
Andere mochten auch
(20)
Best Practices for Interoperable XML Databinding with JAXB
Best Practices for Interoperable XML Databinding with JAXB
JSR-222 Java Architecture for XML Binding
JSR-222 Java Architecture for XML Binding
Andrei Niculae - JavaEE6 - 24mai2011
Andrei Niculae - JavaEE6 - 24mai2011
Jaxb
Jaxb
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services
WS - SecurityPolicy
WS - SecurityPolicy
XML parsing using jaxb
XML parsing using jaxb
An Overview of Web Services: SOAP and REST
An Overview of Web Services: SOAP and REST
Developing Web Services With Oracle Web Logic Server
Developing Web Services With Oracle Web Logic Server
Mixing OAuth 2.0, Jersey and Guice to Build an Ecosystem of Apps - JavaOne...
Mixing OAuth 2.0, Jersey and Guice to Build an Ecosystem of Apps - JavaOne...
Java Web Services [2/5]: Introduction to SOAP
Java Web Services [2/5]: Introduction to SOAP
Java Web Services [5/5]: REST and JAX-RS
Java Web Services [5/5]: REST and JAX-RS
ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WS
Java Web Services [4/5]: Java API for XML Web Services
Java Web Services [4/5]: Java API for XML Web Services
Java Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web Services
REST API Design for JAX-RS And Jersey
REST API Design for JAX-RS And Jersey
RESTful Web Services with Jersey
RESTful Web Services with Jersey
Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)
WS - Security
WS - Security
Ähnlich wie GIDS 2012: JAX-RS 2.0: RESTful Java on Steroids
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
Codemotion
Hadoop Summit San Diego Feb2013
Hadoop Summit San Diego Feb2013
Narayan Bharadwaj
JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web Services
Arun Gupta
apiGrove
apiGrove
gmthomps
Implementing Web Commerce In A Complex Environment
Implementing Web Commerce In A Complex Environment
Jerome Leonard
Expendables E-AppStore
Expendables E-AppStore
lobalint
Using Istio to Secure & Monitor Your Services
Using Istio to Secure & Monitor Your Services
Alcide
2009 Q2 WSO2 Technical Update
2009 Q2 WSO2 Technical Update
WSO2
Coherence RoadMap 2018
Coherence RoadMap 2018
harvraja
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Amazon Web Services
The Java EE 7 Platform: Productivity & HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity & HTML5 at San Francisco JUG
Arun Gupta
21st Century SOA
21st Century SOA
Bob Rhubart
Streaming Solutions for Real time problems
Streaming Solutions for Real time problems
Abhishek Gupta
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Amazon Web Services
Application Services On The Web Sales Forcecom
Application Services On The Web Sales Forcecom
QConLondon2008
Data freedom: come migrare i carichi di lavoro Big Data su AWS
Data freedom: come migrare i carichi di lavoro Big Data su AWS
Amazon Web Services
2. FOMS _ FeedHenry_ Mícheál Ó Foghlú
2. FOMS _ FeedHenry_ Mícheál Ó Foghlú
FOMS011
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil Gaur
Takashi Ito
MySQL day Dublin - OCI & Application Development
MySQL day Dublin - OCI & Application Development
Henry J. Kröger
21st Century Service Oriented Architecture
21st Century Service Oriented Architecture
Bob Rhubart
Ähnlich wie GIDS 2012: JAX-RS 2.0: RESTful Java on Steroids
(20)
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
Hadoop Summit San Diego Feb2013
Hadoop Summit San Diego Feb2013
JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web Services
apiGrove
apiGrove
Implementing Web Commerce In A Complex Environment
Implementing Web Commerce In A Complex Environment
Expendables E-AppStore
Expendables E-AppStore
Using Istio to Secure & Monitor Your Services
Using Istio to Secure & Monitor Your Services
2009 Q2 WSO2 Technical Update
2009 Q2 WSO2 Technical Update
Coherence RoadMap 2018
Coherence RoadMap 2018
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
The Java EE 7 Platform: Productivity & HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity & HTML5 at San Francisco JUG
21st Century SOA
21st Century SOA
Streaming Solutions for Real time problems
Streaming Solutions for Real time problems
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Application Services On The Web Sales Forcecom
Application Services On The Web Sales Forcecom
Data freedom: come migrare i carichi di lavoro Big Data su AWS
Data freedom: come migrare i carichi di lavoro Big Data su AWS
2. FOMS _ FeedHenry_ Mícheál Ó Foghlú
2. FOMS _ FeedHenry_ Mícheál Ó Foghlú
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil Gaur
MySQL day Dublin - OCI & Application Development
MySQL day Dublin - OCI & Application Development
21st Century Service Oriented Architecture
21st Century Service Oriented Architecture
Mehr von Arun Gupta
5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf
Arun Gupta
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019
Arun Gupta
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and Kubernetes
Arun Gupta
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using Firecracker
Arun Gupta
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019
Arun Gupta
Why Amazon Cares about Open Source
Why Amazon Cares about Open Source
Arun Gupta
Machine learning using Kubernetes
Machine learning using Kubernetes
Arun Gupta
Building Cloud Native Applications
Building Cloud Native Applications
Arun Gupta
Chaos Engineering with Kubernetes
Chaos Engineering with Kubernetes
Arun Gupta
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAM
Arun Gupta
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018
Arun Gupta
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 Keynote
Arun Gupta
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018
Arun Gupta
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv Summit
Arun Gupta
Top 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's Landscape
Arun Gupta
Container Landscape in 2017
Container Landscape in 2017
Arun Gupta
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Arun Gupta
Docker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developers
Arun Gupta
Thanks Managers!
Thanks Managers!
Arun Gupta
Migrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to Containers
Arun Gupta
Mehr von Arun Gupta
(20)
5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and Kubernetes
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using Firecracker
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019
Why Amazon Cares about Open Source
Why Amazon Cares about Open Source
Machine learning using Kubernetes
Machine learning using Kubernetes
Building Cloud Native Applications
Building Cloud Native Applications
Chaos Engineering with Kubernetes
Chaos Engineering with Kubernetes
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAM
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 Keynote
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv Summit
Top 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's Landscape
Container Landscape in 2017
Container Landscape in 2017
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Docker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developers
Thanks Managers!
Thanks Managers!
Migrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to Containers
Kürzlich hochgeladen
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
Ingrid Airi González
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
Skynet Technologies
A Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
Ana-Maria Mihalceanu
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
Bernd Ruecker
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
Ravi Sanghani
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Mark Simos
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
fnnc6jmgwh
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
Aarwolf Industries LLC
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
itnewsafrica
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
panagenda
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
Neo4j
A Framework for Development in the AI Age
A Framework for Development in the AI Age
Cprime
How Tech Giants Cut Corners to Harvest Data for A.I.
How Tech Giants Cut Corners to Harvest Data for A.I.
LUMINATIVE MEDIA/PROJECT COUNSEL MEDIA GROUP
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
Inflectra
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
TopCSSGallery
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
Wes McKinney
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
Karmanjay Verma
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Pim van der Noll
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
Farhan Tariq
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
itnewsafrica
Kürzlich hochgeladen
(20)
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
A Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
A Framework for Development in the AI Age
A Framework for Development in the AI Age
How Tech Giants Cut Corners to Harvest Data for A.I.
How Tech Giants Cut Corners to Harvest Data for A.I.
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
GIDS 2012: JAX-RS 2.0: RESTful Java on Steroids
1.
JAX-RS 2.0: RESTful
Java on Steroids Arun Gupta, Java EE & GlassFish Guy http://blogs.oracle.com/arungupta, @arungupta 1 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
2.
The following is
intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle. 2 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
3.
Part I: How
we got here ? 3 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
4.
How We Got
Here? • Shortest intro to JAX-RS 1.0 • Requested features for JAX-RS 2.0 • JSR 339: JAX-RS 2.0 4 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
5.
JAX-RS Origins
• JAX-RS 1.0 is Java API for RESTful WS • RESTFul Principles: – Assign everything an ID – Link things together – Use common set of methods – Allow multiple representations – Stateless communications 5 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
6.
JAX-RS 1.0 Goals
• POJO-Based API • HTTP Centric • Format Independence • Container Independence • Inclusion in Java EE 6 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
7.
Example: JAX-RS API
Resources @Path("/atm/{cardId}") URI Parameter public class AtmService { Injection @GET @Path("/balance") @Produces("text/plain") public String balance(@PathParam("cardId") String card, @QueryParam("pin") String pin) { return Double.toString(getBalance(card, pin)); } … HTTP Method Built-in Binding Serialization 7 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
8.
Example: JAX-RS API
(contd.) … Custom Serialization @POST @Path("/withdrawal") @Consumes("text/plain") @Produces("application/json") public Money withdraw(@PathParam("card") String card, @QueryParam("pin") String pin, String amount){ return getMoney(card, pin, amount); } } 8 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
9.
Requested Features
Filters/Handlers Client API Hypermedia Async JSR 330 Validation Improved Conneg MVC 9 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
10.
JSR 339 Expert
Group • EG Formed in March 2011 • Oracle Leads: Marek Potociar / Santiago Pericas-G. • Expert Group: – Jan Algermissen, Florent Benoit, Sergey Beryozkin (Talend), Adam Bien, Bill Burke (RedHat), Clinton Combs, Bill De Hora, Markus Karg, Sastry Malladi (Ebay), Julian Reschke, Guilherme Silveira, Dionysios Synodinos • Early Draft 2 published on Feb 9, 2012! 10 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
11.
Part II: Where
We Are Going 11 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
12.
New in JAX-RS
2.0 ✔ ✔ Filters/Handlers Client API ✔ Hypermedia ✔ ✔ Async JSR 330 ✔ Validation Improved ✔ ✗ Conneg MVC 12 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
13.
New in JAX-RS
2.0 ✔ Interceptors Client API /Handlers Hypermedia Async JSR 330 Validation Improved Conneg 13 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
14.
Motivation
• HTTP client libraries too low level • Sharing features with JAX-RS server API • E.g., MBRs and MBWs • Supported by some JAX-RS 1.0 implementations • Need for a standard 14 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
15.
Client API
Resource Target Client Factory Client “atm” Configuration Resource Target Configuration Configuration “{cardId}” Resource Target Resource Target Invocation Request Builder “balance” “withdrawal” Response 15 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
16.
Example: Client API //
Get instance of Client Client client = ClientFactory.newClient(); Can also inject @URI for the target ß // Get account balance String bal = client.target("http://.../atm/balance") .pathParam("card", "111122223333") .queryParam("pin", "9876") .request("text/plain").get(String.class); 16 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
17.
Example: Client API
(contd.) // Withdraw some money Money mon = client.target("http://.../atm/withdraw") .pathParam("card", "111122223333") .queryParam("pin", "9876") .request("application/json") .post(text("50.0"), Money.class); 17 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
18.
Example: Generic Interface
(Command pattern, Batch processing) Invocation inv1 = client.target("http://.../atm/balance")… .request(“text/plain”).buildGet(); Invocation inv2 = client.target("http://.../atm/withdraw")… .request("application/json") .buildPost(text("50.0")); 18 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
19.
Example: Generic Interface
(contd.) Collection<Invocation> invs = Arrays.asList(inv1, inv2); Collection<Response> ress = Collections.transform(invs, new F<Invocation, Response>() { public Response apply(Invocation inv) { return inv.invoke(); } }); 19 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
20.
Example: Configuration // Get
client and register MyProvider1 Client client = ClientFactory.newClient(); client.configuration().register(MyProvider1.class); // Create atm and register MyProvider2 // Inherits MyProvider1 from client Target atm = client.target("http://.../atm"); atm.configuration().register(MyProvider2.class); // Create balance and register MyProvider3 // Inherits MyProvider1, MyProvider2 from atm Target balance = atm.path("balance"); // new instance balance.configuration().register(MyProvider3.class); 20 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
21.
New in JAX-RS
2.0 ✔ ✔ Interceptors Client API /Handlers Hypermedia Async JSR 330 Validation Improved Conneg 21 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
22.
Motivation
• Customize JAX-RS implementations via well-defined extension points • Use Cases: Logging, Compression, Security, Etc. • Shared by client and server APIs • Supported by most JAX-RS 1.0 implementations • All using slightly different types or semantics 22 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
23.
Filters
• Non-wrapping extension points • Pre: Interface RequestFilter • Post: Interface ResponseFilter • Part of a filter chain • Do not call the next filter directly • Each filter decides to proceed or break chain • By returning FilterAction.NEXT or FilterAction.STOP 23 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
24.
Filter Example: LoggingFilter @Provider class
LoggingFilter implements RequestFilter, ResponseFilter { @Override public FilterAction preFilter(FilterContext ctx) throws IOException { logRequest(ctx.getRequest()); return FilterAction.NEXT; } … 24 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
25.
Filter Example: LoggingFilter
(contd.) @Override public FilterAction postFilter(FilterContext ctx) throws IOException { logResponse(ctx.getResponse()); return FilterAction.NEXT; } } 25 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
26.
Interceptors
• Wrapping extension points • ReadFrom: Interface ReaderInterceptor • WriteTo: Interface WriterInterceptor • Part of a interceptor chain • Call the next handler directly • Each handler decides to proceed or break chain • By calling ctx.proceed() 26 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
27.
Handler Example: GzipInterceptor @Provider class
GzipInterceptor implements ReaderInterceptor, WriterInterceptor { @Override public Object aroundreadFrom(ReadInterceptorContext ctx) throws IOException { if (gzipEncoded(ctx)) { InputStream old = ctx.getInputStream(); ctx.setInputStream(new GZIPInputStream(old)); } return ctx.proceed(); } … } 27 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
28.
Order of execution
Request WriteTo Request ReadFrom Filter Handler Filter Handler ReadFrom Response WriteTo Response Handler Filter Handler Filter Client Server 28 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
29.
Binding
• Associating filters and handlers with resource methods • Same mechanism for filters and handlers Name Binding Global Binding @NameBinding/ Static DEFAULT @Qualifier? DynamicBinding DynamicBinding Dynamic interface Interface 29 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
30.
Binding Example: LoggingFilter
@NameBinding // or @Qualifier ? @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(value = RetentionPolicy.RUNTIME) public @interface Logged { } @Provider @Logged public class LoggingFilter implements RequestFilter, ResponseFilter { … } 30 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
31.
Binding Example: LoggingFilter
@Path("/") public class MyResourceClass { @Logged @GET @Produces("text/plain") @Path("{name}") public String hello(@PathParam("name") String name) { return "Hello " + name; } } 31 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
32.
New in JAX-RS
2.0 ✔ ✔ Filters/Handlers Client API Hypermedia ✔ Async JSR 330 ✔ Validation Improved Conneg 32 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
33.
Motivation
• Services must validate data • Bean Validation already provides the mechanism • Integration into JAX-RS • Support for constraint annotations in: • Fields and properties • Parameters (including request entity) • Methods (response entities) • Resource classes 33 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
34.
Example: Constraint Annotations
@Path("/") class MyResourceClass { @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) Built-in public void registerUser( @NotNull @FormParam("firstName") String fn, Custom @NotNull @FormParam("lastName") String ln, @Email @FormParam("email") String em) { ... } } 34 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
35.
Example: User defined
Constraints @Target({ METHOD, FIELD, PARAMETER }) @Retention(RUNTIME) @Constraint(validatedBy = EmailValidator.class) public @interface Email { ... } class EmailValidator implements ConstraintValidator<Email, String> { public void initialize(Email email) { … } public boolean isValid(String value, ConstraintValidatorContext context) { // Check 'value' is e-mail address … } } 35 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
36.
Example: Request Entity
Validation @CheckUser1 class User { ... } @Path("/") class MyResourceClass { @POST @Consumes("application/xml") public void registerUser1(@Valid User u) { … } @POST @Consumes("application/json") public void registerUser12(@CheckUser2 @Valid User u) { … } } 36 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
37.
New in JAX-RS
2.0 ✔ ✔ Filters/Handlers Client API Hypermedia ✔ ✔ Async JSR 330 ✔ Validation Improved Conneg 37 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
38.
Motivation
• Let “borrowed” threads run free! • Container environment • Suspend and resume connections • Suspend while waiting for an event • Resume when event arrives • Leverage Servlet 3.X async support (if available) • Client API support • Future<RESPONSE>, InvocationCallback<RESPONSE> 38 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
39.
Example: Suspend and
Resume @Path("/async/longRunning") public class MyResource { @Context private ExecutionContext ctx; @GET @Produces("text/plain") public void longRunningOp() { Executors.newSingleThreadExecutor().submit( new Runnable() { public void run() { Thread.sleep(10000); // Sleep 10 secs ctx.resume("Hello async world!"); } }); ctx.suspend(); // Suspend connection and return } … } 39 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
40.
Example: @Suspend Annotation
@Path("/async/longRunning") public class MyResource { @Context private ExecutionContext ctx; @GET @Produces("text/plain") @Suspend public void longRunning() { Executors.newSingleThreadExecutor().submit( new Runnable() { public void run() { Thread.sleep(10000); // Sleep 10 secs ctx.resume("Hello async world!"); } }); // ctx.suspend(); Suspend connection and return } … } 40 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
41.
Example: Client API
Async Support // Build target URI Target target = client.target("http://.../atm/balance")… // Start async call and register callback Future<?> handle = target.request().async().get( new InvocationCallback<String>() { public void complete(String balance) { … } public void failed(InvocationException e) { … } }); // After waiting for a while … If (!handle.isDone()) handle.cancel(true); 41 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
42.
New in JAX-RS
2.0 ✔ ✔ Filters/Handlers Client API ✔ Hypermedia ✔ ✔ Async JSR 330 ✔ Validation Improved Conneg 42 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
43.
Motivation
• REST principles • Identifiers and Links • HATEOAS (Hypermedia As The Engine Of App State) • Link types: • Structural Links • Transitional Links 43 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
44.
Example: Structural vs.
Transitional Links Link: <http://.../orders/1/ship>; rel=ship, <http://.../orders/1/cancel>; rel=cancel Transitional ... <order id="1"> <customer>http://.../customers/11</customer> <address>http://.../customers/11/address/1</customer> <items> <item> Structural <product>http://.../products/111</products> <quantity>2</quantity> </item> ... </order> 44 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
45.
Current Proposal
Transitional Links Only • Link and LinkBuilder classes • RFC 5988: Web Linking • Support for Link in ResponseBuilder • Create Target from Link in Client API 45 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
46.
Example: Using Transitional
Links // Server API Response res = Response.ok(order) .link("http://.../orders/1/ship", "ship") .build(); // Client API Response order = client.target(…) .request("application/xml").get(); if (order.getLink(“ship”) != null) { Response shippedOrder = client .target(order.getLink("ship")) .request("application/xml").post(null); … } 46 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
47.
New in JAX-RS
2.0 ✔ ✔ Filters/Handlers Client API ✔ Hypermedia ✔ ✔ Async JSR 330 ✔ Validation ✔ Improved Conneg 47 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
48.
Improved Conneg
GET http://.../widgets2 Accept: text/*; q=1 … Path("widgets2") public class WidgetsResource2 { @GET @Produces("text/plain", "text/html") public Widgets getWidget() {...} } 48 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
49.
Improved Conneg (contd.)
GET http://.../widgets2 Accept: text/*; q=1 … Path("widgets2") public class WidgetsResource2 { @GET @Produces("text/plain;qs=0.5", "text/html;qs=0.75") public Widgets getWidget() {...} } 49 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
50.
Other Topics Under
Consideration • Better integration with JSR 330 • Support @Inject and qualifiers • High-level client API? 50 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
51.
More Information
• JSR: http://jcp.org/en/jsr/detail?id=339 • Java.net: http://java.net/projects/jax-rs-spec • User Alias: users@jax-rs-spec.java.net • All EG discussions forwarded to this list 51 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
52.
Q&A 52
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Jetzt herunterladen