Você está na página 1de 6

Web Services em Java

Web Services
• JAX-WS (Java API for XML Web Services):
Pós-Graduação em
Tecnologias para o Desenvolvimento de – Esconde a complexidade em montar um
Aplicações WEB envelope SOAP
– Converte os envelopes em RPC
Prof. Adilson Vahldick
– É uma tecnologia disponível a partir do JEE5.0
– Utiliza anotações (uma novidade da versão 5
do Java)

Instrutor : Adilson Vahldick Adilson Vahldick

JAX-WS 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 Adilson Vahldick

Criação de WS no NetBeans 5.5 Criação de WS no NetBeans 5.5


• [Arquivo] [Novo Projeto]
1

2
1

3
4

Adilson Vahldick Adilson Vahldick

1
Criação de WS no NetBeans 5.5 Criação de WS no NetBeans 5.5
• [Arquivo] [Novo Arquivo] 1

3
3

Adilson Vahldick Adilson Vahldick

JAX-WS Criação de WS no NetBeans 5.5


@WebService()
public class CalculoBasico {

1
}
2

Adilson Vahldick Adilson Vahldick

Criação de WS no NetBeans 5.5 JAX-WS


@WebService()
1 public class CalculoBasico {
2

@WebMethod
4
public int somar(
3 5 @WebParam(name = "x") int x,
@WebParam(name = "y") int y) {
6
return x + y;
}

Adilson Vahldick Adilson Vahldick

2
Iniciar o Servidor Implantar a Aplicação
1
1
2
3

Adilson Vahldick Adilson Vahldick

Testes Testes no NetTool


• URL: http://localhost:8084/AplicacaoWeb/CalculoBasico
• Aplicação no ar • [Add header]: Content-Type ; text/xml
– http://localhost:8084/AplicacaoWeb
<soap:Envelope
• Web Service xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
– http://localhost:8084/AplicacaoWeb/CalculoBasico xmlns:tns="http://matematica/">
<soap:Body>
<tns:somar>
<x>10</x>
<y>2</y>
</tns:somar>
</soap:Body>
</soap:Envelope>

Adilson Vahldick Adilson Vahldick

Criar um cliente de WS Criar um cliente de WS


• [Arquivo] [Novo Projeto]
1

1 2

Adilson Vahldick Adilson Vahldick

3
Criar um cliente de WS Criar um cliente de WS
• [Arquivo] [Novo Arquivo]

1 2
2

1 3

4
3

Adilson Vahldick Adilson Vahldick

Criar um cliente de WS Criar um cliente de WS


package aplicacaocliente;

import cliente.*;

public class Main {


Duplo clique
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 Adilson Vahldick

Executar classe Especificar endereço de acesso


package aplicacaocliente;

import cliente.*;
import java.net.URL;
import javax.xml.namespace.QName;
1 public class Main {

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

Adilson Vahldick Adilson Vahldick

4
JAXB Objetos como retorno
• Java Architecture for XML Bindings • Selecione o Projeto [AplicacaoWeb]
• Utilizado para converter XML em objetos • Selecione [Pacotes de Código-Fonte]
Java e vice-versa • Selecione [matematica]
• Suporta anotações • Botão direito [Novo][Classe Java]
• Digite em Nome da Classe: Resultado

Adilson Vahldick Adilson Vahldick

Objetos como retorno Objetos como retorno


package matematica;
public class CalculoBasico {
import javax.xml.bind.annotation.*; ....
@WebMethod
@XmlType
public class Resultado { public Resultado somarEx(
@WebParam(name = "x") int x,
private int valor;
@WebParam(name = "y") int y) {
private String texto;
Resultado r = new Resultado();
public Resultado() { } r.setTexto("adilson");
r.setValor(x + y);
public int getValor() { return valor; }
public void setValor(int valor) { this.valor = valor; } return r;
}
public String getTexto() { return this.texto; } }
public void setTexto(String texto) { this.texto = texto.toUpperCase();}
}
Adilson Vahldick Adilson Vahldick

Objetos como retorno Do lado cliente


package aplicacaocliente;
• Implante novamente a aplicação WEB
import cliente.*;
• No projeto [AplicacaoCliente]
public class Main {
• Selecione [Referências de Serviços Web]
public static void main(String[] args) throws Exception {
• Selecione [CalculoBasico] CalculoBasicoService cb = new CalculoBasicoService();
CalculoBasico port = cb.getCalculoBasicoPort();
• Botão direito [Atualizar Cliente] System.out.println(port.somar(10, 2));

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


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

Adilson Vahldick Adilson Vahldick

5
Vetor como retorno Lista como retorno
import java.util.*;
public class CalculoBasico { public class CalculoBasico {
….. …
@WebMethod @WebMethod
public Resultado[] somarVarios(@WebParam(name = "x") int x, public List<Resultado> somarVariosEx(@WebParam(name = "x") int x,
@WebParam(name = "y") int y, @WebParam(name = "z") int z) { @WebParam(name = "y") int y, @WebParam(name = "z") int z) {

Resultado[] r = new Resultado[3]; List<Resultado> res = new ArrayList<Resultado>();

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

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

r[2] = new Resultado(); Resultado r2 = new Resultado(); r2.setTexto("y + z"); r2.setValor(y + z);
r[2].setTexto("y + z"); r[2].setValor(y + z); res.add(r2);

return r; return res;


} }
} }
Adilson Vahldick Adilson Vahldick

Do lado cliente Objetos como Parâmetro


import java.util.*; @WebMethod
public int somarObjeto(@WebParam(name = "obj")Resultado r,
public class Main { @WebParam(name = "x") int x) {
return r.getValor() + x;
public static void main(String[] args) throws Exception { }
....
List<Resultado> rs = port.somarVarios(1, 2, 4); @WebMethod
for (Resultado rr:rs) { public int somarObjetos(@WebParam(name = "obj")List<Resultado> lista) {
System.out.println(rr.getTexto() + "=" + rr.getValor());
} int retorno = 0;
for (Resultado r:lista) {
rs = port.somarVariosEx(1, 2, 4); retorno += r.getValor();
for (Resultado rr:rs) { }
System.out.println(rr.getTexto() + "=" + rr.getValor()); return retorno;
} }
}
}

Adilson Vahldick 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));

Adilson Vahldick

Você também pode gostar