XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 –...

29
1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer Science Department Courant Institute of Mathematical Sciences Soap and Web Services Part I

Transcript of XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 –...

Page 1: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

1

XML for Java Developers G22.3033-002

Session 4 – Sub-Topic 3Towards P2P Computing

Dr. Jean-Claude Franchitti

New York UniversityComputer Science Department

Courant Institute of Mathematical Sciences

Soap and Web Services

Part I

Page 2: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

2

Evolution of integration methods

Custom static integration

App. Integration Standards

Web Protocol Standards(HTTP, HTML, XML, RosettaNet,

OBI, cXML, …)

Web App. Standards

(Web Services)

-1990

Early 1990s

Late 1990s

2001

Web Services• Machine-to-machine communication

– Description of service semantics & metadata • WSDL: Web Service Definition Language

– Discovery of appropriate services • UDDI: Universal Description, Discovery & Integration service

• Allow services to be defined, deployed, manipulated & evolved in an automated fashion

• Basis for expressing higher-level business logic – Using flow languages

• Potential :– EDI replacement– ERP accelerator– Reduce middleware proliferation– Improve desktop integration

Page 3: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

3

“Drivers” for Web Services• Microsoft

– .NET, Hailstorm • Sun

– Sun ONE • HP

– e-speak • IBM

– Dynamic e-business • UN/CEFACT & OASIS

– ebXML• Plus: Oracle, Borland,

Submitted to IETF - Nov. 1999

W3C WG- September 2000

RPC Interoperability problems• Naming of communication endpoints

– CORBA: IORs– DCOM: OBJREFs

• Support for multiple interfaces per object– CORBA: implicitly, there is 1 interface in an IOR– DCOM: multiple interfaces + Iunknown

• Format of parameter values– CORBA: CDR– DCOM: Network Data Representation

Page 4: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

4

IIOP vs. DCOM (I)

IIOP vs. DCOM (II)

Page 5: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

5

URIs, URLs, URNs• Universal Resource Identifier:

– A formatted string that uniquely identifies a resource• Uniform Resource Locator:

– encode the underlying protocol needed to locate the resource, as well as its location

– “http://" <host> [":" <port>] [<path> ["?" <qry>]• Uniform Resource Name:

– location-independent & in no way imply any protocol or mechanism for locating the resource being identified

– "urn:" <NID> ":" <NSS>• <NID>: namespace• <NSS>: namespace-specific string• urn:uuid:00000000-0000-0000-C000-000000000046

Simple Object Access Protocol

• A light-weight XML messaging convention– exchange of structured & typed information

• no application or transport semantics • “XML datagrams” -> extensibility

• Common use: RPC-over-HTTP (using XML)– getStockQuote(), issueQuery(), sendOrder()

• Other uses are possible:– One-way messaging– Multicast

• The KISS* principle– absolute minimum of functionality * Keep It Simple, Stupid!

Page 6: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

6

SOAP “reference”

UDDI (I)• Universal Description, Discovery & Integration

– An industry initiative for B2B interoperability• First spec’s outlined by Ariba, Microsoft & IBM • Ariba, Microsoft, IBM, HP, SAP: “operator nodes”

– Business Registry of Web services• Allow companies to register their business & services• Accessible via SOAP

– … and via browser– < businessEntity, businessService, bindingTemplate, tModel >

• Web service:– a self-describing, self-contained, modular unit of application logic

• provides some business functionality to other app’s – Web services can be mixed & matched with other web services to

execute a larger workflow or business Tx.• WSDL: Web Service Definition Language

Page 7: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

7

UDDI (II)• XML Schema for UDDI:

– <businessEntity>: Business information– <businessService>: Service information– <bindingTemplate>: Binding information– <tModel>: Information on specifications

• “technical fingerprint”: list of references

• Inquiry API• Publisher API• Coping with Failures ?

– inability to predict, detect, or recover from failures within the systems of the remote partner

– Use cached <bindingTemplate>, “retry-on-failure”• Rely on partner to update registry entry

UDDI (III)Discrete business roles

Applications will increasingly be based on compositions of services discovered & marshaled dynamically at runtime.

Lifecycle:•Build•Deploy•Run•Manage

The business of e-business services (IBM)

PublishWSDL

FindUDDI

BindSOAP

Page 8: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

8

UDDI Sample Interaction (I)<?xml version='1.0' encoding='UTF-8'?><Envelope xmlns='http://schemas.xmlsoap.org/soap/envelope/'><Body><find_business generic="1.0" xmlns="urn:uddi-org:api">

