É simples criar um cliente rico para web services com o NetBeans.
Os pré-requisitos para reescrever e executar no seu computador o aplicativo desenvolvido nesse post são: NetBeans 5.0 ou 5.5, conhecimentos básicos sobre essa IDE (set-up projects, Matisse) e Java básico.
Esse pequeno programa consulta detalhes de um endereço IP, como sua localização, ISO code, entre outros dados, via wsdl: http://webservices.tekever.eu/ip2pais/?wsdl.
WSDL Client
Crie um novo projeto (General -> Java Application), com o nome IPWSClient e a localização que melhor lhe convir. Certifique-se que a caixa Create Main Class esteja desmarcada.
Crie um novo cliente de web service (New -> File/Folder... -> Web Services -> Web Service Client). Clique em Next. Clique em WSDL URL e preencha nesse campo o endereço http://webservices.tekever.eu/ip2pais/?wsdl. No campo Package, digite org.wonderland.cws. Em Jax Version, selecione JAX-RPC. Clique em Finish..
A estrutura necessária para acessar o web service foi gerada pela IDE. Ainda bem, pois esse é um trabalho maçante e propenso a erros.
GUI (Graphical User Interface)
Crie um novo JFrame (New -> File/Folder... -> Java GUI Forms -> JFrame Form). Em Class name digite MainGui; em Package digite org.wonderland.gui. Clique em Finish.
Use o Matisse para produzir uma interface gráfica parecida com a da figura 1, logo abaixo.
Segue a lista de componentes que compõem essa gui, com suas respectivas propriedades:
Note que só as propriedades com valores diferentes do padrão estão listadas acima.
So, Call a Web Service Operation!
Vá para Source View e defina um método chamado searchIP:
private void searchIP(final String ip) { }
Dentro do método searchIP clique com o botão direito do mouse, selecione Web Service Client Resources - > Call Web Operation. Selecione IP2Pais. O Netbeans irá gerar o código necessário para chamar IP2Pais via web service.
Substitua
conversaodeIPparaPaisPort.IP2Pais(/* TODO enter operation arguments*/);
por
Paisdados paisdados = conversaodeIPparaPaisPort.IP2Pais(ip);
É interessante usar o método InvokeLater da classe SwingUtilities pra melhorar o tempo de resposta da GUI. A implementação completa do método searchIP está disponível na figura 2 (abaixo).
Quando a gui disparar um evento (um clique no botão Search, por exemplo), será callServiceSearchIp quem será chamado:
public void callServiceSearchIP(String ip) {
.....bSearch.setEnabled(false);
.....pProgress.setStringPainted(true);
.....pProgress.setString(""Searching for ip address " + ip);
.....pProgress.setIndeterminate(true);
.....searchIP(ip);
}
Quase lá... Volte para o Design View, clique com o botão direito do mouse em bSearch (JButton), selecione Events -> Action -> actionPerformed. A IDE irá gerar o método bSearchActionPerformed. Chame callServiceSearchIp quando a gui disparar eventos actionPerformed:
private void bSearchActionPerformed(java.awt.event.ActionEvent evt) {
....callServiceSerachIp(tfIP.getText());
}
Agora sim.
Certifique-se que o aplicativo esteja rodando sobre Java 5. O que?! Java 5??
Isso mesmo... Há um bug que (ao menos por enquanto) impede que esse programa funcione em Java 6. Esse bug já foi relatado, mas parece que não foi concertado - aqui mesmo não funcionou e tive que voltar para o Java 5.
Compile, rode o programa e divirta-se.
O site xmethods.org possui uma série de web services disponíveis para testes.
Sexta-feira, Dezembro 29, 2006
NetBeans, Matisse e Web Services
Assinar:
Postar comentários (Atom)


3 comentários:
na hora de criar o WSDL, a Versão JAX fica sem opção de mudar, fica travada com a JAX-WS, como q destrava a versão???
Isso é porque esse programa só funciona com o Java 1.5, e não com o 6.0. Deve ser um bug...
Ok?
ok, vlww
Postar um comentário