[CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... –...

52

Transcript of [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... –...

Page 1: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates
Page 2: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates
Page 3: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

[CON7983]JAX-RS2.1forJavaEE8

EdBurnsPavelBucekOracleSeptember,2016

Page 4: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

SafeHarborStatementTheprecedingisintendedtooutlineourgeneralproductdirecUon.ItisintendedforinformaUonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncUonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andUmingofanyfeaturesorfuncUonalitydescribedforOracle’sproductsremainsatthesolediscreUonofOracle.

4

Page 5: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

•  EdBurns

– ServletandJSFco-speclead– FrequentinternaUonalconferencespeaker– AuthoroffourEnterpriseJavarelatedbooksfromMcGraw-Hill

• PavelBucek

– JavaAPIforWebSocketspeclead– LongUmeJerseydeveloperandimplementaUonlead– RESTexpert– [email protected]

5

SpeakerBios

Page 6: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ProgramAgenda

JAX-RSinJavaEE8

ReacUveAPI,NIOImprovements

Serversentevents

JavaEEintegraUon,Circuitbreakers,HTTP/2

Roadmap,Q&A

1

2

3

4

5

ConfidenUal–OracleInternal/Restricted/HighlyRestricted 6 E

Page 7: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JAX-RSinJavaEE8

•  ExisUngproposalofscoperemainsunchanged– WewillfoldinandmakeadjustmentstobeheralignJAX-RSwithJavaEE8focusonmicroservices,containers,andotherkeyaspectsoftheJavaEE8update.– JerseywillconUnuetobethereferenceimplementaUon– GlassFishwillconUnuetobethereleasevehicle

7 E

Page 8: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

WhyJAX-RSisimportant

•  IfyouaredoingRESTinJava,youarelikelydoingJAX-RS– MostpopularalternaUveisSpringRestController

•  SeveralpopularframeworksdependonorleverageJersey– Dropwizard– SpringBoot

• MulUpleimplementaUons– Jersey(ReferenceImplementaUon)– RESTEasy– ApacheCXF

8 E

– ApacheCamel– EhcacheServer

Page 9: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

BriefAside

•  JavaonARM64ServersandScalingwith‘ManyCore’Processors[CON8256]Tuesday,Sep20,4:00p.m.-5:00p.m.|Hilton-GoldenGate6/7/8

9

Cavium

E

Page 10: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JAX-RShistory

•  JAX-RS1.1– JSR311,JavaEE6,2009– JavaAPIforRESTservices,POJObased,HTTPcentric,Containerindependent,…

•  JAX-RS2.0– JSR339,JavaEE7,2014– RESTClientAPI,Filtersandinterceptors,Asyncprocessing,BeanvalidaUon,JSON-P,…

•  JAX-RS2.1– JSR-370,JavaEE8,2017– Non-blockingIO,ReacUveclients,ServerSentEvents

10 E

Page 11: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

InnovaUonandStandardizaUon

11

JerseyandothersourcesinfluenceJAX-RSSpecifica@on

Jersey1.x

JAX-RS1.xClientAPI

Filters

…JAX-RS2.0

SSE

ReacUve

Jersey2.xJAX-RS2.1

Jersey3.x

?

E

Page 12: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

InnovaUonandStandardizaUonJerseyandothersourcesinfluenceJAX-RSSpecifica@on

12 E

Jersey JAX-RS 1.0• client• filters• ...

Page 13: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

InnovaUonandStandardizaUonJerseyandothersourcesinfluenceJAX-RSSpecifica@on

13 E

Jersey JAX-RS 2.0• reactive• SSE• ...

• client• filters

Page 14: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

InnovaUonandStandardizaUonJerseyandothersourcesinfluenceJAX-RSSpecifica@on

14 E

Jersey JAX-RS 2.1• client• filters• reactive• SSE

• ...

Page 15: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ReacUveClientAPI-Future<T>

15

JAX-RS2.0

E

Page 16: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ReacUveAPI

16

Page 17: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ReacUveClientAPI-InvocaUonCallback<T>

17

JAX-RS2.0

E

Page 18: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ReacUveClientAPI-CompletableFuture<T>

•  Java8improvedFuture<T>• CompletableFuture<T>isanimplementaUonofCompleUonStage<T>•  Lotsandlotsoffeatures(~38methods)– ComposiUon,callbacks,…– thenApply,thenAccept,thenRun,thenCombine,...

•  IdealforsequenUalreacUveinvocaUon• Getresponsesfroms1ands2,combineresults,calls3andprintoutresponse

18

JAX-RS2.1

E

Page 19: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ReacUveClientAPI-CompletableFuture<T>

19

JAX-RS2.1–CompletableFuturevsInvoca@onCallback

P

Page 20: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ReacUveClientAPI-CompletableFuture<T>

20

JAX-RS2.1

P

Page 21: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ReacUveClientAPI

• ClientRXAPIisextensible• RxInvoker<T>•  InvocaUon.Builder– <TextendsRxInvoker>Trx(Class<T>clazz)•  Guava–ListenableFuture•  RxJava–Observable•  …

– SpecificaUonitselfmostlikelywon’trequiresupportforanythingelsethanCompletableFuture<T>,butimplementaUonsCANprovidesupportforwhatevertheylike.

21

JAX-RS2.1

E

Page 22: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ReacUveClientAPIinJersey

• NiceexampleofimplementaUonfirstapproach– hhps://github.com/jersey/jersey/tree/master/ext/rx

•  (similartoSSE,whichwasalsoimplementedinJersey..LongUmeago.Inthisgalaxy.)

22 E

Page 23: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

TradiUonalSynchronousRequest/ResponseCode@Path("store") public class StoreResource { @QueryParam("userId") String userId; @GET @Path("wishlistedPromotions") public List<PromotedProduct> getWishlistedPromotions() { List<PromotedProduct> result = new LinkedList<>(); for (String productId : userManagementService.getWishlistedProducts(userId)) { List<Promotion> promotions = promotionService.getPromotionsFor(productId); Product product = productCatalog.getDetail(productId); result.add(new PromotedProduct(promotions, product)); } return result; } … }

ConfidenUal–OracleInternal/Restricted/HighlyRestricted 23 E

Page 24: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

@Path("store")publicclassStoreResource{@QueryParam("userId")StringuserId;privatevola@lebooleandone=false;privatefinalTransferQueue<PromotedProduct>events=newLinkedTransferQueue<>();@GET@Path("wishlistedPromo@ons")@Produces("text/event-stream")publicvoidgetWishlistedPromoUons(@SuspendedfinalAsyncResponseasyncResponse){asyncResponse.resume(newStreamingOutput(){@Overridepublicvoidwrite(OutputStreamout){while(!done){PromotedProductproduct=events.take();out.write(product.toSseJson());}}});

CompletableFuture<ServletInputStream>productIdStreamFuture=userManagementService.getAsyncWishlistedProducts(userId);productIdStreamFuture.whenComplete((servletInput,excepUon)->{if(excepUon!=null){asyncResponse.resume(cause);}servletInput.setReadListener(newReadListener{@OverridepublicvoidonDataAvailable(){try{do{OpUonal<String>productIdOpUonal=readNextProductId(input);productIdOpUonal.ifPresent(this::processProductId);}while(input.isReady());}catch(IOExcepUone){handleExcepUon(e);}}@OverridepublicvoidonAllDataRead(){done=true;}@OverridepublicvoidonError(Throwablet){handleExcepUon(t);}});});}

ConfidenUal–OracleInternal/Restricted/HighlyRestricted 24

privateprocessProductId(StringproductId){CompletableFuture<List<PromoUon>>promoUonsFuture=promoUonService.getAsyncPromoUonsFor(productId);CompletableFuture<Product>productFuture=productCatalog.getDetail(productId);promoUonsFuture.thenCombine(productFuture,(promoUons,product)->{events.transfer(newPromotedProduct(promoUons,product))}).excepUonally(this::handleExcepUon);}//…moremethods…}

ProgrammaUc(Semi)ReacUveCode

E

Page 25: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

DeclaraUveReacUveCode@Path("store") public class StoreResource { @QueryParam("userId") String userId; @GET("wishlistedPromotions") @SseSource(emitOn="productId") public PromotedProduct getWishlistedPromotion(

@Result List<Promotion> promotions, @Result Product product) { return new PromotedProduct(promotions, product); } @Result public List<Promotion> getPromotions(@Result("productId") String productId) { return promotionService.getPromotionsFor(productId); } @Result public Product getProductDetail(@Result("productId") String productId) { return productCatalog.getDetail(productId); } @Result("productId") public EventSource<String> getProductIdEvents() { return userManagementService.getWishlistedProducts(userId); } … }

ConfidenUal–OracleInternal/Restricted/HighlyRestricted 25

ProductID

PromoUons ProductDetail

PromotedProduct

onEvent

???

getProductDetailgetPromoUons

getWishlistedPromoUon

EmitasSSEEvent

E

Page 26: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Non-blockingI/O

• Async/reacUveisnotnon-blocking!– Asyncprocessingusuallyjustfiresanotherthread,whichisBLOCKEDunUlitdoeswhatitneeds

•  JAX-RSsupportsAsyncprocessingsince2.0(SinceServlet3.0)– Serverside•  suspendcurrentthread,dotheworkindifferentone,resumetheresponse.

– Clientside•  future/callback

26 P

Page 27: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Non-blockingI/O

•  JAX-RSdefinesseveralAPIswherestandardJavaInput/OutputStreamsareused– becauseofthat,anyJAX-RSimplementaUonisblockingbydesign

• MessageBodyReaderandMessageBodyWriterwillneedtobechanged– It’snotclearhowyet– SeveralopUons,fromnewMBR/MBWinterfaces,tosomethingsimilartoServletinput/outputstream

27 P

Page 28: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Non-blockingI/O

•  JAX-RSAPINIOProposal– NioInvoker– NioWriterHandler– NioOutputStreamextendsOutputStream

• Workinprogress…

28

JAX-RS2.1–milestone1

P

Page 29: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ServerSentEvents

•  SpecialMediaType–“text/event-stream”– W3standard,partofHTML5

•  ServertoClientcommunicaUonchannel•  Textprotocol,separatemessageswithsomemetadata– event,data,id,retry

29

JAX-RS2.1

P

Page 30: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/1.1200OKContent-Type:text/event-streamDate:Tue,06Sep201615:39:30GMTTransfer-Encoding:chunkedevent:custom-messagedata:JAX-RS2.1event:custom-messagedata:testevent:custom-messagedata:JavaOne2016

ServerSentEvents

30

JAX-RS2.1

Client Server

GET/sseAccept:text/event-stream

P

Page 31: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/1.1200OKContent-Type:text/event-streamDate:Tue,06Sep201615:39:30GMTTransfer-Encoding:chunkedevent:custom-messagedata:JAX-RS2.1event:custom-messagedata:testevent:custom-messagedata:JavaOne2016

ServerSentEvents

31

JAX-RS2.1

Client Server

GET/sseAccept:text/event-stream

Page 32: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ServerSentEvents

32

UseExecutorServiceinstead

P

Page 33: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ServerSentEvents

33 P

Page 34: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ServerSentEvents

34 P

Page 35: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ServerSentEvents

•  EvenbeherwithHTTP/2•  SharedTCPconnecUon– onestreamcanbeusedasaSSEchannel(servertoclient)– otheroneasaclienttoserver

•  ThissetupisstarUngtobecomparabletoWebSocket– ButsUllnotthesame

• WebProtocolsforJavaDevelopers[CON4156]–Embarcadero@Parc55,Thu11:30am

35

JAX-RS2.1

E

Page 36: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

IntegraUonswithotherSpecificaUons

36 P

Page 37: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

IntegraUonwithJSON-B

•  JSR367–Java™APIforJSONBinding– NewspecificaUontobeintroducedinJavaEE8

•  SeamlessintegraUon,similartowhatJAX-RSprovidesforJAX-B• Officialsupportfor“applicaUon/json”• ConfigurablebindingproperUes– Forma�ng,encoding,namingandorderingstrategies,adapters,…

37 P

Page 38: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ImprovedCDIintegraUon

•  Improvedbehaviorofresources,whicharealsoCDIbeans• ConstructorselecUon• Genericproducers– @PathParam(“param”)Stringparam

• BootstrappingandrunningoutsideofJavaEE– StandaloneJavaSEApplicaUon

•  ImplementaUonperspecUve– ItwouldbereallynicetohavetheopUontoselectrunUmeDIframework•  HK2vsCDIvsGuicevs…

38

JAX-RS2.1

P

Page 39: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaEESecurityAPI

•  JAX-RS2.0alreadycontainssupportforSecurity– InjectSecurityContext•  AuthenUcaUonscheme•  Userprincipal

•  Jerseysupports@DenyAll,@PermitAll,@RolesAllowed•  SecurityspecificaUonisgoingtoaddOAuthandOpenIDConnectsupport

39 P

Page 40: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

IntegraUonwithJavaEEConfiguraUonspecificaUon

•  StandardConfiguraUonAPI•  ExternalizedconfiguraUon•  Supportforvariouspropertyformats,Layering,Overrides•  SupportformulUpleconfiguraUonsources• MutableandimmutableconfiguraUonproperUes

• ConfiguraUonforJavaEE8andtheCloud[CON7979]–Wednesday,11:30

40 P

Page 41: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

IntegraUonwithJavaEEConfiguraUonspecificaUon

41 P

Page 42: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Circuitbreakers

42

Closed Open

HalfOpen

failcountreached

ResetUmeout

failsuccess

successorfail

E

Page 43: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Circuitbreakers

• GenericwaytodealwithfailuresinremoteserviceinvocaUonprocess• ProtecUngsystemresourcesbymonitoringcallstoremoteservice– Ifsomecertainnumberoffailuresisreached,nofurthercallsaremadeandtheerrorisreturnedimmediately– Whenacircuitis“open”,errorsuppliermightprovidereplacementanswer•  Couldbecompletelydifferent(empty)answer,orcachedvaluefromprevioussuccessfulinvocaUon

•  SeveralHTTPproperUeswhichcouldtriggerfailure– TCPlevel:connecterror,connectUmeout,connecUonUmeout,..– HTTPlevel:statuscode,…

43 E

Page 44: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Circuitbreakers–JAX-RS

• ProgrammaUcapproach–changeintheJAX-RSclientAPI• DeclaraUveapproach–registering@ProviderclassestotheClient•  Somethingelse…

• ConfigurableSLA(success/failevaluaUonandthreshold)perexternalservice•  Expertgroupwilldecidewhetherorhowisthisgoingtobeincluded

44 E

Page 45: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2andJAX-RS

• DoesJAX-RSneedstobeupdatedtoworkontopofHTTP/2?– HTTP/2issUllrequest/response– Newfeaturesaremostlyimplementedinlowerlayers

• WillbeJAX-RSAPIfasteronHTTP/2?– HTTP/2isbinaryprotocol–ifyouaresending/receivingbinarydata,you’llgetinstant1.333boostofthroughput.(Base64)– Resource-wise,HTTP/2ismoreeffecUvethanitspredecessor– PersistentconnecUons,streams*,compressedheaders,…– BeawareofnumberofobjectsneededtoprocesssingleHTTPrequest

45 E

Page 46: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2andJAX-RS

•  Servlet4.0:StatusUpdateandHTTP/2ComestoJavaEE8[CON7980]Tuesday,Sep20,4:00p.m.-5:00p.m.|Parc55-CyrilMagninII/III

46 E

Page 47: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2andJAX-RS

• HowtouseHTTP/2featuresfromJAX-RS?– JAX-RSServletintegraUon– InjecUngHhpServletRequest,HhpServletResponse,ServletContext,ServletConfig

47

Ume

HTTP/1.x HTTP/2 HTTP/2+Push

E

Page 48: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 48

EngageJavaEECommunity•  FeedbackthroughSurvey•  LaunchJavaEENextJSRs

2016JavaEE8•  Specs,RI,TCKcomplete•  IniUalmicroservicessupport•  DefineJavaEE9•  EarlyaccessimplementaUonofJavaEE9

JavaEE9•  Specs,RI,TCKcomplete• ModularJavaEErunUme•  Enhancedmicroservicessupport

JavaEERoadmap

2017

2018

P

Page 49: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NextSteps

•  Takethesurvey– hhp://glassfish.org/survey

•  Sendtechnicalcommentsto– [email protected](JAX-RS)– [email protected](JavaEE)

•  JointheJCP–cometoHackergardeninJavaHub– hhps://jcp.org/en/parUcipaUon/membership_drive

•  JoinortracktheJSRsastheyprogress– hhps://java.net/projects/javaee-spec/pages/SpecificaUons

•  Adopt-a-JSR– hhps://community.oracle.com/community/java/jcp/adopt-a-jsr

Giveusyourfeedback

49 P

Page 50: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

WheretoLearnMoreatJavaOne

50

SessionNumber SessionTitle Day/Time

CON1558 What'sNewintheJavaAPIforJSONBinding Monday5:30p.m.

BOF7984 JavaEEfortheCloud Monday7:00p.m.

CON4022 CDI2.0IsComing Tuesday11:00a.m.

CON7983 JAX-RS2.1forJavaEE8 Tuesday12:30p.m.

CON8292 PortableCloudApplicaUonswithJavaEE Tuesday2:30p.m.

CON7980 Servlet4.0:StatusUpdateandHTTP/2 Tuesday4:00p.m.

CON7978 SecurityforJavaEE8andtheCloud Tuesday5:30p.m.

CON7979 ConfiguraUonforJavaEE8andtheCloud Wednesday11:30a.m.

CON7977 JavaEENext–HTTP/2andREST Wednesday1:00p.m.

CON6077 TheIllusionofStatelessness Wednesday4:30p.m.

CON7981 JSF2.3 Thursday11:30a.m.

P

Page 51: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates
Page 52: [CON7983] JAX-RS 2.1 for Java EE 8 - RainFocus · PDF file– REST Client API ... – W3 standard, part of HTML 5 ... JAX-RS 2.1 E Copyright © 2016, Oracle and/or its affiliates