Oracle ADF Architecture TV - Design - Service Integration Architectures

40
1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

description

Slides from Oracle's ADF Architecture TV series covering the Design phase of ADF projects, considering web service integration into your ADF applications. Like to know more? Check out: - Subscribe to the YouTube channel - http://bit.ly/adftvsub - Design Playlist - http://www.youtube.com/playlist?list=PLJz3HAsCPVaSemIjFk4lfokNynzp5Euet - Read the episode index on the ADF Architecture Square - http://bit.ly/adfarchsquare

Transcript of Oracle ADF Architecture TV - Design - Service Integration Architectures

Page 1: Oracle ADF Architecture TV - Design - Service Integration Architectures

1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Page 2: Oracle ADF Architecture TV - Design - Service Integration Architectures

2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Real World ADF Design & Architecture Principles Service Integration Architecture

ORACLE PRODUCT

LOGO

15th Feb 2013 v1.0

Page 3: Oracle ADF Architecture TV - Design - Service Integration Architectures

3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Learning Objectives

•  At the end of this module you should be able to:

– Understand the difference between SOAP services and REST services

– Understand which releases of Oracle JDeveloper support SOAP and REST services with ADF and how to use them

– Define a service integration strategy for Oracle ADF application development projects

Image: imagerymajestic/ FreeDigitalPhotos.net

Page 4: Oracle ADF Architecture TV - Design - Service Integration Architectures

4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Program Agenda

•  Services Overview •  ADF Service Integration Strategies

–  JAX-WS Integration in Oracle ADF • Service Integration through ADF BC • JAX-WS Proxy Client / POJO DC • Recommended Practices

–  JAX-RS Integration in Oracle ADF • Service Integration through URL DC • Service integration through POJO DC / ADF BC

Page 5: Oracle ADF Architecture TV - Design - Service Integration Architectures

5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Exercise

Image: imagerymajestic/ FreeDigitalPhotos.net

As an ADF developer, why bother?

Page 6: Oracle ADF Architecture TV - Design - Service Integration Architectures

6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Why Bother

•  Enforce consistent business logic execution for multi channel access –  Web, SOA, Mobile

•  Shield data sources –  Protect them from direct developer access

•  Application partitioning –  Ease of maintenance –  Sharing of business logic

Exposing Web Service APIs for Business Models

Page 7: Oracle ADF Architecture TV - Design - Service Integration Architectures

7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Web services are common in web application development

and no longer SOA only.

Image: Ambro / FreeDigitalPhotos.net

Page 8: Oracle ADF Architecture TV - Design - Service Integration Architectures

8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

SOAP Services

•  JAX-WS –  Java API for XML-Web Services –  Since Java 5, replacing JAX-RPC –  Support for WS annotations –  Support for asynchronous WS calls

JAX-WS

Page 9: Oracle ADF Architecture TV - Design - Service Integration Architectures

9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

REST

•  Representational State Transfer –  Exchanges the representation of a current data object state over the web

•  Design principle for stateless data transfers on the web based on unique resource addressing using HTTP –  Avoids the overhead of SOAP services –  Addresses resources as nouns

•  Supports different data representations –  Negotiated between client and server –  Representation "encodes" the state of a resource at a specific point in time –  A resource can have many different representations

•  Image, Text , XML, JSON, etc.

Page 10: Oracle ADF Architecture TV - Design - Service Integration Architectures

10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

About JAX-RS

•  Java XML API for Restful Services •  Java EE standard •  Jersey is reference implementation

–  Bundled with Oracle JDeveloper 12c (+) –  JAX-RS provides annotations for

• Resource request path definitions • HTTP method mapping to service methods • Request URL parameter mapping to input parameters •  Accepted data format • Response data format •  etc.

Page 11: Oracle ADF Architecture TV - Design - Service Integration Architectures

11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

SOAP Services vs. Rest Services

•  Self describing and discoverable •  Machine understandable

–  Supports intermediary machine access as required in SOA

•  Require data transformation to be performed by the client –  XML to JAVA using JAXB

SOAP

Page 12: Oracle ADF Architecture TV - Design - Service Integration Architectures

12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

SOAP Services vs. Rest Services

•  Support for different response formats •  Clients negotiate representation format by sending HTTP accept

header with list of media types they are happy to process –  REST services decides which format to support

•  Support for human and machine interaction •  Used by many popular Ajax frameworks

–  SOAP is hard to use with JavaScript

•  Preferred use with mobile clients –  Less overhead –  Security easier to implement

REST

Page 13: Oracle ADF Architecture TV - Design - Service Integration Architectures

13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Program Agenda

•  Services Overview •  ADF Service Integration Strategies

–  JAX-WS Integration in Oracle ADF • Service Integration through ADF BC • JAX-WS Proxy Client / POJO DC • Recommended Practices

–  JAX-RS Integration in Oracle ADF • Service Integration through URL DC • Service integration through POJO DC / ADF BC

Page 14: Oracle ADF Architecture TV - Design - Service Integration Architectures

14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

SOAP Service Integration in Oracle ADF

Web Service Data Control

accesses

JAX-WS Proxy Client

Web Service Implementation

