Web Services em Java Web Services -...

6
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

Transcript of Web Services em Java Web Services -...

Page 1: Web Services em Java Web Services - inf.furb.brpaulofernando/downloads/ws/02.webservices-jaxws.pdf · 1 Instrutor : Adilson Vahldick Web Services Pós-Graduação em Tecnologias para

1

Instrutor : Adilson Vahldick

Web ServicesPó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]

12

3

Adilson Vahldick

Criação de WS no NetBeans 5.5

2

1

34

Page 2: Web Services em Java Web Services - inf.furb.brpaulofernando/downloads/ws/02.webservices-jaxws.pdf · 1 Instrutor : Adilson Vahldick Web Services Pós-Graduação em Tecnologias para

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

Adilson Vahldick

Criação de WS no NetBeans 5.5

1

4

2

3 5

6

Adilson Vahldick

JAX-WS

@WebService()public class CalculoBasico {

@WebMethodpublic int somar(

@WebParam(name = "x") int x,@WebParam(name = "y") int y) {

return x + y;}

}

Page 3: Web Services em Java Web Services - inf.furb.brpaulofernando/downloads/ws/02.webservices-jaxws.pdf · 1 Instrutor : Adilson Vahldick Web Services Pós-Graduação em Tecnologias para

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:Envelopexmlns: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

Page 4: Web Services em Java Web Services - inf.furb.brpaulofernando/downloads/ws/02.webservices-jaxws.pdf · 1 Instrutor : Adilson Vahldick Web Services Pós-Graduação em Tecnologias para

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 WSpackage 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));

}

}

Adilson Vahldick

Executar classe

1

2

Adilson Vahldick

Especificar endereço de acessopackage 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));

}

}

Page 5: Web Services em Java Web Services - inf.furb.brpaulofernando/downloads/ws/02.webservices-jaxws.pdf · 1 Instrutor : Adilson Vahldick Web Services Pós-Graduação em Tecnologias para

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 retornopackage matematica;

import javax.xml.bind.annotation.*;

@XmlTypepublic 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 {....@WebMethodpublic 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 clientepackage 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());

}

}

Page 6: Web Services em Java Web Services - inf.furb.brpaulofernando/downloads/ws/02.webservices-jaxws.pdf · 1 Instrutor : Adilson Vahldick Web Services Pós-Graduação em Tecnologias para

6

Adilson Vahldick

Vetor como retornopublic class CalculoBasico {

….. @WebMethodpublic 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 retornoimport java.util.*;public class CalculoBasico {

…@WebMethodpublic 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 clienteimport 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@WebMethodpublic int somarObjeto(@WebParam(name = "obj")Resultado r,

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

}

@WebMethodpublic int somarObjetos(@WebParam(name = "obj")List<Resultado> lista) {

int retorno = 0;for (Resultado r:lista) {

retorno += r.getValor();}return retorno;

}

Adilson Vahldick

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);System.out.println(port.somarObjetos(lista));