Axis 1.4 - WebService com Banco de Dados

4 respostas
A

Bom dia a todos,

Presciso fazer um Webservice usando o AXIS que traga dados do Banco de Dados.
Li alguns tutorias e consegui faze-lo, porém um exemplo, com somente um metodo que faz uma soma!

1) Instalei o Tomcat 6.0
2) Baixei o Axis 1.4.
3) Configurei o Axis 1.4 conforme tutorial.

4) Fiz a Classe Servico. java e remoei para jws e coloquei na devida pasta.
public class Servico {
	   public int soma(int valor1, int valor2) {
	      return valor1 + valor2;
	   } 
	}
5) Fiz a Classe Cliente.java
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;

public class Cliente {
    public static void main(String[] args) throws Exception {
        // Endereço, local onde encontra-se o Web Service
        String local = "http://localhost:8080/axis/Servico.jws";
        
        // Criando e configurando o serviço
        Call call = (Call) new Service().createCall();
        // Configurando o endereço.
        call.setTargetEndpointAddress(local);
        // Marcando o método a ser chamado. 
        call.setOperationName("soma");
        
        // Parâmetros da função soma.
        Object[] param = new Object[]{new Integer(2),new Integer(4)};
        // Retorno da Função
        Integer ret = (Integer)call.invoke(param);
        
        // Imprime o resultado: ret = 2 + 4.
        System.out.println("Resultado da soma : " + ret);
    }
}

Otimo! Funcionou! :P

O que eu já tentei de varias formas e não consegui foi transformar em Webservice um Classe que traz dados do Banco de Dados. :?:
Vou Descrever o que já fiz e não funcionou! :shock:

1) Já tenho connector do mysql no lib do meu tomcat.(por via das duvidas coloquei o mesmo na pasta " D:\Java\Arquivos_de_Programa\Tomcat6\webapps\axis\teste " é a pasta onde estado o .jws

2) Minhas Classes que estão dentro de " D:\Java\Arquivos_de_Programa\Tomcat6\webapps\axis\teste " são:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
	public static Connection getConnection() throws SQLException {
		try {
				Class.forName("com.mysql.jdbc.Driver");
				System.out.println("Conectando ao banco");
				return DriverManager.getConnection("jdbc:mysql://localhost/teste", "root", "x");
			} catch (ClassNotFoundException e) {
				throw new SQLException(e.getMessage());
			}
	}
}
public class Contato {

		private Long id;
		private String nome;
		private int idade;
		public Long getId() {
			return id;
		}
		public void setId(Long id) {
			this.id = id;
		}
		public String getNome() {
			return nome;
		}
		public void setNome(String nome) {
			this.nome = nome;
		}
		public int getIdade() {
			return idade;
		}
		public void setIdade(int idade) {
			this.idade = idade;
		}
	
		
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;



import com.mysql.jdbc.ResultSet;


public class ContatoDAO {
	// a conexão com o banco de dados
	private Connection connection;
	
	public ContatoDAO() {
		try {
			this.connection = ConnectionFactory.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
		
	public int getIdade(Long id){
		int idade;
		try{
			PreparedStatement stmt = this.connection.prepareStatement("select * from contatos where id=?");
			stmt.setLong(1,id);
			ResultSet rs = (ResultSet) stmt.executeQuery();
			rs.next();
				
			idade =rs.getInt("idade");
					
			rs.close();
			stmt.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			idade = 0;
		}			
			
		return idade;
	}
	
	
}
public class PegaIdade {
		
	public PegaIdade(){
	}
	
	public int getIdade(){
		// pronto para gravar
		Contato contato = new Contato();
		contato.setId(Long.parseLong("1"));

		// grave nessa conexão!!!
		ContatoDAO dao = new ContatoDAO();

		// método elegante
		contato = dao.getLista(contato);
		
		return contato.getIdade();
		
	}
	
}

3)Renomei a classe PegaIdade.java para .jws e deixei as outras como que estão no mesmo diretorio(D:\Java\Arquivos_de_Programa\Tomcat6\webapps\axis\teste) sem renomear(Deixei como .java mesmo. Ex.: Contato.java)

4)Executei a url http://localhost:8080/axis/teste/PegaIdade.jws?wsdl e apareceu o seguinte erro:

AXIS error
Sorry, something seems to have gone wrong... here are the details:

Fault - Error while compiling:  D:\Java\Arquivos_de_Programa\Tomcat6\webapps\axis\WEB-INF\jwsClasses\teste\PegaIdade.java
AxisFault
 faultCode: {http://xml.apache.org/axis/}Server.compileError
 faultSubcode: 
 faultString: Error while compiling:  D:\Java\Arquivos_de_Programa\Tomcat6\webapps\axis\WEB-INF\jwsClasses\teste\PegaIdade.java
 faultActor: 
 faultNode: 
 faultDetail: 
	{}Errors:Error compiling D:\Java\Arquivos_de_Programa\Tomcat6\webapps\axis\WEB-INF\jwsClasses\teste\PegaIdade.java:
Line 8, column -1:  cannot find symbol
Line 8, column -1:  cannot find symbol
Line 12, column -1:  cannot find symbol
Line 12, column -1:  cannot find symbol
Line 0, column 0: 
4 errors

5)Renomei a classe PegaIdade.java para .jws e todas as outras(ConnectionFactory.jws,Contato.jws,ContatoDAO.jws) que estão no mesmo diretorio(D:\Java\Arquivos_de_Programa\Tomcat6\webapps\axis\teste)

6)Executei a url http://localhost:8080/axis/teste/PegaIdade.jws?wsdl e mesmo assim apareceu o seguinte erro:

AXIS error
Sorry, something seems to have gone wrong... here are the details:

Fault - Error while compiling:  D:\Java\Arquivos_de_Programa\Tomcat6\webapps\axis\WEB-INF\jwsClasses\teste\PegaIdade.java
AxisFault
 faultCode: {http://xml.apache.org/axis/}Server.compileError
 faultSubcode: 
 faultString: Error while compiling:  D:\Java\Arquivos_de_Programa\Tomcat6\webapps\axis\WEB-INF\jwsClasses\teste\PegaIdade.java
 faultActor: 
 faultNode: 
 faultDetail: 
	{}Errors:Error compiling D:\Java\Arquivos_de_Programa\Tomcat6\webapps\axis\WEB-INF\jwsClasses\teste\PegaIdade.java:
Line 8, column -1:  cannot find symbol
Line 8, column -1:  cannot find symbol
Line 12, column -1:  cannot find symbol
Line 12, column -1:  cannot find symbol
Line 0, column 0: 
4 errors

Ja li muita coisa net(3 dias sem parar!rsrs), agradeço a todos que leram estes topico.
Todos exemplos e Dicas me ajudaram muito.

Obrigado!

4 Respostas

M

Sei que este tópico está meio velho. Porém eu estou com o mesmo problema.
Você conseguiu resolver isto?

M

Cara vc conseguiu resolver isso,
to com o mesmo problema!!!

A

mesmo problema usando as mesmas tecnologias e o mesmo fonte ?

M

Sim!!!

Pelo q eu entendi do erro, a classe pega Idade, esta dando erro na linha

Contato contato new Contato();

e

ContatoDAO dao = new ContatoDAO();
Criado 7 de julho de 2008
Ultima resposta 20 de mai. de 2012
Respostas 4
Participantes 4