<name>Microsoft</name></find_business></Body></Envelope>

UDDI Sample Interaction (II)<businessList generic="1.0" operator="Microsoft Corporation"

truncated="false" xmlns="urn:uddi-org:api"><businessInfos>

<businessInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"><name>Microsoft Corporation</name>

<description xml:lang="en">Empowering people through great software -any time, any place and on any device … </description><serviceInfos>

<serviceInfo businessKey="0076B468-EB27-42E5-AC09-955CFF462A3"serviceKey="8BF2F51F-8ED4-43FE-B665-38D8205D1333">

<name>Electronic Business Integration Services</name></serviceInfo>……………………………………………………………………………………………………….<serviceInfo businessKey="0076B468-EB27-42E5-AC09-955CFF462A3"

serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1"><name>UDDI Web Services</name>

</serviceInfo>……………………………………………………………………………………………………….

</serviceInfos></businessInfo> </businessInfos> </businessList>

Page 9: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

9

UDDI Sample Interaction (III)<find_service generic='1.0' xmlns='urn:uddi-org:api'

businessKey='0076B468-EB27-42E5-AC09-9955CFF462A3'><name>UDDI Web Services</name>

</find_service>

<serviceList generic="1.0" operator="Microsoft Corporation"truncated="false" xmlns="urn:uddi-org:api">

<serviceInfos><serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"

serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1"><name>UDDI Web Services</name>

</serviceInfo></serviceInfos>

</serviceList>

UDDI Sample Interaction (IV)<get_serviceDetail generic='1.0' xmlns='urn:uddi-org:api'>

<serviceKey>D2BC296A-723B-4C45-9ED4-494F9E53F1D1</serviceKey></get_serviceDetail>

<serviceList generic="1.0" operator="Microsoft Corporation"truncated="false" xmlns="urn:uddi-org:api">

<serviceInfos><serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"

serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1"><name>UDDI Web Services</name>

</serviceInfo></serviceInfos>

</serviceList>

<find_business generic='1.0' xmlns='urn:uddi-org:api'><tModelBag><tModelKey>uuid:4CD7E4BC-648B-426D-9936-

443EAAC8AE23</tModelKey></tModelBag></find_business>

Page 10: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

10

UDDI Sample Interaction (V)<serviceDetail generic="1.0" operator="Microsoft Corporation"

truncated="false" xmlns="urn:uddi-org:api"><businessService businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"

serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1"><name>UDDI Web Services</name>

<description xml:lang="en">UDDI SOAP/XML message-based programmatic webservice interfaces.</description><bindingTemplates><bindingTemplate bindingKey="A9CAFBE4-11C6-4BFE-90F5-595970D3DE24"

serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1"><description xml:lang="en">Production UDDI server, Inquiry interface

</description><accessPoint URLType="http">http://uddi.microsoft.com/inquire</accessPoint><tModelInstanceDetails>

<tModelInstanceInfo tModelKey="uuid:4CD7E4BC-648B-426D-9936443EAAC8AE23">

<description xml:lang="en">UDDI SOAP Inquiry Interface</description></tModelInstanceInfo></tModelInstanceDetails>

</bindingTemplate>…………………………………………………………………………………………………………….

SOAP Mandatory Features• Transport Binding

– how to get the message to its destination • isolates message from transport, for portability across transports

• Message Envelope – what features & services are represented in a message

• as blocks

– who should deal with them • actor attribute + implied semantics

– whether they are optional or mandatory • mustUnderstand attribute + implied semantics

Page 11: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

11

SOAP Fault Codes100 Version Mismatch

- The call was using an unsupported SOAP version.200 Must Understand

- An XML element was received that contained an element tagged with mustUnderstand="true"that was not understood by the receiver.

300 Invalid Request- The receiving application did not process the request

because it was incorrectly formed or not supported by the application.

400 Application Faulted- The receiving application faulted when processing the

request. The detail element contains the application-specific fault.

SOAP Optional Features• Serialization Mechanism

– to exchange instances of application-defined data types and directed graphs

– uniform model for serializing abstract data models that cannot be expressed in XML Schema

– “Section 5 encoding”: representation of programming language types

• RPC Convention – how to make calls & responses for a particular type of

service

Open issue: Security of XML documents ?

Page 12: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

12

SOAP ExamplePOST /Accounts/Henrik HTTP/1.1

