Modulo ii webservices
This presentation is the property of its rightful owner.
Sponsored Links
1 / 26

Modulo II WebServices PowerPoint PPT Presentation


  • 77 Views
  • Uploaded on
  • Presentation posted in: General

Modulo II WebServices. Prof. Ismael H F Santos. Bibliografia. Ementa. WebServices em Java. SOA. WebServices Java. WebServices com Java. A plataforma J2EE oferece as seguintes APIs: Document-oriented Java API for XML Processing ( JAXP ) processes XML documents using various parsers

Download Presentation

Modulo II WebServices

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Modulo ii webservices

Modulo II WebServices

Prof. Ismael H F Santos

Prof. Ismael H. F. Santos - [email protected] 1


Bibliografia

Bibliografia

Prof. Ismael H. F. Santos - [email protected] 2


Ementa

Ementa

  • WebServices em Java

Prof. Ismael H. F. Santos - [email protected] 3


Modulo ii webservices

SOA

WebServices

Java

Prof. Ismael H. F. Santos - [email protected] 4


Webservices com java

WebServices com Java

  • A plataforma J2EE oferece as seguintes APIs:

  • Document-oriented

    • Java API for XML Processing (JAXP) processes XML documents using various parsers

    • Java Architecture for XML Binding (JAXB) processes XML documents using schema-derived JavaBeans component classes

  • Procedure-oriented

    • Java API for XML-based RPC (JAX-RPC) sends SOAP method calls to remote parties over the Internet and receives the results

    • Java API for XML Messaging (JAXM) sends SOAP messages over the Internet in a standard way

    • Java API for XML Registries (JAXR) provides a standard way toaccess business registries and share information

Prof. Ismael H. F. Santos - [email protected] 5


Webservices com java1

WebServices com Java

  • A tecnologia Java oferece tambem as seguintes ferramentas:

    • Java Web Services Developer Pack (Java WSDP)

    • SOAP with Attachments API for Java (SAAJ)

  • Com estas APIs você não precisa saber como criar o SOAP. Você só precisa saber utilizar as classes da API para criar e acessar os Web Services.

Prof. Ismael H. F. Santos - [email protected] 6


State of the art

State of the Art

UDDI

WSDL

SOAP

URI

HTML

HTTP

Prof. Ismael H. F. Santos - [email protected] 7


Web service how they work

Components required

Software which needs to be exposed as a Web service

A SOAP Server (Apache Axis, SOAP::Lite, etc.)

HTTP Server (if HTTP is used as the transport level protocol)

SOAP Client (Apache Axis, SOAP::Lite etc.)

Web Service : How They Work?

SOAP Messages

Requestor

(http transport)

SOAP Client

Endpoint

Web Service Provider

Prof. Ismael H. F. Santos - [email protected] 8


Simple web service invocation

Service Requestor

Remote

Web Service

Repository

(Web Sites)

2

Manual

Web Service

Lookup

HTTP GET

3

WSDL File

Write

Client Code

1

Remote

Web service

4

SOAP Request

Invoke Web

Service

Publish Web

Service

5

SOAP Response

WSDL - Web Service Description

SOAP - Web Service Message Protocol

Simple Web Service Invocation

Prof. Ismael H. F. Santos - [email protected] 9


Web service description

Web Service Description

  • Why describe Web services?

    • A service requestor needs to analyze a service for his requirements

    • A Web service needs to provide the following information

      • the operations it supports

      • the transport and messaging protocols on which it supports those operations

      • the network endpoint of the Web service

  • Languages such as WSDL, DAML-S, RDF can be used for describing Web services

    • WSDL – describes the syntactic information of a service

    • DAML-S and RDF – describe the syntactic as well as the semantic information

From S. Chandrasekaran’s Talk

Prof. Ismael H. F. Santos - [email protected] 10


Web service description wsdl

Web Service Description (WSDL)

Abstract

