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!
-
Instalei o Tomcat 6.0
-
Baixei o Axis 1.4.
-
Configurei o Axis 1.4 conforme tutorial.
-
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;
}
}
public class Servico {
public int soma(int valor1, int valor2) {
return valor1 + valor2;
}
}
- 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!
-
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
-
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!