Host: www.webservicebank.comContent-Length: nnnnContent-Type: text/xml; charset="utf-8"SOAPAction: "Some-URI"

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP:Header>

<t:Transaction xmlns:t="some-URI"SOAP:mustUnderstand="1"></t:Transaction>

</SOAP:Header><SOAP:Body>

<m:Deposit xmlns:m="Some-URI"><m:amount>200</m:amount>

</m:Deposit></SOAP:Body>

</SOAP:Envelope>

Alternative SOAP Stacks•Based on HTTP•Based on SMTP•Based on SIP (on top of UDP)

•Support for extension modules- encryption- digital signatures- explicit routing (SOAP-RP)- caching

•Modules can address any SOAP processor using the "actor" attribute •Can be optional or mandatory using the "mustUnderstand" attribute

Page 13: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

13

SOAP Message Paths & Routing• SOAP is built on underlying transports, which have

their own concepts of: – Message Exchange Pattern

• HTTP: request/response• SMTP: one-way

– Message Routing • HTTP: proxies • DNS: lookup • SMTP: DNS MX record, intermediary configuration

• Some applications using SOAP may need to determine their own concepts of MEP & routing – Message path & routing has an implied relationship with

the processing model• intra-node processing & inter-node processing are linked.

SOAP References• SOAP 1.1 specification

– http://www.w3.org/TR/SOAP• W3C XML Protocol Activity

– http://www.w3.org/2000/xp/ • SOAP/WebServices Resource Center

– http://www.soap-wrc.com/webservices/ • http://www.webservices.org/ • http://www.soaprpc.com/ • Public SOAP Services listing

– http://www.xmethods.com/ • http://msdn.microsoft.com/msdnmag/issues/0300/

soap/print.asp

Page 14: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

14

Jini and JXTA

Part II

Distributed programming• Distributed computing is

more difficult than local computing because of:– Network latency– Concurrency issues– Memory (state) management– Inevitable partial failure

“Remote” increasingly looks like “local”

Page 15: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

15

Jini• A set of interfaces & protocols• Spontaneous networking

– Federations of software services and/or devices• H/W & S/W entities are represented by Java objects

– Located & accessed via Java interfaces

– Self-healing networks• Vision:

– Make the installation & use of devices & app. software as simple as plugging in a phone

• “Java tone”

Jini & Java• Java VM

– homogeneous network• Portable object code

– architecture independence

• Downloadable code – dynamic environment

• Unified type system

Key component: Lookup Service-repository of service proxies-Clients download services on-demand

Page 16: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

16

Using the Lookup service

Discovery & Join protocols- based on UDP multicast

Clients inquire by service type

Discovery & Join• Traditional Technology:

– Device is added to computer

– Device definition isedited in nodeconfiguration table

– Computer is restarted– Updated configuration

table is pushed tonetwork device map

• Jini Technology:– Device is plugged in &

powered up– Lookup service receives

multicast– Lookup service

authenticates source– Lookup service sends

advertisement– Device joins Lookup

service

Page 17: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

17

Finding & using a service

Communication is bet. the service & its proxy:-Independent of wire protocol-Protocol can change withoutaffecting client- RMI semantics

Distributed leasing (I)• Protocol for managing resources using a renewable,

duration-based model– Contract between objects (grantor & holder)– Resources can be shared or private– Provides a method of managing resources in an

environment where partial failures occur• Time-based grants of resources or services

– Negotiated for a set period of time– Can be shared or exclusive

• Leases may be:– Cancelled (explicit cleanup)– Renewed (explicit extension)– Allowed to expire (implicit cleanup)– Obtained & manipulated by 3rd parties

Page 18: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

18

Distributed leasing (II)• Resources are allocated only as long as

continued interest is shown– The lease holder is responsible to renew lease

before expiry• The network is self-healing

Distributed Events• Extend Java event model to work in a

distributed network– Register interest, receive notification

• Allow for use of event managers• Support various delivery models

– Push, pull, filter• Use the Distributed Leasing protocol

Page 19: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

19

Distributed transactions• Designed for distributed object coordination

– Light weight, object-oriented– Supports two-phase commit– Uses Distributed Leasing protocol– Implemented in Transaction Manager service

Jini & JavaSpaces

Page 20: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

20

Architecture layers

Communication Events

Page 21: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

21

Processes (I)

• A JavaSpace can be replicated on all machines. The dotted lines show the partitioning of the JavaSpace into subspaces.

a) Tuples are broadcast on WRITEb) READs are local, but the removing of an instance when calling

TAKE must be broadcast

Processes (II)

