• Nenhum resultado encontrado

Web Services em Java. Web Services JAX-WS. NetBeans 5.5. Criação de WS no NetBeans 5.5. Criação de WS no NetBeans 5.5

N/A
N/A
Protected

Academic year: 2021

Share "Web Services em Java. Web Services JAX-WS. NetBeans 5.5. Criação de WS no NetBeans 5.5. Criação de WS no NetBeans 5.5"

Copied!
6
0
0

Texto

(1)

Instrutor : Adilson Vahldick

Web Services

Pós-Graduação em

Tecnologias para o Desenvolvimento de

Aplicações WEB

Prof. Adilson Vahldick

Adilson Vahldick

Web Services em Java

• JAX-WS (Java API for XML Web Services):

– Esconde a complexidade em montar um

envelope SOAP

– Converte os envelopes em RPC

– É uma tecnologia disponível a partir do JEE5.0

– Utiliza anotações (uma novidade da versão 5

do Java)

Adilson Vahldick

JAX-WS

Adilson Vahldick

NetBeans 5.5

• Faça o download no endereço abaixo

– Com o SDK do Java

• http://java.sun.com/javase/downloads/netbeans.html

– Sem o SDK do Java

• http://www.netbeans.info/downloads/index.php

Adilson Vahldick

Criação de WS no NetBeans 5.5

• [Arquivo] [Novo Projeto]

1 2 3 Adilson Vahldick

Criação de WS no NetBeans 5.5

2 1 3 4

(2)

Adilson Vahldick

Criação de WS no NetBeans 5.5

• [Arquivo] [Novo Arquivo]

1 2 3 Adilson Vahldick

Criação de WS no NetBeans 5.5

1 2 3 Adilson Vahldick

JAX-WS

@WebService()

public class CalculoBasico {

}

Adilson Vahldick

Criação de WS no NetBeans 5.5

1 2

Criação de WS no NetBeans 5.5

1 4 2 3 5 6

JAX-WS

@WebService()

public class CalculoBasico {

@WebMethod

public int somar(

@WebParam(name = "x")

int x,

@WebParam(name = "y")

int y) {

return x + y;

}

}

(3)

Adilson Vahldick

Iniciar o Servidor

2 1 3 Adilson Vahldick

Implantar a Aplicação

1 2 Adilson Vahldick

Testes

• Aplicação no ar

http://localhost:8084/AplicacaoWeb

• Web Service

http://localhost:8084/AplicacaoWeb/CalculoBasico

Adilson Vahldick

Testes no NetTool

• URL: http://localhost:8084/AplicacaoWeb/CalculoBasico

• [Add header]: Content-Type ; text/xml

<soap:Envelope

xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:tns="http://matematica/">

<soap:Body>

<tns:somar>

<x>10</x>

<y>2</y>

</tns:somar>

</soap:Body>

</soap:Envelope>

Adilson Vahldick

Criar um cliente de WS

• [Arquivo] [Novo Projeto]

1 2 3 Adilson Vahldick

Criar um cliente de WS

1 2

(4)

Adilson Vahldick

Criar um cliente de WS

• [Arquivo] [Novo Arquivo]

1 2 3 Adilson Vahldick

Criar um cliente de WS

1 2 4 3 Adilson Vahldick

Criar um cliente de WS

Duplo clique Adilson Vahldick

Criar um cliente de WS

package aplicacaocliente; import cliente.*; public class Main {

public static void main(String[] args) throws Exception { CalculoBasicoService cb = new CalculoBasicoService(); CalculoBasico port = cb.getCalculoBasicoPort(); System.out.println(port.somar(10, 2)); } }

Executar classe

1 2

Especificar endereço de acesso

package aplicacaocliente;

import cliente.*; import java.net.URL;

