[size=24][/size]
Olá pessoal!
Bom, já encontrei a solução para muitos problemas por aqui no GUJ, agora é minha vez de perguntar!
Estou finalizando um sistema que posteriormente será locado para clientes. Esse sistema funcionará com licensa de uso a ser paga mensalmente. Para controlar quem paga e quem deixa de pagar (restringindo o acesso aos inadimplentes) utilizaremos um webService que faz uma consulta simples e retorna um Boolean correspondente à disponibilidade do sistema para uso por determinado usuário.
Código para Login.jws:
public class Login {
public Boolean autoriza(String username, String senha){
System.out.println("tentando logar: "+System.currentTimeMillis());
if (username.equals("francisco") && senha.equals("fracisquinho")){
System.out.println("logado: "+System.currentTimeMillis());
return new Boolean(true);
}
System.out.println("erro login: "+System.currentTimeMillis());
return new Boolean(false);
}
}
Instalei o pacote axi no TomCat 5.5, implementei a classe do webService (Login.java), a renomeei para Login.jws. Fiz o teste do webService. Funciona perfeitamente, tanto em uma aplicação java simples do Eclipse puro quanto em um projeto Dinâmico da Web (Rational Software Architect), rodando em WAS.
Código para UseWS.java (cliente):
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class UseWS {
public static void main(String[] args) {
autorizado();//
}
public static boolean autorizado() {
try {
String urlWS = "http://192.168.0.44:8080/axis/Login.jws";
Object[] params = { new String("francisco"), new String("fracisquinho") };
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(urlWS);
call.setOperationName("autoriza");
Boolean ret = (Boolean) call.invoke(params);
System.out.println("Resultado: " + ret);
return ret.booleanValue();
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
}
}
Porém, quando importo a classe cliente da aplicação Java simples para o projeto do eclipe puro que contém o sistema que irá chamar o webService (no caso é um sistema J2SE, interface SWING, conexão a banco DB2), ele não funciona. É feita a conexão com o servidor do web service (gera log no TomCat), porém não chega a acessar o corpo do método. Importei corretamente todos os jars de cliente do axi exigidos, e tudo mais. Cheguei até a importar os jars activation e mail para parar de dar a mensagem de warning (e parou). Porém, o web service mesmo, que interessa, continua retornando null…
Saída gerada pelo cliente quando rodado em um projeto eclipse separado:
Resultado: true
Saída gerada pelo cliente quando rodado em no projeto do aplicatovo:
Resultado: null
*Obs: já tentei exportar o projeto java separado para um jar (utilizando fatJar), importá-lo para o projeto do sistema (mesmo resultado) e também incluir o projeto java separado dentro do build path do projeto do sistema (mesmo resultado).