Professional Documents
Culture Documents
Web Services
Objetivos da disciplina
Formar profissionais capazes de desenvolver sistemas computacionais baseados em servios Web. Estudar as especificaes e implementaes de ferramentas baseadas em servios Web; Desenvolver aplicaes em que a interoperabilidade seja assegurada: aplicaes distintas, ambientes heterogneos, integrao de sistemas.
2
Contedo Programtico
Introduo a Java Desenvolvimento de aplicaes para a Web
Camada de apresentao Camada de lgica Camada de base de dados Exemplos com HTML, Servlets, SQL e JDBC.
Contedo Programtico
As principais tecnologias de servios Web
SOA (Service-Oriented Architecture) WSDL (Web Services Definition Language) SOAP (Simple Object Access Protocol) UDDI (Universal Description, Discovery, and Integration)
Desenvolvendo servios Web com Java Web Services Developer Pack (JWSDP)
Exemplos de sistemas com servios Web.
5
Contedo Programtico
Servios Web compostos
Importncia da composio. Ferramentas de composio. BPEL (Business Process Execution Language) Eclipse e o Framework da Oracle para servios Web compostos.
Utilizao de Servios Web na Engenharia Eltrica. Especificaes para segurana de servios Web: uma introduo. O futuro de servios Web.
6
Metodologia
Aulas expositivas e discusses em classe, enfatizando a importncia da interoperabilidade entre aplicaes. Estudo das especificaes criadas para servios Web da W3C e da OASIS. Estudos de caso para exemplificar a utilizao de servios Web. Os alunos sero orientados no desenvolvimento de aplicaes baseadas em servios Web. Pesquisa de assuntos avanados. Trabalhos individuais para sedimentar a aprendizagem.
Ms Julho Agosto
Cronograma de Aulas, Trabalhos e Avaliaes Dias da disciplina 3, 4, 10, 11, 17, 18, 24, 25, 31 1, 7, 8, 14, 15, 21, 22, 28, 29 4, 5, 11, 12, 18, 19
Setembro
Reposio Final
8
BIBLIOGRAFIA: Thomas Erl, Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services, Prentice Hall, 2004. Gustavo Alonso, Fabio Casati, Harumi Kuno, Vijay Machiraju, Web Services: Concepts, Architectures and applications, Springer, 2004. Sanjiva Weerawarana, Francisco Curbera, Frank Leymann, Tony Storey, Donald F. Ferguson, Web Services Platform Architecture, Prentice Hall, 2005. T. Andrews, F. Cubera et al, Business Process Execution Language for Web Services, 2001. Disponvel on-line: http://www128.ibm.com/developerworks/library/specifica-tion/ws-bpel/ W3C, WSDL, Avaliable at http://www.w3.org/TR/wsdl20/ W3C, SOAP, Avaliable at http://www.w3.org/TR/soap12-part0/ OASIS, UDDI, Avaliable at http://www.uddi.org/
9
10
Uma abordagem usando objeto tem como finalidade permitir a modelagem das propriedades estticas e dinmicas do ambiente no qual esto definidas as necessidades, denominadas de domnio do problema.
11
12
13
:Um objeto B
Estados de B
15
a1:Avio
[Em vo]
t1:Torre de controle
Estados
De c ola r
a2:Avio
[No solo]
16
Classe A
atributo1: TipoAtributo atributo2: TipoAtributo atributoN: TipoAtributo mtodo1(parmetro:TipoParmetro):TipoRetorno mtodo2(parmetro:TipoParmetro):TipoRetorno mtodoN(parmetro:TipoParmetro):TipoRetorno
19
<<Instncia de>>
spike:Cachorro Raa= Pastor Alemo Cor= Preto e marrom Peso= 6,5 Altura=0,8 Idade=8
20
Exemplo:
NmeroComplexo -ParteReal:Float -ParteImaginria:Float +adio(num1:NmeroComplexo):NmeroComplexo +sub(num1:NmeroComplexo):NmeroComplexo +mult(num1:NmeroComplexo):NmeroComplexo +div(num1:NmeroComplexo):NmeroComplexo +getReal():Float +getImag():Float
23
Veculo
Veculo Terrestre
Veculo Areo
Carro
Caminho
Moto
Avio
Helicptero
Animal
Carnvoro
Herbvoro
Leo
Ona
Coiote
Ovelha
Cavalo
26
27
B B
Proibido
C
Transitividade
28
30
Introduo a Java
Em 1991, a Sun Microsystems financiou um projeto de pesquisa corporativa interno com o codinome Green (Patrick Naughton, Mike Sheridan, e James Gosling). No projeto Green, uma linguagem baseada em C++ foi desenvolvida e denominada de Oak. Mais tarde, esta linguagem foi introduzida na Web e se passou a chamar Java. Em 1995, Java despertou o interesse da comunidade, pois aprimorava as funcionalidades de servidores Web, possibilitando a criao de pginas Web dinmicas.
33
Introduo a Java
Java um ambiente de execuo presente em:
web browsers; Mainframes; SOs; celulares; palmtops; cartes inteligentes, entre outros.
34
Introduo a Java
Caractersticas: Orientao a objeto baseada no modelo Smalltalk
e Simula 67.
Recursos de Rede suporte para Socket e TCP/IP. Segurana atravs do Sandbox. Bytecode interpretado cdigo executado pela JVM
(Java Virtual Machine).
Introduo a Java
Caractersticas:
Introduo a Java
37
Introduo a Java
Java est disponvel em 3 edies:
Java 2 Standard Edition (J2SE): a tecnologia Java para
computadores pessoais, notebooks e arquiteturas com elevado poder de processamento. J2SE possui duas divises: Java Standard Development Kit (JSDK): constudo por um conjunto
de ferramentas (compiladores, debugger, ...) que suportam a criao de programas Java. Java Runtime Edition (JRE): contm o necessrio para a execuo dos programas Java.
Introduo a Java
39
Fonte: http://java.sun.com/javase/technologies/index.jsp
Introduo a Java
Um ambiente de desenvolvimento Java tpico.
40
41
42
43
Exemplo 2
import java.util.Scanner; // importa a classe Scanner do pacote java.util // Classe principal public class HelloWorld2 { // mtodo principal que inicia a execuo do aplicativo Java public static void main(String[] args) { //declao de variveis // cria variavel para armazenar o nome do usurio String userName="none "; // cria variavel para armazenar a idade do usurio int userAge=0; // cria um objeto da classe Scanner para ler o teclado Scanner inputKeyboard = new Scanner(System.in); // Imprime uma mensagem no console System.out.println("Hello World! I am a program in Java...!"); System.out.println("What is your name?"); // Ler uma string de caracteres do teclado userName = inputKeyboard.nextLine(); // Imprime o nome do usurio usando formatao System.out.printf("Hi %s",userName); // Imprime uma mensagem no console System.out.println("\nHow old are you?"); // Ler um nmero inteiro do console userAge = inputKeyboard.nextInt(); // Imprime uma mensagem no console com formatao, %s string e %d nmero inteiro System.out.printf("%s is %d years old.",userName,userAge); } }
44
Tamanho/Formato
8-bit complemento de dois 16-bit complemento de dois 32-bit complemento de dois 64-bit complemento de dois
Nmeros reais
float double
Outros
char boolean
Um nico caractere
Exemplo 3
/* * Programa que retorna o valor mximo para tipos de dados simples * Fonte: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/ ex5/MaxVariablesDemo.java */ public class MaxVariablesDemo { public static void main(String args[]) { //integers byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; //real numbers float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; //other primitive types char aChar = 'S'; boolean aBoolean = true; //Display them all. System.out.println("The largest byte value is " + largestByte + ".");
46
Exemplo 3
System.out.println("The largest short value is " + largestShort + "."); System.out.println("The largest integer value is " + largestInteger + "."); System.out.println("The largest long value is " + largestLong + "."); System.out.println("The largest float value is " + largestFloat + "."); System.out.println("The largest double value is " + largestDouble + "."); if (Character.isUpperCase(aChar)) { System.out.println("The character " + aChar + " is uppercase."); } else { System.out.println("The character " + aChar + " is lowercase."); } System.out.println("The value of aBoolean is " + aBoolean + "."); } }
47
48
49
Operadores relacionais
Operadores Relacionais Operador Uso > >= < <= == != op1 > op2 Descrio Retorna true se op1 maior do que op2
op1 >= op2 Retorna true se op1 maior ou igual op2 op1 < op2 Retorna true se op1 menor do que op2
op1 <= op2 Retorna true se op1 menor ou igual op2 op1 == op2 Retorna true se op1 e op2 so iguais op1 != op2 Retorna true se op1 e op2 no so iguais
51
Operadores Condicionais
Ope radores Condicionais Ope rador Uso
&& op1 && op2
Descrio Retorna true se op1 e op2 so ambos verdadeiros; condicionalmente avalia op2 Retorna verdadeiro se op1 ou op2 verdadeiro; condicionalmente avalia op2 Retorna verdadeiro se op falso Retorna true se op1 e op2 so ambos lgicos e ambos verdadeiros; sempre avalia op1 e op2; se ambos so nmeros, realiza operao AND bit a bit. Retorna verdadeiro se ambos op1 e op2 so lgicos e nenhum op1 ou op2 verdadeiro; sempre avalia op1 e op2 ; se ambos operandos so nmeros, realiza a operao ou bit a bit. Retorna verdadeiro se op1 e op2 so diferentes isto , se um ou outro dos operandos, mas no ambos, verdadeiro.
52
|| !
&
op1 | op2
op1 ^ op2
//greater than System.out.println("Greater than..."); System.out.println(" i > j is " + (i > j)); //false System.out.println(" j > i is " + (j > i)); //true System.out.println(" k > j is " + (k > j)); //false //(they are equal) //greater than or equal to System.out.println("Greater System.out.println(" i >= System.out.println(" j >= System.out.println(" k >=
than j is i is j is
or equal to..."); " + (i >= j)); //false " + (j >= i)); //true " + (k >= j)); //true
53
or is is is
equal to..."); " + (i <= j)); " + (j <= i)); " + (k <= j));
//equal to System.out.println("Equal to..."); System.out.println(" i == j is " + (i == j)); System.out.println(" k == j is " + (k == j)); //not equal to System.out.println("Not equal to..."); System.out.println(" i != j is " + (i != j)); System.out.println(" k != j is " + (k != j)); } }
//false //true
//true //false
54
55
// Imprime resultado System.out.printf("x1=%f x2=%f",x1,x2); }else if (delta > 0 ){ // clculo das razes x1=(-b - (float) Math.sqrt(delta))/(2*a);; x2= (-b + (float) Math.sqrt(delta))/(2*a); // Imprime resultado System.out.printf("x1=%7.3f x2=%7.3f",x1,x2);
56
57
import java.util.Scanner;
resutaldo long number =0; long result=0; // pede e l o nmeor System.out.print("\nPor favor, entre um nmero para calcular o fatorial:"); number=scannerKeyboard.nextLong(); // chama o mtodo fatorial de FatorialCalculate result = fatCalculate.fatorial(number); // imprime o resultado System.out.printf("\nFatorial de %d ! = %d",number,result); }
58
}
59
60
Classes e objetos
Uma classe contm a descrio dos estados e do comportamento de um objeto. Um objeto uma instncia de uma classe. O estado de um objeto descrito pelos atributos. O comportamento descrito pelos mtodos.
61
Classes e objetos
Vrios objetos podem ser instncias de uma mesma classe, mas estes objetos so distintos e podem possuir estados iguais ou diferentes. Mesmo que vrios objetos tenham sido instanciado de uma mesma classe, estes objetos continuam sendo distintos, ainda que o estado seja igual.
62
Classes e Objetos
Declarao do pacote
package biblioteca;
import java.util.Scanner; public class Livro { private String tituloLivro; private String nomeAutor; private String nomeEditora; *** public Livro(String tituloLivro, String nomeAutor, ***) { super(); this.tituloLivro = tituloLivro; this.nomeAutor = nomeAutor; this.nomeEditora = nomeEditora; *** } public void print() { System.out.println("Titulo:" + tituloLivro); System.out.println("Autor:" + nomeAutor); System.out.println("Editora:" + nomeEditora); }
Construtor
Mtodos
public String getIsbn() { return this.isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } *** }
63
Variveis (Atributos)
Elemento Visibilidade
static final
Elementos de Declarao de Variveis Funo (Optional) Nvel de acesso para a varivel: private, public, protected (Optional) Declara uma varivel de classe (Optional) Indica que o valor da varivel no pode ser mudado (Optional) Indica que o valor voltil
64
65
66
Mtodos
Nvel de acesso Nome do mtodo
Tipo de retorno
Argumentos
67
Instrues de controle
Declaraes de Fluxo de Controle Tipo de declarao Lao Tomada de deciso Palavra-Chave while, do-while, for if-else, switch-case
68
Elemento no ndice 5
X
2 1 1 2
=
7 4
69
70
71
Herana
Abstraes mais gerais
Veculo
Veculo Terrestre
Veculo Areo
Carro
Caminho
Moto
Avio
Helicptero
Herana
package veiculo; public class Veiculo { *** }
package veiculo; public class VeiculoTerrestre extends Veiculo { private int numeroRodas; private boolean tracaoAnimal; public VeiculoTerrestre(String nome, float velocidade, float peso,***) { super(nome, velocidade, peso,***); this.numeroRodas = numeroRodas; this.tracaoAnimal = tracaoAnimal; } *** }
73
Herana
package veiculo; public class Carro extends VeiculoTerrestre { private String renavam; private String placa; private String proprietario; private String fabricante; public Carro(String fabricante, String nome, String renavam, ***) { super(nome, velocidade, peso, ***); this.renavam = renavam; this.placa = placa; this.proprietario = proprietario; this.fabricante = fabricante; } ***
74
Interface
Uma interface define um protocolo de comportamento que pode ser implementado por uma classe. Define um conjunto de mtodos, mas no os implementa. Somente as classes implementam mtodos.
75
Interface
Nvel de acesso Nome da interface
Argumentos
Interface
package pckinterf; public interface ItfCarro { public void parar(); public void acelerar(); public void stabilizar(float velocidade); public float getVelocidade(); public void estabelecerRota(String origem,String destino); }
77
Interface
package pckinterf; public class ControleSienaFire implements ItfCarro { private String name; private float velocidade; public ControleSienaFire(String name) { super(); this.name = name; } public void acelerar() { this.velocidade = 60; System.out.println("Carro " + name + " est acelerando..."); return; } public void estabelecerRota(String origem, String destino) { System.out.println("Carro " + name + " est traando nova rota de " + origem + " para " + destino); return; }
*** }
78
Interface
package pckinterf; public class MainCarro { public static void main(String[] args) { ItfCarro carro = new ControleSienaFire("Siena"); carro.acelerar(); carro.getVelocidade(); carro.parar(); carro.stabilizar(90); float velocidade = carro.getVelocidade(); System.out.println("Velocidade atual= " + velocidade); } }
79
80
82
Criada Em execuo
1 3
Morta
Suspendida/Bloqueada
83
84
package threadSample;
public class MainThread { public static void main(String[] args) { // Declarao de variveis ClassThread threadA = new ClassThread("Thread ClassThread threadB = new ClassThread("Thread ClassThread threadC = new ClassThread("Thread ClassThread threadD = new ClassThread("Thread ClassThread threadE = new ClassThread("Thread // Controlando a prioridade de execucao threadA.setPriority(Thread.MIN_PRIORITY); threadB.setPriority(Thread.MAX_PRIORITY); threadC.setPriority(Thread.NORM_PRIORITY); threadD.setPriority(Thread.NORM_PRIORITY); threadE.setPriority(Thread.NORM_PRIORITY); // Inicia a execucao dos threads threadA.start(); threadB.start(); threadC.start(); threadD.start(); threadE.start();
85
A passagem de mensagem assncrona implementada pela utilizao de datagramas e socket. A passagem de mensagem sncrona obtida pela utilizao de socket.
87
88
Ordinateur A Application (HTTP, FTP, Telnet,) Transport (TCP, UDP,...) Network (IP, ) Link (device driver,...)
Ordinateur B Application (HTTP, FTP, Telnet,) Transport (TCP, UDP,...) Network (IP, ) Link (device driver,...)
Ordinateur C Application (HTTP, FTP, Telnet,) Transport (TCP, UDP,...) Network (IP, ) Link (device driver,...)
89
protocolo://nomeHost[ :porta]/caminho/nomeArquivo#seoArquivo
Protocolos: file: um arquivo:file://C:\JDBC_drivers\Javadoc\allclasses-frame.html) http: uma pgina Web ou um servidor Web (ex. :http://www.dee.ufma.br) ftp: um servidor FTP (par exemple :ftp://ftp.dee.ufma.br)
90
caminho: indica o local dentro de um diretrio fsico ou lgico no qual o recurso pode ser encontrado. nomeArquivo: especfica o nome do arquivo que ser baixado pela aplicao cliente. #seoArquivo: um ponteiro dentro de um arquivo HTML. Ex.: http://www.dee.ufma.br/~dlopes/Links.html#_Business_Process
91
de
Port 50
Port 80
Port 5050
TCP ou UDP
94
95
97
Datagramas: Exemplo
// RECEIVER
int receiver_port = 6600; // port of server DatagramSocket receiver_connection = null; // connection of type // DatagramSocket (UDP) byte[] buffer = new byte[256]; // create a buffer to receive the // message String msg_read = null; try { receiver_connection = new DatagramSocket(receiver_port); DatagramPacket datagram = new DatagramPacket(buffer, buffer.length); do { // print message System.out.println("Receiver>waiting..."); System.out.print("Receiver>"); receiver_connection.receive(datagram); // read from the // datagramsocket (UDP) msg_read = new String(datagram.getData(), 0, datagram .getLength()); // transform the byte in String System.out.println("message: [" + msg_read + "] from:" + datagram.getAddress().getHostName()); } while (!msg_read.equals("exit")); } catch (Exception e) { System.out.println("Exception in receiver...\nException:\n" + e); } receiver_connection.close();
98
Datagramas: Exemplo
//SENDER
int sender_port = 5000; // port of client int receiver_port = 6600; // port of server DatagramSocket sender_connection = null; // connection of type DatagramSocket (UDP) String receiver_address = "leserc-03"; byte[] buffer = null; Scanner keyboard = new Scanner(System.in); String msg_keybd = null; String msg_read=null; try { // create a DatagramSocket with port of client sender_connection = new DatagramSocket(sender_port); // create an object InetAddress (IP) InetAddress server_inet = InetAddress.getByName(receiver_address); do{ System.out.println("Sender>type a message..."); System.out.print("Sender>"); msg_keybd = (String) keyboard.next(); // read from keyboard // get the bytes from the msg_keybd and put into the buffer buffer = msg_keybd.getBytes(); // create a datagram packet DatagramPacket datagram = new DatagramPacket(buffer, buffer.length, server_inet, receiver_port); // send the datagram packet to server sender_connection.send(datagram);
99
Datagramas: Exemplo
//SENDER - continuao
// get the message from the datagram packet msg_read = new String(datagram.getData()); System.out.println("Sender>sending message [" + msg_read + "] to :" + datagram.getAddress().getHostName()); }while(!msg_read.equals("exit")); } catch (Exception e) { System.out.println("Exception in sender...\nException:\n" + e); } sender_connection.close();
100
102
103
104
105
2 gerao
As aplicaes reais:
Pginas dinmicas usando: CGI, Servlets, ASP, JSP, PHP, ...)
3 gerao
Os servios Web (baseado sobre XML)
106
Publicao Eletrnica
Formulrios
Cliente/Servidor
HTML dinmico Scripts Cookies/Sessions ASPs CORBA plug-ins (WAI) Push WebObjects Servlets, JSP, PHP
JavaBeans/Applet ActiveX Controls Interactions bases sur ORB via CORBA et DCOM
Evoluo da Web
Interactividade 107
Base de dados
Lgica de Aplicao
Gesto de recursos
Sistema de informao
Apresentao
108
Projeto Top-down
1. Definir os canais de acesso e plataformas dos clientes. 2. Definir os formatos de apresentao e protocolos para os clientes. 3. Definir as funcionalidades necessrias para fornecer os contedos e os formatos a serem usados na camada de apresentao. 4. Definir as fontes de dados e organizao de dados necessrias para implementar a lgica de apresentao.
apresentao
Lgica de apresentao
Arquitetura 1-tier
cliente
Lgica de aplicao
Gesto de recursos
Sistema de informao
1 - Tier
apresentao
111
Arquitetura 2-tier
cliente
2- Tier
apresentao
Lgica de aplicao
Gesto de recursos
112
Arquitetura 3-tier
3- Tier
cliente apresentao
Sistema de informao
Gesto de recursos
113
Arquitetura N-tier
Cliente Browser Web
Gesto de recursos
Oracle Mainframe
CLIENTES INTERNOS
INTERNET Firewall
Rede Local
Gesto de recursos
Banco de dados
Arquivos
116
HTML
O arquivo que contm a descrio de uma pgina HTML tem geralmente a extenso .htm ou .html. Um arquivo HTML basicamente constitudo de:
Texto e imagens. Balizas (por exemplo, <p> ... </p>) que determinam a maneira como os elementos sero apresentados no navegador.
118
HTML
Algumas balizas permitem transformar um texto ou uma imagem em um link hypertexto (por exemplo, <a>...</a>). Exemplos de tags HTML:
Determina o tamanho da fonte:
<font size=7>
Exemplo de HTML
Exemplo de HTML
121
Servidor Web
1
GET /index.html HTTP/1.1
HTTP/1.0 200 OK
4 Pgina HTML
122
Servlets
Basicamente, um servidor Web capaz de enviar arquivos presentes no servidor em resposta uma requisio. Uma pgina HTML esttica tem seu contedo pr-determinado e armazenado em um arquivo com extenso *.HTML. Muitas vezes, o contedo de uma pgina HTML no pode ser pr-determinado.
123
Servlets
Exemplos quando o contedo no pode ser prdeterminado:
Quando a pgina deve ter seu contedo em funo de parmetros determinados pelo usurio. Ex: Pgina de E-mail em funo do perfil de usurio. Quando a informao que deve ser apresentado pela pgina Web buscada em uma base de dados. Exemplo: Conta Corrente, Boletim escolar, Produtos vendidos on-line, conversor de moedas.
Servlets
Vrias solues existem para criar pginas HTML dinamicamente:
PHP. ASP. JavaServerPages. Servlets.
Um servlet um programa que executa do lado do servidor como uma extenso do mesmo.
125
Servlets
O servidor Web recebe a requisio do cliente (browser) e redireciona para a servlet. A servlet processa a requisio e devolve uma pgina Web para o servidor Web, que por sua vez, retorna para o cliente. Servlet escrito em Java, sendo assim fornece:
Portabilidade. Acesso a todas as APIs de Java, inclusive JDBC.
126
Servlets
package hello_servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setBufferSize(16384); PrintWriter out = response.getWriter();
127
// write the reponse of GET out.println( "<html>" + "<head><title>Hello World Servlet</title></head>"+ "<body>" + "<H1 ALIGN=CENTER>Hello World! I am a servlet...</H1>"+ "<P ALIGN=CENTER STYLE=\"margin-top: 0.17in; page-break-after: avoid\">"+ "<FONT FACE=\"Albany, sans-serif\">"+ "<FONT SIZE=4>created by Denivaldo LOPES </FONT></P>"+ "<P ALIGN=CENTER STYLE=\"margin-top: 0.17in; page-break-after: avoid\">"+ "<FONT FACE=\"Albany, sans-serif\">"+ "<FONT SIZE=4>(denivaldo.lopes@hotmail.com)</FONT>" + "</P>"+ "<P></P>" +"<hr style=\"width: 100%; height: 2px;\">"+ "</body>"+ "</html>" ); out.flush(); out.close(); } public String getServletInfo() { return "The HelloWorld servlet by Denivaldo Lopes"; }}
Servlets
128
Servlets
129
130
Por qu middlewares?
Client code (C++)
? ! # $ %
Como realizar a interoperabilidade?
Pentium IV Windows XP
Power PC Mac OS X
Um middleware facilita e gerencia a interao entre aplicaes instaladas em plataformas computacionais heterogneas. Um middleware oferece abstraes de programao que escondem vrias complexidades 131 na construo de uma aplicao distribuda.
Middleware
Um middleware um software de conexo que constitudo por um grupo de servios que permite a execuo de vrios processos em um ou vrios computadores conectados em rede. Esta tecnologia fornece interoperabilidade entre:
aplicaes criadas em diferentes linguagens de programao; sistemas operacionais; 132 arquiteturas de computadores.
Middleware
Application Application Application
Platform Interface
Platform Interface
Platform Interface
Platform
Platform
Platform
OS hardware
OS hardware
OS hardware
133
Middleware
Exemplo de middleware: Distributed Computing Environment (DCE); Common Object Request Broker Architecture (CORBA); Distributed Component Object Model (DCOM); Java Remote Method Invocation (Java RMI); Simple Object Access Protocol (SOAP).
134
Middleware
Tipos de middlewares:
Sistemas baseados em Remote Procedure Call (RPC); Transactional Processing Monitors (Monitores de Processamento Transacional; Object brokers (intermedirio de objetos); Object monitors (monitores de objetos); Message-oriented (Orientado a mensagens); Message broker (intermedirio de mensagens).
135
Sockets
TCP, UDP
IDL compiler
Interface headers
138
RPC
Funcionamento bsico de um RPC
client procedure call
client process
server procedure
server process
communication module
CORBA
CORBA baseado no OMA (Object Management Architecture) que foi criado pela OMG (Object Management Group).
Application Objects
ORB
CORBA Services
CORBA Facilities
141
CORBA
Arquitetura
Objects Vertical facilities : Financials supply chain
task management
naming concurrency
lifecycle trader
transaction security
events persistence
time relationships
142
Avaliao de CORBA
Pontos positivos de CORBA: A transparncia. A portabilidade. A interoperabilidade. A adaptabilidade. A disponibilidade. A estabilidade. Pontos negativos de CORBA: A complexidade. O preo elevado. A formao especializada para os desenvolvedores.
143
Middlewares e XML
A comunicao somente possvel quando o emissor e o receptor falam a mesma linguagem. D-se o nome de EDI (Electronic Data Interchange) a esta linguagem. Todos middlewares precisam definir um EDI, i.e. metadados e dados, a fim de permitir a comunicao. Ex.: CORBA utiliza CDR (Common Data Representation). Atualmente, a maioria dos middlewares tm sido estendidos ou desenvolvidos para permitir a representao de metadados e dados com XML (eXtensible Markup Language). Ex.: XML-RPC e SOAP. XML o EDI da atualidade.
144
Novas Necessidades
Interoperabilidade a habilidade de trocar e usar informaes.
-Interoperabilidade na Internet ? EDI-standards- Um middleware unificador ?
Travel Agency CORBA-IIOP DCOM/COM+
CORBA-IIOP
Airlines
Internet/ Intranet
DCOM/COM+
Client
Hotel145
suporta a descoberta de
ligado
WSDL
Suporta a comunicao de
Servios Web
146
Introduo a XML:
DTD (Document Type Definitions), XSD (XML Schema Definition Language) XSLT (eXtensible Stylesheet Language Transformations).
147
Vocabulrio:
Um conjunto de elementos XML relacionados podem ser classificados como um vocabulrio. Eles podem ser criados para descrever tipos especficos de documentos de negcios.
Documentos:
uma instncia de um vocabulrio XML. o mais fundamental bloco de construo de uma arquitetura XML.
154
<?xml version=1.0?> <!DOCTYPE book SYSTEM movie.dtd> <movie category=Fiction> <title>Star Trek</title> <author>Eugene Roddenberry </author> </movie>
155
157
158
159
Universo XML
Document Type Definition (DTD) XML Schema Definition Language (XSD) Extensible Stylesheet Language Transformation (XSLT) XML Query Language (XQuery) XML Path Language (XPath)
160
Universo XML
DTD substitui descreve
XSD
descreve
XML Documents
transforma
XSLT
procura
procura
utiliza
XQuery utiliza
XPath
161
utiliza
Um esquema criado com XSD tem uma sintaxe baseada em XML, ou seja, um esquema XSD um documento XML.
164
XML document AA
XML document BB
XML Schema A
XML Schema B
168
HTML document
Alpha document
169
Exemplo de XSLT
<?xml version=1.0?> <xsl:transform xmlns:xsl=http://www.w3.org/1999/XSL/Transform version=1.0> <xsl:template match=/> <xsl:apply-templates /> </xsl:template> <xsl:template match=inventory> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Movies</title> </head> <body>
170
Exemplo de XSLT
<table border=1> <xsl:for-each select=movie> <tr> <td><xsdl:value-of select=@category/></td> <td><xsdl:value-of select=title/></td> <td><xsdl:value-of select=author/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:transform>
171
173
Agente Consumidor
Servios descreve
components Atomic
Security
Transactions
Quality of Service
Interface+Bindings
Policy
Description
XML Transports
Non-XML
Messaging Transport
176
Call Bind
Search
Publish
Provedor de servios
Servios
Mensagem em Soap
Servidor UDDI
repositrio de 177 Servios Web
179
A mensagem SOAP
Cabealho: Padro HTTP e cabealho SOAP HTTP Envelope Cabealho Cabealho individual Corpo da mensagem SOAP Chamada de mtodos e descrio dos dados 181
HTTP Headers
SOAP Envelope SOAP Header
Headers
SOAP Body
Method Call and Data
UDDI
(Universal Description, Discovery, and Integration)
UDDI
(Universal Description, Discovery, and Integration)
UDDI em detalhe: Uma estrutura de dados baseada em XML para facilitar a descoberta de servios. Similar a estrutura abaixo. UDDI
Pginas brancas
(para encontrar um servio pelo contato, nome e endereo)
Pginas amarelas
(para encontrar um servio pelo assunto de acordo com uma taxonomia padroniza)
Pginas verdes
(para encontrar um servio pelas caractersticas tcnicas)
183
UDDI
(Universal Description, Discovery, and Integration)
businessService: informaes
descritivas sobre uma famlia de servios especficos.
bindingTemplate:
informaes tcnicas sobre o ponto de entrada e especificao de construes.
184
UDDI
2 : O cliente procura servi um servi o Web com as caractersticas X, caracter UDDI (XML) UDDI (XML) Y e Z.
3 : O repositrio encontra um servio com as reposit servi caractersticas X, Z et Y, e envia a informao caracter informa do servidor que o abriga 4 : Qual o contrato do servio Web servi que voc prope?
Cliente
WSDL (XML) WSDL (XML) 6 : Eu chamo o teu servio Web servi SOAP (XML) SOAP (XML) SOAP (XML) SOAP (XML) 7 : O resultado do servio Web servi
Servidor
185
components Atomic
Security
Transactions
Quality of Service
Interface+Bindings
Policy
Description
XML Transports
Non-XML
Messaging Transport
186
Quality of Service
WSDL
WS-Policy
Description
SOAP, WS-Addressing
JMS,...
Messaging Transport
187
Desenvolvendo servios Web com Java Web Services Developer Pack (JWSDP)
Servidor de Aplicaes Web: Tomcat Ant: ferramenta de construo de programas em XML e Java Exemplos de sistemas com servios Web.
188
Tomcat:
um container para execuo de Servlets e Java Server Pages; desenvolvido inteiramente em Java; criado conforme a licena Apache Software License.
189
190
Tomcat: Arquitetura
Servidor Servio* Motor
Logger Requisio Conector Vlvula
Host*
Contexto*
Servlet*
JSP*
Requisio
Conector
Vlvula
HTML*
191
194
195
196
197
198
Startup, shutdown e outros scripts. Arquivos de configurao e seus DTD. Mais importante server.xml Arquivos de log. Contm as aplicaes Web
199
conf
logs webapp
JWSDP 2.0
Composto por:
Java API for XML Web Services (JAX-WS) Java Architecture for XML Binding (JAXB) Java API for XML Messaging (JAXM) Java API for XML Processing (JAXP) Java API for XML Registries (JAXR) Java API for XML-based RPC (JAX-RPC) SOAP with Attachments API for Java (SAAJ) Java API for XML Web Services Addressing (JAX-WSA) 200 XML Web Services Security
Exemplo HelloWorld
202
203
resultado em HTTP/SOAP
204
} public String sayHello(String name){ return "Hello " + name +". This is HelloWorld example using Web Service (JWSDP)"; } }
205
@WebService(targetNamespace = "http://leserc.org", name="helloworld") @SOAPBinding(style=SOAPBinding.Style.RPC, use=SOAPBinding.Use.LITERAL) public interface ITFHelloWorld extends Remote { @WebMethod(operationName="sayHello", action="urn:helloworld") @WebResult(name="return") public String sayHello( @WebParam(name="name")String name) throws java.rmi.RemoteException; }
206
sun-jaxws.xml
<?xml version="1.0" encoding="UTF-8" ?> <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> <endpoint name="helloworld" implementation="ws_helloworld.HelloWorld" url-pattern="/helloworld" /> </endpoints>
207
208
custom-client.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" wsdlLocation="http://leserc-02:8080/jaxwshelloworld/helloworld?wsdl" xmlns="http://java.sun.com/xml/ns/jaxws"> <bindings node="wsdl:definitions"> <package name="helloworld.stubs"/> </bindings> </bindings>
210
211
212
build.xml
213
214
216
217
218
219
@WebService(targetNamespace = "http://leserc.org", name="converterdollar") @SOAPBinding(style=SOAPBinding.Style.RPC, use=SOAPBinding.Use.LITERAL) public interface ITFConverterDollar extends Remote { @WebMethod(operationName="dollarToEuro", action="urn:converterdollar") @WebResult(name="return") public double dollarToEuro(double value) throws java.rmi.RemoteException; @WebMethod(operationName="euroToDollar", action="urn:converterdollar") @WebResult(name="return") public double euroToDollar(double value) throws java.rmi.RemoteException;
220
}
221
223
Exemplo TimeZone
224
@WebService(endpointInterface = "ws_timezone.ITFTimeZone") public class MyTimeZone { private Calendar cal; private TimeZone timezone_current; public MyTimeZone() throws RemoteException { super(); timezone_current = TimeZone.getDefault(); cal = Calendar.getInstance(timezone_current); // create an object from Calendar } public String getDate() { cal = Calendar.getInstance(timezone_current);// create a new instance String msg = timezone_current.getID() + "\n"; msg = msg + "date:" + (cal.get(cal.MONTH) + 1) + "/" + cal.get(cal.DAY_OF_MONTH) + "/" + cal.get(cal.YEAR); return msg; }
226
227
@WebService(targetNamespace = "http://leserc.org", name="timezone") @SOAPBinding(style=SOAPBinding.Style.RPC, use=SOAPBinding.Use.LITERAL) public interface ITFTimeZone extends Remote { @WebMethod(operationName="getDate", action="urn:timezone") @WebResult(name="return") public String getDate() throws RemoteException; @WebMethod(operationName="getHelp", action="urn:timezone") @WebResult(name="return") public String getHelp() throws RemoteException;
229
230
231
232
233
234
235
237
238
+doGet (HttpServletRequest request,HttpServletResponse response):void +getServletInfo(): String ConverterResp +doGet(HttpServletRequest request, HttpServletResponse response):void +getServletInfo():String +converter(String from, String to, double value):double +createStub():Converterdollar
239
240
242
} catch (Exception e) {
243
244
245
246
247
Travel Agency
Airlines
Internet/ Intranet
RentCar Client
Hotel 248
Importncia da composio
Um servio Web complexo pode ser formado partir de outros servios Web simples; Permite a reutilizao de servios; A evoluo de um sistema pode ser obtida com a insero de novos servios; O cliente somente percebe o servio composto, no tendo nenhuma interao direta com os servios simples.
249
ConverterUniv
ConverterRealDollar
Internet/ Intranet
ClientConverterUniv
ConverterDollarEuro
250
251
252
254
255
257
C:\Exemplos_JWSDP2.0\ConverterUniversal>ant run Buildfile: build.xml run: [java] salary: 5500.0 $ -> 11770.0 reais [java] salary: 5500.0 $ -> 4673.691366417403 euros BUILD SUCCESSFUL
258
259
260
262
265
266
explcita de processo:
O processo executado pelo servio composto est definido dentro do prprio cdigo (dependente da linguagem de programao). Complexidade composto. no desenvolvimento do servio
Difcil de manipular e alterar para atender novos requisitos. Inadequado para aplicaes B2B, pois no permite escalabilidade.
267
servios Web:
A composio de SW precisa ser definida independente de linguagem de programao. Do ponto de vista do cliente, o servio composto deve ser visto como um nico servio Web. Necessidade de uma nova linguagem de modelagem de processo para suportar a composio de servios Web. Esta linguagem de composio deve suportar o paralelismo, controle de fluxo, eventos, manipular excees, etc. Esta linguagem deve ser executada por um motor de 268 execuo que seja escalvel.
269
XLANG
Sequential and Parallel control flow Long-running transactions Correlation messages Exception handling
WSFL
Flow model: Actvities Control Global model
BPEL
270
BPEL
WS-C.
Quality of Service
WSDL
WS-Policy
Description
SOAP, WS-Addressing
JMS,...
Messaging Transport
271
272
273
Application A
Application B
Suporte a EAI
(Enterprise Application Integration)
274
activity
<receive> <reply> <invoke> <assign> <throw> <terminate> <wait> <empty> <sequence> <switch> <while> <pick> <flow> <scope> <compensate>
275
BPEL Exemplo
276
BPEL Exemplo
277
BPEL Exemplo
278
BPEL - PartnerLink
<partnerLinks>? <!-- Note: At least one role must be specified. --> <partnerLink name="ncname" partnerLinkType="qname" myRole="ncname"? partnerRole="ncname"?>+ </partnerLink> </partnerLinks>
279
BPEL - Partner
280
BPEL - Variable
281
BPEL - correlationSets
<correlationSets>? <correlationSet name="ncname" properties="qname-list"/>+ </correlationSets>
282
BPEL - faultHandlers
<faultHandlers>? <!-- Note: There must be at least one fault handler or default. --> <catch faultName="qname"? faultVariable="ncname"?>* activity </catch> <catchAll>? activity </catchAll> </faultHandlers>
283
BPEL - compensationHandler
<compensationHandler>? activity </compensationHandler>
284
BPEL - activity
Comunicao Atribuio Controle de fluxo
<assign>
<switch> <while>
Outras
<sequence> <flow>
<scope> <compensate>
285
BPEL - eventHandlers
<eventHandlers>? <!-- Note: There must be at least one onMessage or onAlarm handler. -> <onMessage partnerLink="ncname" portType="qname" operation="ncname" variable="ncname"?> <correlations>? <correlation set="ncname" initiate="yes|no"?>+ <correlations> activity </onMessage> <onAlarm for="duration-expr"? until="deadline-expr"?>* activity </onAlarm> </eventHandlers>
286