import javax.xml.namespace.QName; public class Main {

public static void main(String[] args) throws Exception { CalculoBasicoService cb = new CalculoBasicoService(

new URL("http://localhost:8084/AplicacaoWeb/CalculoBasico?wsdl"), new QName("http://matematica/", "CalculoBasicoService"));

CalculoBasico port = cb.getCalculoBasicoPort(); System.out.println(port.somar(10, 2)); }

(5)

Adilson Vahldick

JAXB

• Java Architecture for XML Bindings

• Utilizado para converter XML em objetos

Java e vice-versa

• Suporta anotações

Adilson Vahldick

Objetos como retorno

• Selecione o Projeto [AplicacaoWeb]

• Selecione [Pacotes de Código-Fonte]

• Selecione [matematica]

• Botão direito [Novo][Classe Java]

• Digite em Nome da Classe: Resultado

Adilson Vahldick

Objetos como retorno

package matematica; import javax.xml.bind.annotation.*;

@XmlType

public class Resultado { private int valor; private String texto; public Resultado() { } public int getValor() { return valor; }

public void setValor(int valor) { this.valor = valor; } public String getTexto() { return this.texto; }

public void setTexto(String texto) { this.texto = texto.toUpperCase();} }

Adilson Vahldick

Objetos como retorno

public class CalculoBasico {

....

@WebMethod

public Resultado somarEx(

@WebParam(name = "x")

int x,

@WebParam(name = "y")

int y) {

Resultado r = new Resultado();

r.setTexto("adilson");

r.setValor(x + y);

return r;

}

}

Adilson Vahldick

Objetos como retorno

• Implante novamente a aplicação WEB

• No projeto [AplicacaoCliente]

• Selecione [Referências de Serviços Web]

• Selecione [CalculoBasico]

• Botão direito [Atualizar Cliente]

Adilson Vahldick

Do lado cliente

package aplicacaocliente; import cliente.*; public class Main {

public static void main(String[] args) throws Exception { CalculoBasicoService cb = new CalculoBasicoService(); CalculoBasico port = cb.getCalculoBasicoPort(); System.out.println(port.somar(10, 2));

Resultado r = port.somarEx(10, 5);

System.out.println(r.getTexto() + "=" + r.getValor());

} }

(6)

Adilson Vahldick

Vetor como retorno

public class CalculoBasico {

…..

@WebMethod

public Resultado[] somarVarios(@WebParam(name = "x")int x,

@WebParam(name = "y")int y, @WebParam(name = "z")int z) { Resultado[] r = new Resultado[3];

r[0] = new Resultado();

r[0].setTexto("x + y"); r[0].setValor(x + y); r[1] = new Resultado(); r[1].setTexto("x + z"); r[1].setValor(x + z); r[2] = new Resultado(); r[2].setTexto("y + z"); r[2].setValor(y + z); return r; } } Adilson Vahldick

Lista como retorno

import java.util.*;

public class CalculoBasico { …

@WebMethod

public List<Resultado> somarVariosEx(@WebParam(name = "x") int x,

@WebParam(name = "y")int y, @WebParam(name = "z")int z) { List<Resultado> res = new ArrayList<Resultado>();

Resultado r0 = new Resultado(); r0.setTexto("x + y"); r0.setValor(x + y); res.add(r0);

Resultado r1 = new Resultado(); r1.setTexto("x + z"); r1.setValor(x + z); res.add(r1);

Resultado r2 = new Resultado(); r2.setTexto("y + z"); r2.setValor(y + z); res.add(r2); return res; } } Adilson Vahldick

Do lado cliente

import java.util.*;

public class Main {

public static void main(String[] args) throws Exception { .... List<Resultado> rs = port.somarVarios(1, 2, 4); for (Resultado rr:rs) { System.out.println(rr.getTexto() + "=" + rr.getValor()); } rs = port.somarVariosEx(1, 2, 4); for (Resultado rr:rs) { System.out.println(rr.getTexto() + "=" + rr.getValor()); } } } Adilson Vahldick

Objetos como Parâmetro

@WebMethod

public int somarObjeto(@WebParam(name = "obj")Resultado r,

@WebParam(name = "x") int x) { return r.getValor() + x; }

@WebMethod

public int somarObjetos(@WebParam(name = "obj")List<Resultado> lista) { int retorno = 0;

for (Resultado r:lista) { retorno += r.getValor(); }

return retorno; }

Do lado cliente

Resultado param = new Resultado();

param.setValor(100);

System.out.println(port.somarObjeto(param, 10));

List lista = new ArrayList<Resultado>();

lista.add(param);

lista.add(param);

Referências

Documentos relacionados

No plano internacional, esse movimento culminou, em 1977, com o estabelecimento, pela OMS, da meta de Saúde para Todos no Ano 2000, e a definição, pela Conferência Internacional

Os ativos específicos para os transportadores são de fácil adaptação para atender outras empresas (k = 0), no caso o caminhão de ração ou graneleiro (este último

Produto Com base nos dados disponíveis, os critérios de classificação não

De fato, o próprio relatório enfatiza que o critério adotado em seu embasamento para analisar o jovem é biológico, &#34;pouco importando o seu desenvolvimento

O objetivo dessa etapa é analisar o uso de ferramentas tecnológicas nos processos e gestão de projetos pelas empresas que compõem a amostra a partir da análise

As pontuações atribuídas a cada um dos parâmetros avaliados indicam o estado de saúde do sistema, sendo que notas maiores refletem um estado de conservação, enquanto

Parágrafo Quarto: O FORNECEDOR poderá transferir os créditos remanescentes do cartão, em qualquer das ocorrências do caput desta cláusula, assim como no caso

O contrato-programa para 2009 continuará a incluir os seguintes programas específicos: melhoria da resposta na área dos Cuidados Continuados Integrados - Unidades de