• Unreplicated JavaSpace.a) A WRITE is done locally.b) A READ or TAKE requires the template tuple to be

broadcast in order to find a tuple instance

Page 22: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

22

Processes (III)

• Partial broadcasting of tuples & template tuples.

The Jini Lookup Service (I)

A set of tuples describing the service.AttributeSets

A (possibly remote) reference to the object implementing the service.Service

The identifier of the service associated with this item.ServiceID

DescriptionField

Page 23: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

23

The Jini Lookup Service (II)

• Examples of predefined tuples for service items.

Street, organization, organizational unit, locality, state or province, postal code, countryAddress

Floor, room, buildingLocation

Name, manufacturer, vendor, version, model, serial numberServiceInfo

AttributesTuple Type

Synchronization of Transactions

Page 24: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

24

PAM

Evolution of network computing

C/S model is increasingly seen as a limiting factor !

Page 25: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

25

Motivation for peer-to-peer (p2p)• Vast underutilization of Internet assets:

– Information• World “data” production: 2x1018 bytes/year

– Published: 3x1012 bytes– Transient data cannot be captured by Web crawlers– Google: 1.3x108 pages

– Bandwidth• x 106 increase since 1975

– ~x2 every 16 months• Yet hot spots remain !

– Computing resources• Concentrated in data centers

– Crippling rate of increase of workloads– Hard to keep up with demand !

JXTA software architecture

Platform- & transport-independent protocols

Page 26: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

26

JXTA concepts (I)• UUID: 128-bit internal identifier per entity

– Must be explicitly bound to external name to form a security principal

• The authenticity of the binding can be ensured by including digital signatures

• Advertisement:– XML document that names & describes the existence of a

“resource”• Peer, peer group, pipe, services (“codats”)

• Messages:– Datagram-like, assuming unreliable, asynchronous, uni-

directional transport• Envelope: header, msg digest, source end-point (optional),

destination end-point • Stack of protocol headers & bodies

– Variable number of bytes + security credentials

JXTA concepts (II)• Peers:

– any entity that can interact with (a subset of) the JXTA protocols

• End-point: – a URI identifying a logical “destination” on a transport that

supports datagram-like messaging• Peer group:

– a collection of co-operating peers • Eg: in the context of a service

– World Peer Group• Pipes:

– Asynchronous, uni-directional comm. Channels– A pipe’s end-point can be bound to one or more peer end-

points• Usually dynamically, at run-time

Page 27: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

27

JXTA protocols• Peer discovery

– Find advertisements• Peer resolver

– Search for peers, peer groups, pipes, …• Peer information

– Inquire a peer’s capabilities & status• Peer membership

– Obtain group membership requirements• Spec’s of credentials, authenticator, …

– Apply for/update/cancel membership• Pipe binding

– Bind an advertisement to a pipe end-point• End-point routing

– Ask a peer router for available routes for a destination– Peers may not be directly connected

• Different transports, Firewalls, NATs

JXTA Shell (I)• Command-line access to the JXTA platform

– Publish, search & execute “codats”– Discover peers & groups– Create pipes to connect peers– Send/receive messages

• Stdin := default input pipe• Stdout := default output pipe• Pipes can be dynamically disconnected &

reconnected:– cat myfile | grep jxta

• cat myfile >p1 ; grep <p1 jxta

– grep <p1 unix

Page 28: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

28

JXTA Shell (II)• cat:

– Display advertisement, message, structured document (as read using importfile)

• mkpipe –i|o <pipe-adv>• mkmsg• send <outPipe> <msg>• recv [-t <timeout>] <inPipe>• Codats can be imported into codat containers:

– share <URI>• Currently, only local file:// URIs are supported• Symbolic name + size + MIME type + encoding

• ls: – listing of codats currently cached by the local peer

• For the current peer group

JXTA Shell (III)• whoami [-g]

– Display the local peer’s or current peer group’s advertisement

• mkadv• mkgrp• chgrp• join• leave• peers –r

– Propagate peer inquiry– Results are cached locally

• peers– Display currently known peers

• peerinfo <id>• groups

Page 29: XML for Java Developers G22.3033-002...1 XML for Java Developers G22.3033-002 Session 4 – Sub-Topic 3 Towards P2P Computing Dr. Jean-Claude Franchitti New York University Computer

29

References• Jini Network Technology Web site

– http://www.sun.com/jini/• Jiniology articles

– http://www.artima.com/jini/jiniology/• JXTA project Web site

– http://www.jxta.org/