+ All Categories
Home > Documents > JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 –...

JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 –...

Date post: 07-Jun-2020
Category:
Upload: others
View: 5 times
Download: 0 times
Share this document with a friend
25
JSR 172 – Webservices Aula 8 Marcio Seiji Oyamada
Transcript
Page 1: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

JSR 172 – Webservices

Aula 8

Marcio Seiji Oyamada

Page 2: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 67

Webservice

�Fornecer acesso a serviços através da tecnologia html+xml

– Interface para acesso a serviços

– Comunicação

– Interoperabilidade

�Elementos da tecnologia

– SOAP (Simple Object Access Protocol)

– UDDI (Universal Description, Discovery and Integration)

– WSDL (Web Services Description Language)

�Exemplos de webservices

– Amazon

– Google

– Yahoo

Page 3: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 68

Webservice + JavaME

Page 4: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 69

JSR 172

�Stub

– Inicializa propriedades para a

chamada remota

– Codifica parâmetros de entrada

– Realiza a chamada do serviço

remoto

– Decodifica o retorno

Page 5: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 70

JSR 172 – Características e Limitações

�Obedece ao padrão WS-I Basic Profile

�Suporta SOAP 1.1

�Suporta qualquer protocolo de transporte

�Suporta os seguintes tipos de dados

– boolean, byte, short, int, long, float, double, String

– arrays de tipos primitivos

– tipos complexos (estruturas contendo tipos primitivos e

complexos)

Page 6: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 71

JSR 172 – Características e Limitações(2)

�Suporta somente mensagens: Document/Literal. Não suporta a representação Encoded

�Não suporta mensagens SOAP com anexos

�Não suporta manipuladores de mensagens

�O dispositivo não pode ser provedor de webservices

�Não suporta UDDI (serviço de descoberta)

Page 7: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 72

Gerador de Stub

�Gera os stubs e classes necessárias para chamar o webservice

– Entrada: Arquivo WSDL

– Saida: conjunto de classes para utilizar o WebService

Page 8: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 73

Gerando stubs

�Plataformas Java -> WTK -> Utilitários -> Gerador de stub

Page 9: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 74

Utilizando o WebService

