Erro no WebService

1 resposta
augustopovoa

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;   
       }   
    }
  1. 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!

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!

  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  
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  
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!

1 Resposta

Rafael_Nunes

Sugestão 1 - Use o Axis2
Sugestão 2 - Dá uma lida sobre REST, aposto que você não precisa de SOAP e toda essa parafernalha para o que vai fazer.

E este erro dá em que momento? Na execução do WS?

Criado 7 de julho de 2008
Ultima resposta 7 de jul. de 2008
Respostas 1
Participantes 2