Description

Concrete

Description

Prof. Ismael H. F. Santos - [email protected] 11


Modulo ii webservices

SOA

WebService

Example

Prof. Ismael H. F. Santos - [email protected] 12


A web service example in java

HTTP Server

Servlet engine (e.g. Apache Tomcat)

Any class

processing

the incoming

requests

(“business logic”

Any class

processing

the incoming

requests

(“business logic”

Any class

processing

the incoming

requests

(“business logic”

Any class

processing

the incoming

requests

(“business logic”

SOAP-aware

Servlet

(e.g. Apache Axis)

Sending requests, getting results

A Web Service example in Java

Prof. Ismael H. F. Santos - [email protected] 13


Usual principles of java toolkits

Usual principles of Java toolkits

  • Writing server is easier than writing clients (but only regarding the toolkit, not the business logic)

  • Servers may be written independently on the used toolkit

  • Always test interoperability with a non-Java client (because of data serialization and de-serialization)

  • Steps:

    • write your service implementation

    • make all your classes available to the toolkit

    • deploy your service (usually done just once)

    • restart the whole servlet engine

    • test it with a client request

Prof. Ismael H. F. Santos - [email protected] 14


Java soap toolkits

Java SOAP Toolkits

  • Apache SOAP (was IBM’s SOAP4J)

  • Apache Axis (a follow-on to the Apache SOAP)

    • http://ws.apache.org/axis/

  • …and many others

  • Prof. Ismael H. F. Santos - [email protected] 15


    Modulo ii webservices

    hello/HelloWorld.java

    package hello;

    public interface HelloWorld {

    String getHelloMessage();

    void setHelloMessage (String newHello);

    }

    hello/HelloWorldService.java

    package hello;

    public class HelloWorldService implements HelloWorld {

    String message = "Hello, world!";

    public String getHelloMessage() {

    return message;

    }

    public void setHelloMessage (String newMessage) {

    message = newMessage;

    }

    }

    Prof. Ismael H. F. Santos - [email protected] 16


    Modulo ii webservices

    HelloWorldClient.java

    import org.apache.axis.client.*;

    public class HelloWorldClient {

    public static void main (String [] args) {

    try {

    // prepare the call (the same for all called methods)

    Call call = (Call) new Service().createCall();

    call.setTargetEndpointAddress

    (new java.net.URL(

    "http://localhost:8080/axis/services/Hello"));

    // call "get message"

    if (args.length == 0) {

    call.setOperationName ("getHelloMessage");

    String result = (String)call.invoke( new Object[]{} );

    System.out.println (result);

    System.exit (0);

    }

    Prof. Ismael H. F. Santos - [email protected] 17


    Modulo ii webservices

    HelloWorldClient.java

    // call "set message" and afterwards "get message"

    call.setMaintainSession (true); // TRY also without

    // this line...

    call.setOperationName ("setHelloMessage");

    call.invoke ( new Object [] { args[0] } );

    call.setOperationName ("getHelloMessage");

    System.out.println (call.invoke ( new Object [] {} ));

    } catch (Exception e) {

    System.err.println ("ERROR:\n" + e.toString());

    }

    }

    }

    Prof. Ismael H. F. Santos - [email protected] 18


    Generated for helloworld

    1. Make an instance of this

    HelloWorldService

    HelloWorld

    implements

    implements

    2. Use it to make an instance of this

    HelloWorldServiceLocator

    HelloSoapBindingStub

    3. Call methods on this proxy object

    Generated for HelloWorld

    getHello()

    Prof. Ismael H. F. Santos - [email protected] 19


    Modulo ii webservices

    HelloWorldClientFromStubs.java

    public class HelloWorldClientFromStubs {

    public static void main (String [] args) {

    try {

    // prepare the calls (the same for all called methods)

    hello.generated.HelloWorldService service =

    new hello.generated.HelloWorldServiceLocator();

    hello.generated.HelloWorld myHelloProxy = service.getHello();

    // call "get message"

    if (args.length == 0) {

    String result = myHelloProxy.getHelloMessage()

    System.out.println (result);

    System.exit (0);

    }

    // call "set message" and afterwards "get message”

    myHelloProxy.setHelloMessage (args[0]);

    System.out.println (myHelloProxy.getHelloMessage());

    } catch (Exception e) {

    System.err.println ("ERROR:\n" + e.toString());

    }

    }

    }

    Prof. Ismael H. F. Santos - [email protected] 20


    Java xml data mapping

    Java <=> XML Data Mapping

    • How Java objects are converted to/from XML data (in order to be able to be put into SOAP messages)

    • Important especially for the non-basic data types

    • It’s easier if your non-basic data types are Java Beans (having set/get methods for members)

    Prof. Ismael H. F. Santos - [email protected] 21


    Examples java client

    Examples (Java Client)

    URL endpointURL = new URL(endpoint);

    Call call = new Call();

    call.setSOAPTransport(m_httpconn);

    call.setTargetObjectURI("MessageService");

    call.setMethodName("setMessage");

    call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

    Prof. Ismael H. F. Santos - [email protected] 22


    Examples java client1

    Examples (Java Client)

    Vector params = new Vector();

    params.addElement(

    new Parameter("name", java.lang.String.class, name, null));

    params.addElement(

    new Parameter("colour", java.lang.String.class, colour, null));

    call.setParams(params);

    Response response = call.invoke(endpointURL, "");

    Prof. Ismael H. F. Santos - [email protected] 23


    A web service example in perl

    package HelloPerl;

    use strict;

    use vars qw( $Message );

    $Message = 'Hello, here is Perl.';

    sub getHelloMessage { $Message; }

    sub setHelloMessage { $Message = shift; }

    1;

    This is a module implementing

    the “business logic”

    This is a client

    #!/usr/bin/perl –w

    use SOAP::Lite

    on_fault => sub {…};

    print SOAP::Lite

    -> uri ('HelloPerl')

    -> proxy ('http://localhost/cgi-bin/helloserver.cgi')

    -> getHelloMessage

    -> result;

    A Web Service example in Perl

    #!/usr/bin/perl -w -- Perl –

    use SOAP::Transport::HTTP;

    SOAP::Transport::HTTP::CGI

    -> dispatch_to('HelloPerl')

    -> handle;

    This is a cgi-bin

    script

    Prof. Ismael H. F. Santos - [email protected] 24


    Soap lite

    SOAP::Lite

    • a collection of (many) modules

      • but they are loaded automatically when needed

    • supports SOAP 1.1 specification

    • all methods can be used for both setting and retrieving values:

      • if you provide no parameters, you will get current value, and if parameters are provided, a new value will be assigned to the object

      • and the method in question will return the current object (if not stated otherwise) which is is suitable for stacking these calls like:

        $lite = SOAP::Lite

        -> uri(’openBQS')

        -> proxy('http://industry.ebi.ac.uk/soap/openBQS');

    Prof. Ismael H. F. Santos - [email protected] 25


    Using wsdl directly

    Using “wsdl” - directly

    • getting “.wsdl” file by using its URL

    • then, you do not need to worry about autotyping

    #!/usr/bin/perl -w

    use SOAP::Lite on_fault => sub {…};

    print SOAP::Lite

    -> service ('file:/home/senger/ws-ws/perl/Hello.wsdl')

    -> setHelloMessage (123);

    #!/usr/bin/perl -w

    use SOAP::Lite on_fault => sub {…};

    my $service = SOAP::Lite -> service ('file:./Hello.wsdl');

    $service->setHelloMessage ($ARGV[0] or "Hello!!!");

    print $service->getHelloMessage, "\n";

    Prof. Ismael H. F. Santos - [email protected] 26


  • Login