public class MIDletCalculadora extends MIDlet implements CommandListener, Runnable {

public void commandAction(Command command, Displayable displayable) {

if (displayable == form) {

if (command == okCommand) {

Thread t= new Thread(this);

t.start();

}

}

}

public void run(){

try {

if (service == null) {

service = new WebCalculadora_Stub();

service._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:8084/PedagioWebService/WebCalculadora");

}

int resultado = service.soma(10, 20);

Form f= getForm();

f.append(String.valueOf(resultado));

} catch (RemoteException ex) {

ex.printStackTrace();

}

}

//Atenção, demais métodos do MIDlet omitidos

Page 10: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 75

Utilizando o WebService

public class MIDletCalculadora extends MIDlet implements CommandListener, Runnable {

public void commandAction(Command command, Displayable displayable) {

if (displayable == form) {

if (command == okCommand) {

Thread t= new Thread(this);

t.start();

}

}

}

public void run(){

try {

if (service == null) {

service = new WebCalculadora_Stub();

service._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY,

"http://localhost:8084/PedagioWebService/WebCalculadora");

}

int resultado = service.soma(10, 20);

Form f= getForm();

f.append(String.valueOf(resultado));

} catch (RemoteException ex) {

ex.printStackTrace();

}

}

//Atenção, demais métodos do MIDlet omitidos

Page 11: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 76

Exercício

�Implemente um MIDlet para acessar o webservice que dado uma origem e um destino, retorna o

número de pedágios e valor total entre a origem e o

destino.

�WSDL

– http://localhost:8084/PedagioWebService/PedagioWebServ

ice?wsdl

Page 12: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

WMA – Wireless messaging

API

JSR 120

Page 13: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 78

SMS e MMS

�Método interoperável para troca de mensagens

�Funciona entre diferentes operadoras e tecnologias

�Possibilita o envio de mensagens de até 160

caracteres

�Não é necessário rede internet

�Não é necessário que o dispositivo destino esteja ligado no momento do envio

Page 14: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 79

WMA

�WMA utiliza o Generic Connection Framework

(GCF)

– Aparelhos endereçados pelo número de telefone

– Endereço: “sms://4591000000”

�Possibilita tanto o envio e o recebimento de

mensagens

Page 15: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 80

Classes WMA

�Pacote: javax.wirelles.messaging

�Classes

– Message: representa uma mensagem. Interfaces

TextMessage e BinaryMessage

– MessageConnection: conexão para envio de mensagens.

Métodos send e receive

– MessageListener: interface para tratamento de mensagens

assíncronas

Page 16: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 81

Passos para envio de uma mensagem

�Criar um conectorMessageConnection conn =

(MessageConnection) Connector.open("sms://04599009999");

�Criar uma mensagem, neste caso de textoTextMessage txtmessage = (TextMessage) conn.newMessage(

MessageConnection.TEXT_MESSAGE);

� Inicializar o textotxtmessage.setPayloadText(msgString);

�Enviar a mensagemconn.send(txtmessage);

**Utilize threads para o envio

Page 17: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 82

Testando o envio de mensagem

�Plataforma Java -> Utilitarios -> Console WMA

Page 18: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 83

Recebendo SMS

�Criar um conectorMessageConnection conn =

(MessageConnection) Connector.open("sms://:5000"); // ficará escutando na porta

5000

�Esperar pela mensagem e obter o conteúdo da mensagem

while (true) {

Message m= conn.receive();

If (m instanceof TextMessage) {

msgReceived = ((TextMessage)msg).getPayloadText();

}

}

**Utilize threads para o recebimento

Page 19: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 84

Push Registry

�Mecanismo para acionar um MIDlet automaticamente

�Acionamento através de um

– Alarme: data e hora que o MIDlet deverá ser acionado

– Conexão: tipo da conexão e filtros de recebimento

�Push registry

– Estaticamente no arquivo JAD

– Dinamicamente pela MIDlet

Page 20: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 85

Classe PushRegistry

Cancela o registro da conexãounregisterConnection( String MIDlet)

Registra uma MIDlet para responder a uma determinada conexão

registerConnection( String MIDlet, String

connection, String filter)

Registra um alarme para ser disparado a uma determinada hora

registerAlarm(String MIDlet, long time)

Retorna quais as conexões estão associadas a

MIDlet.

listConnections(booelan

active)

Retorna as MIDlets associadas a uma determinada conexão

getMIDlet(String connection)

Retorna os filtros associados com uma

determinada conexão

getFilter(String

connection)

DescriçãoMétodo

Page 21: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 86

Inserindo um PushRegistry

�No toolkit

Page 22: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 87

Tratando um evento do PushRegistry

�Na caso de SMS, implementar a interface MessageListener

�No caso de outros tipos de conexão (socket,

datagramas), utilizar o método

PushRegistry.listConnections(true), logo na

inicialização da MIDlet

– Se a resposta for nulo, a MIDlet foi inicializada

normalmente

– Senão tratar as conexões

Page 23: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 88

Tratando um SMS

public class SMSReceiver extends MIDlet implements CommandListener,MessageListener {

protected void startApp() {

String smsConnection = "sms://:" + "5000";

if (smsconn == null) {

try {

smsconn = (MessageConnection) Connector.open(smsConnection);

smsconn.setMessageListener(this);

} catch (IOException ioe) {ioe.printStackTrace();}

}

if (mForm == null) {

mForm = new Form(“SMSReceiver"); mForm.addCommand(mExitCommand);

mForm.setCommandListener(this);

}

Display.getDisplay(this).setCurrent(mForm);

}

public void notifyIncomingMessage(MessageConnection arg0) {

try {

Message m = arg0.receive();

if (m instanceof TextMessage) {

if (mForm !=null) mForm.append(((TextMessage)m).getPayloadText());

}

} catch (IOException ex) {ex.printStackTrace();}

}

//Alguns métodos foram omitidos

}

Page 24: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 89

Testando PushRegistry

�Para que PushRegistry funcione corretamente énecessário explicitamente colocar quais as

permissões necessárias para execução do MIDlet

�No Emulador utilizar o método OTA para implantar

(Propriedades projeto -> Executando)

Page 25: JSR 172 – Webservices Aula 8marcio/JavaME/JavaMEAula8.pdf · 2010-08-13 · JSR 172 – Características e Limitações Obedece ao padrão WS-I Basic Profile Suporta SOAP 1.1 Suporta

IWS'2009 - Buenos AiresPage � 90

Exercício

�Modifique o MIDlet de cadastro de aniversários e adicione um comando para que o mesmo envie um

SMS de felicitações para o(s) aniversariante(s) do

dia.


Recommended