WSDL

accesses JavaBean Wrapper

ADF Business Components

JavaBean Data Control

instantiate

Page 15: Oracle ADF Architecture TV - Design - Service Integration Architectures

15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

SOAP Service Integration in Oracle ADF Caching Strategies for Best Performance

Web Service Data Control

accesses

Cache

JAX-WS Proxy Client

Web Service Implementation

WSDL

accesses JavaBean Wrapper

ADF Business Components

JavaBean Data Control

instantiate

Page 16: Oracle ADF Architecture TV - Design - Service Integration Architectures

16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Program Agenda

•  Services Overview •  ADF Service Integration Strategies

–  JAX-WS Integration in Oracle ADF • Service Integration through ADF BC • JAX-WS Proxy Client / POJO DC • Recommended Practices

–  JAX-RS Integration in Oracle ADF • Service Integration through URL DC • Service integration through POJO DC / ADF BC

Page 17: Oracle ADF Architecture TV - Design - Service Integration Architectures

17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Service Integration Through ADF BC

•  Who –  Developers using ADF BC as their business service

•  Why –  Seamless integration –  Consistent business service API –  Leverage ADF BC advanced functionality

•  How –  Programmatic View Object –  Programmatic Entity (for CRUD operations)

Who, Why, How

Page 18: Oracle ADF Architecture TV - Design - Service Integration Architectures

18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

ADF Business Components Programmatic View Object and Entity

JavaBean Wrapper

JAX-WS Proxy Client

Entity Object CustomWsEntity

View Object CustomWsViewObject

Application Module

referenced by

exposed in

Custom WS View Object

Database View Object 2

Database View Object 1

ViewLink

Page 19: Oracle ADF Architecture TV - Design - Service Integration Architectures

19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Custom View Object and Entity

•  Entity –  doDML –  doSelect

•  View Object –  create –  executeQueryForCollection –  createRowFromResultSet –  getQueryHitCount –  hasNextForCollection

Framework Methods to Override

Entity Object CustomWsEntity

View Object CustomWsViewObject

Application Module

referenced by

exposed in

Page 20: Oracle ADF Architecture TV - Design - Service Integration Architectures

20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

WS Based Programmatic View Object

•  Implementing parent-child relationship between programmatic views –  Create ViewLink between parent and child view –  Map parent PK VO attribute to child FK VO attribute –  ViewLink defines BIND_<ATTRIBUTE NAME> bind variable –  Bind variable is passed as Object[] params argument to executeQueryForCollection method • Override method in custom VO IMPL class

–  "params" is an Array of Array[2] •  [0] name •  [1] value

–  Read bind variable and use in programmatic view object data query

Implementing Parent – Child Relationships

Page 21: Oracle ADF Architecture TV - Design - Service Integration Architectures

21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Program Agenda

•  Services Overview •  ADF Service Integration Strategies

–  JAX-WS Integration in Oracle ADF • Service Integration through ADF BC • JAX-WS Proxy Client / POJO DC • Recommended Practices

–  JAX-RS Integration in Oracle ADF • Service Integration through URL DC • Service integration through POJO DC / ADF BC

Page 22: Oracle ADF Architecture TV - Design - Service Integration Architectures

22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

JAX-WS Proxy Client / POJO DC

•  Who –  Developers who don't use ADF Business Components

•  Why (compared to WS Data Control) –  Flexible and powerful –  Can be used to implement caching strategies –  Pre- and post-processing of data –  Pagination support

•  How –  Create POJO Data Control from JavaBean wrapper –  Optional: Implement ADF lifecycle methods

Who, Why, How

Page 23: Oracle ADF Architecture TV - Design - Service Integration Architectures

23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

JAX-WS Proxy Client / POJO DC

JavaBean Wrapper

JAX-WS Proxy Client

POJO Data Control

Page 24: Oracle ADF Architecture TV - Design - Service Integration Architectures

24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Program Agenda

•  Web Services 101 •  ADF Service Integration Strategies

–  JAX-WS Integration in Oracle ADF • Service Integration through ADF BC • JAX-WS Proxy Client / POJO DC • Recommended Practices

–  JAX-RS Integration in Oracle ADF • Service Integration through URL DC • Service integration through POJO DC / ADF BC

Page 25: Oracle ADF Architecture TV - Design - Service Integration Architectures

25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Service Integration

•  Use Web Service Data Control only for simple service like weather reports or stock quotes

•  Use JAX-WS proxy client for all more complex services and access them from – Programmatic view object and entity if your business service is

ADF Business Components as this allows for better integration with database queried views • Use View Objects only for read only access • Use View Objects and Entities for CRUD Web Service integration

JAX-WS service

Page 26: Oracle ADF Architecture TV - Design - Service Integration Architectures

26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Service Integration

•  Use JAX-WS proxy client for all more complex services and access them from – POJO Data Control

•  If your business service is not ADF BC. •  If your business service doesn't require integration into an ADF

business component model •  If the WS access should be used in a bounded task flow deployed in

an ADF library for maximum reuse

JAX-WS service

Page 27: Oracle ADF Architecture TV - Design - Service Integration Architectures

27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Service Integration

