110 likes | 257 Views
TDNE. Serviço de Tradução. Classe Entrada – Representa uma entrada do dicionário. public void setTraducao(String traducao) { this.traducao = traducao; } public void setTermo(String termo) { this.termo = termo; } public String getTraducao() { return traducao; } }.
E N D
TDNE Serviço de Tradução
Classe Entrada – Representa uma entrada do dicionário public void setTraducao(String traducao) { this.traducao = traducao; } public void setTermo(String termo) { this.termo = termo; } public String getTraducao() { return traducao; } } public class Entrada { private String termo; private String traducao; public Entrada() { } public Entrada(String termo, String traducao) { this.termo = termo; this.traducao = traducao; } public String getTermo() { return termo; }
Classe ServicoDeTraducao public class ServicoDeTraducao { Tradutor tradutor; public ServicoDeTraducao() { Entrada en; tradutor = new Tradutor(); en = new Entrada("Bom dia", "Good morning"); tradutor.insereTermo(en); en = new Entrada("Boa tarde", "Good Afternoon"); tradutor.insereTermo(en); en = new Entrada("Boa noite", "Good evening"); tradutor.insereTermo(en); } public String traduz(String termo) { return tradutor.traducaoDe(termo); } }
Classe Tradutor import java.util.Hashtable; public class Tradutor extends Hashtable{ public Tradutor() { } public void insereTermo(Entrada entrada) { this.put(entrada.getTermo(),entrada); } public void removeTermo(String termo) { this.remove(termo); } public String traducaoDe(String termo) { Entrada en = (Entrada) this.get(termo); return en.getTraducao(); } }
Permitindo Envio e Recebimento de tipos complexos • Para permitir a troca de tipos complexos um serviço e seus clientes deve compartilhar a definição destes tipos. • O Arquivo WSDD permite especificar quais os tipos complexos serão utilizados pelo serviço. • Somente os tipos definidos pelo serviço podem ser utilizados
Definindo tipos complexos nos descritores WSDD: beanMapping <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="Supplier2" provider="java:RPC"> <parameter name="className" value="supplier2.services.Supplier2ServiceFacade"/> <parameter name="allowedMethods" value="*"/> <parameter name="scope" value="application"/> <beanMapping qname="myNS:Client" xmlns:myNS="urn:Supplier2" languageSpecificType="java:supplier2.entity.Client"/> <beanMapping qname="myNS:Item" xmlns:myNS="urn:Supplier2" languageSpecificType="java:supplier2.entity.Item"/> <beanMapping qname="myNS:Order" xmlns:myNS="urn:Supplier2" languageSpecificType="java:supplier2.entity.Order"/> </service> </deployment>
Definindo tipos complexos nos descritores WSDD: beanMapping • elemento beanMapping permite a especificação de um tipo • O tipo fica conhecido pelo seu qname (adicionado de seu namespace) • O Atributo languageSpecificType associa o tipo a um tipo especifico da linguagem associado ao serviço. A linguagem e a classe específica que representa o serviço são indicados.
Utilizando tipos complexos • Quando o aplicativo WSDL2Java é executado para gerar os stubs de um serviço, todos os tipos definidos com o elemento beanMapping são obtidos e o código local é gerado para estes objetos. • Os objetos utilizados obedecem o formato javabean.
Utilizando Tipos complexos • Com os tipos localmente traduzidos para a linguagem local do cliente, operações envolvendo estes tipos pode ser feitas naturalmente como se fossem estruturas locais. • Outros detalhe: O atributo scope permite criar aplicações persistentes no serviço: <parameter name="scope" value="application"/> • Utilizando o valor application para scope o serviço é executado uma vez e só termina quando o serviço pára.
Exercício • Construa uma classe serviço com os seguintes métodos públicos: • Matricula(Aluno aluno); • Insere um aluno em uma tabela HashTable • Aluno Recupera(String nome); • recupera o aluno da tabela, tendo passado o campo nome do aluno e retorna para o cliente o objeto inteiro.
Exercício • O Aluno terá os seguinte campos: • Nome: String • Curso: String • Telefone: Integer • Ano de ingresso: Integer • O objeto aluno deve ser do tipo Javabean • Construa um cliente que: matricule alunos e procure alunos no serviço.