Meu Cliente do Web Service Jax-ws não faz busca por registros

6 respostas
D

Aluno.java

package pojo;
import java.io.Serializable;
public class Aluno implements Serializable {
	private static final long serialVersionUID = 1L;
	private int matricula;
	private String nome;
	private Endereco endereco;
	private Curso curso;

	public Aluno() {

	}

	public Aluno(int matricula, String nome, Endereco endereco, Curso curso) {
		super();
		if (!nome.isEmpty())
		{
			this.matricula = matricula;
			this.nome = nome;
			this.endereco = endereco;
			this.curso = curso;	
		}
	}

	public int getMatricula() {
		return matricula;
	}

	public void setMatricula(int matricula) {
		this.matricula = matricula;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

}

AlunoDAO.java

import java.util.ArrayList;
import java.util.List;

import pojo.Aluno;
import pojo.Curso;
import pojo.Disciplina;
import pojo.Endereco;


public class EscolaDAO {

	private List<Aluno> alunos;
	private List<Curso> cursos;
	private List<Disciplina> disciplinas;

	private static EscolaDAO instance;

	public EscolaDAO() {
		alunos = new ArrayList<Aluno>();
		cursos = new ArrayList<Curso>();
		disciplinas = new ArrayList<Disciplina>();
		Endereco e1 = new Endereco("Rua A", 123, "casa 2", "Jd. Silva",
				"Caxias", "RJ", "12345");
		Curso c1 = new Curso(11, "SI");
		Aluno f1 = new Aluno(123, "Forrest Gump", e1, c1);
		Disciplina d1 = new Disciplina(99, "Java 1", c1);
		alunos.add(f1);
		cursos.add(c1);
		disciplinas.add(d1);
	}

	public static EscolaDAO getInstance() {
		if (instance == null) {
			instance = new EscolaDAO();
		}
		return instance;
	}

	public void addAluno(Aluno f) {
		alunos.add(f);
	}

	public Aluno updateAluno(Aluno alunoNovo) {
		for (Aluno aluno : alunos) {
			if (aluno.getMatricula() == alunoNovo.getMatricula()) {
				alunos.remove(aluno);
				alunos.add(alunoNovo);
				return alunoNovo;
			}
		}
		return null;
	}

	public List<Aluno> getAlunos() {
		return alunos;
	}

	public Aluno getAluno(int codAluno) {
		for (Aluno aluno : alunos) {
			if (aluno.getMatricula() == codAluno) {
				return aluno;
			}
		}
		return null;
	}
}

AlunoService.java

import java.util.List;

import pojo.Aluno;
import pojo.Curso;
import pojo.Disciplina;

public class EscolaService{
	private EscolaDAO dao;

	public EscolaService() {
		this.dao = EscolaDAO.getInstance();
	}
	
	public List<Aluno> listarAlunos(){
		return dao.getAlunos();
	}
	
	public Aluno buscarAluno(int matricula){
		return dao.getAluno(matricula);
	}
	
	public Aluno cadastrarAluno(Aluno aluno){
		dao.addAluno(aluno);
		return aluno;
	}
	
	public Aluno alterarAluno(Aluno aluno){
		dao.updateAluno(aluno);
		return aluno;
	}
	
	public boolean removerAluno(int matricula){
		return dao.removeAluno(matricula);
	}
}

BuscaAlunoWS.java

@WebService
public class BuscaAlunoWS
{
	private int matricula;
	@WebMethod
	public void buscaAluno(@WebParam(name="aluno") Aluno aluno)
	{
		EscolaService es= new EscolaService();
		aluno= es.buscarAluno(matricula);
		
	}

BuscaAlunoCliente.java

import aluno.Aluno;

import aluno.BuscaAlunoWS;
import aluno.BuscaAlunoWSService;

public class BuscaAlunoCliente {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	
		Aluno aluno = new Aluno();
		aluno.setMatricula(1);
		
		BuscaAlunoWSService servico = new BuscaAlunoWSService();
		BuscaAlunoWS port = servico.getBuscaAlunoWSPort();
		port.buscaAluno(aluno);
		
		
		
	

	}
}

Já gerei as classes com WSIMPORT
O que está errado nesse código ? como faço isso funcionar?
Fico muito agradecido a quem puder me ajudar…já que a maioria dos artigos que encontro por aí, são coisas bem básicas só dá pra aprender 6O%.

6 Respostas

A

cara,

seu metodo buscaAluno da classe BuscaAlunoWS deve retornar o aluno e vc deve passar o numero da matriculo como paramentro.

t+

D

E como ficaria? pq já tentei de várias formas

A

faz o seguinte

@WebService
public class BuscaAlunoWS
{
	@WebMethod
	public Aluno buscaAluno(@WebParam(name="matricula") int matricula)
	{
		return new EscolaService().buscarAluno(matricula);
	}

t+

D

ok

D

@WebMethod public Aluno alteraAluno(@WebParam(name="aluno") Aluno aluno) { return new EscolaService().alterarAluno(aluno) ; }

@WebMethod
public boolean removeAluno(@WebParam(name="matricula") int matricula)
	{
		 
		       return new EscolaService().removerAluno(matricula);  
		     
	}
@WebMethod
	 public Aluno cadastraAluno(@WebParam(name="aluno") Aluno aluno)  
    {  
        return new EscolaService().cadastrarAluno(aluno) ; 
    }

Estou me baseando no exemplo que vc me passou , ve se está certo ae fazendo o favor!

A

cara,

não sei qual o intuito da sua aplicação, mas nao seria melhor vc passar como parametro a matricula e ter como retorno o Aluno, como te monstrei no exemplo.

t+

Criado 14 de outubro de 2011
Ultima resposta 17 de out. de 2011
Respostas 6
Participantes 2