Boa tarde, estou tentando consumir um webservice para a cotação de ações da Bovespa, já li os tópicos relacionamos ao consumo aqui, mais ainda encontro algumas dúvidas:
- Eu criei as classes no Eclipse a partir do File > New > Web Service > Web Service Cliente. No service definition eu coloquei a URL, aqui vem uma dúvida, eu devo passar a URL com o WSDL ou não?? Qual das duas seria o correto:
http://consultacotacao.riscozeroprojetos.com.br/sConsultaCotacao.asmx
ou
http://consultacotacao.riscozeroprojetos.com.br/sConsultaCotacao.asmx?WSDL (Usei essa)
Feito isso, criei um Main para testar o consumo, está correto??:
view plaincopy to clipboardprint?
Context context = new InitialContext();
CotacaoServiceSoap cotacao = (CotacaoServiceSoap) context.lookup("CotacaoServiceSoap/remote");
cotacao.obterCotacao("PETR4");
Context context = new InitialContext(); CotacaoServiceSoap cotacao = (CotacaoServiceSoap) context.lookup(“CotacaoServiceSoap/remote”); cotacao.obterCotacao(“PETR4”);
Sendo assim, ele me retorna o erro (Quando o JBoss não está startado):
view plaincopy to clipboardprint?
javax.naming.CommunicationException: Could not obtain connection to any of these urls: jndi:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server jndi/127.0.0.1:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server jndi/127.0.0.1:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]]
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1763)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:693)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
at javax.naming.InitialContext.lookup(Unknown Source)
at br.com.sjdr.cotacao.Teste.main(Teste.java:17)
javax.naming.CommunicationException: Could not obtain connection to any of these urls: jndi:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server jndi/127.0.0.1:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server jndi/127.0.0.1:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]] at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1763) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:693) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686) at javax.naming.InitialContext.lookup(Unknown Source) at br.com.sjdr.cotacao.Teste.main(Teste.java:17)
E com o JBoss startado, ele retorna:
“CotacaoServiceSoap not bound”
Acredito que o erro mesmo seja a segunda opção, pois deve ter algum servidor de aplicação.
Se o erro for realmente no CotacaoServiceSoap, foi o próprio Eclipse que gerou, eu devo mudar algo??
Estou consumindo certo ou não?? Pode ser algum problema no webservice?? Alguém conhece algum que eu possa consultar as cotações por data?? Pois nesse por exemplo, ele só retornaria a do dia atual, seria melhor algum que eu pudesse consultar a cotação de ontem, semana passada, mês passado por exemplo, e pode ser algum free, nesse caso o delay não implicaria em nada.
Obrigado,
Cesar Pizolato