•  Let the business case rule! –  ADF BC is not a simplification framework for

WS access •  Integrate WS when and where it makes sense • WS and ADF BC have different query and transaction behavior

–  If all your data sources are JAX-WS services, evaluate a POJO data control approach

–  Implement strategy to ensure data queried from WS sources are locally cached for better parent-child performance

JAX-WS service

Page 28: Oracle ADF Architecture TV - Design - Service Integration Architectures

28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Program Agenda

•  Services Overview •  ADF Service Integration Strategies

–  JAX-WS Integration in Oracle ADF • Service Integration through ADF BC • JAX-WS Proxy Client / POJO DC • Recommended Practices

–  JAX-RS Integration in Oracle ADF • Service Integration through URL DC • Service integration through POJO DC / ADF BC

Page 29: Oracle ADF Architecture TV - Design - Service Integration Architectures

29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

REST Service Integration in Oracle ADF

REST (Jersey) Client

URL Data Control

ADF Business Components

JavaBean Data Control

REST Service Implementation

accesses

accesses

Page 30: Oracle ADF Architecture TV - Design - Service Integration Architectures

30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Program Agenda

•  Web Services 101 •  ADF Service Integration Strategies

–  JAX-WS Integration in Oracle ADF • Service Integration through ADF BC • JAX-WS Proxy Client / POJO DC • Recommended Practices

–  JAX-RS Integration in Oracle ADF • Service Integration through URL DC • Service integration through POJO DC / ADF BC

Page 31: Oracle ADF Architecture TV - Design - Service Integration Architectures

31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

REST URL / REST DC

•  Who –  Developers looking for simple integration of RESTful resources in Oracle ADF

applications

•  Why –  REST is a popular service format many public sites use as a programmer API –  REST is easy to use and comes with no overhead compared to SOAP

•  How –  Configure URL DC with resources URI and http methods to invoke remote

resources

Who, Why, How

Page 32: Oracle ADF Architecture TV - Design - Service Integration Architectures

32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

REST URL / REST DC

URL Data Control access

REST service

ADF Connection Architecture

Noun @Path("<name>")

@GET handleQueryRequest() @POST handleCreateRequest() @ ... ...

read URI

Page 33: Oracle ADF Architecture TV - Design - Service Integration Architectures

33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Program Agenda

•  Services Overview •  ADF Service Integration Strategies

–  JAX-WS Integration in Oracle ADF • Service Integration through ADF BC • JAX-WS Proxy Client / POJO DC • Recommended Practices

–  JAX-RS Integration in Oracle ADF • Service Integration through URL DC • Service integration through POJO DC / ADF BC

Page 34: Oracle ADF Architecture TV - Design - Service Integration Architectures

34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

REST Jersey Client / POJO DC, ADF BC

•  Who –  Developers who want to interact with REST response

•  Why –  Pre- and post-processing of data

•  How –  Create Jersey client from Web Application Description Language (WADL) file –  Access Jersey client from POJO avoid impact when regenerating client class

Who, Why, How

Page 35: Oracle ADF Architecture TV - Design - Service Integration Architectures

35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

REST Jersey Client / POJO DC, ADF BC Jersey Client

REST Proxy Client

REST service

accesses JavaBean Wrapper

ADF Business Components

JavaBean Data Control

extend or instantiate

Noun @Path("<name>")

@GET handleQueryRequest() @POST handleCreateRequest() @ ... ...

Page 36: Oracle ADF Architecture TV - Design - Service Integration Architectures

36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Exercise

Image: imagerymajestic/ FreeDigitalPhotos.net

I need to build ADF based user interfaces for SOA Services (ESB/OSB).

Shall I use ADF Business Components to integrate the services or POJOs and the

JavaBean Data Control?

Page 37: Oracle ADF Architecture TV - Design - Service Integration Architectures

37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Exercise

Image: imagerymajestic/ FreeDigitalPhotos.net

What would be a good discriminator for when to use ADF BC and when to use

POJO?

Page 38: Oracle ADF Architecture TV - Design - Service Integration Architectures

38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Conclusion •  There are several options available in ADF to

integrate Web Services •  When choosing between ADF Business Components

and POJO DC (with JAX-WS and JAR-RS clients), consider –  SOA Services are not developed for a specific client –  Data loading from services should be optimized. In a

parent-child query you should ensure data to be loaded when a specific parent record is selected

–  Application user interface developers require a consistent programming API as a contract between the client logic they build and the business service •  Think "productivity"

Page 39: Oracle ADF Architecture TV - Design - Service Integration Architectures

39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Further Reading

•  Oracle Magazine "Service Please" –  http://www.oracle.com/technetwork/issue-archive/2012/12-jul/o42adf-1653060.html

•  http://www.oracle.com/technetwork/developer-tools/jdev/documentation/index.html –  Oracle JDeveloper and ADF Documentation Library –  Fusion Developer Guide

•  Part V Completing your Application –  Using Programmatic View Objects for Alternative Data Sources

•  ADF Insider Recording –  http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/adf-

service-integ/adf-service-integ.html

Page 40: Oracle ADF Architecture TV - Design - Service Integration Architectures

40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.