XFire - É possível usar XFire integrar 2 sistemas desktop

7 respostas
B

Fala galera! Mais uma vez estou precisando muito da ajuda de vocês.

Preciso desenvolver uma aplicação (desktop), que invoque os serviços de outra aplicação, e gostaria de saber se é possível utilizando o XFire. Gostaria de toda ajuda que vcs puderem me dar: artigos e livros que cobrem o assunto (em português), exemplos de código, OU SE ESSA É A MELHOR SOLUÇÃO PARA O PROBLEMA.

Obrigado!!! :wink:

7 Respostas

Pedrosa

Sim é possível invocar serviços com bastante simplicidade, basta apenas informar a url, o método a ser acessado e seus parametros.

Ex: Client

public String getXpto()throws Exception{
		URL url = new URL("http://PEDROSA:8080/ServicoTeste/services/Teste?wsdl");
		Client cliente = new Client(url);
		Object[] resultado = cliente.invoke("metodoWebService", new Object[]{par1,par2);
		return resultado[0].toString();
}

Nesse link ensina como criar um serviço:

http://xfire.codehaus.org/Quick+Start

B

Valeu Pedrosa. Dei uma olhada no link indicado, porém vi que a configuração do Xfire é feita no services.xml e no web.xml. Vc saberia me falar como eu faria isso numa aplicação desktop? Lembrando que no meu caso eu irei apenas usar os serviços e não criá-los.
(Desculpa se eu estiver perguntando besteira!)

Pedrosa

Web service tem esse proposito, a padronização, o que você antes criava em diversos protocolos, sockets, arquivos, sei lá, no lado do Java para ler um web service eu gosto do Xfire.

Luca

Olá

Falar da melhor maneira só conhecendo os sistemas que quer trocar serviços e em quais sistemas operacionas em que estão funcionando.

Em princípio, sem saber nada, acho que o modo mais simples é usando REST. Mas para isto você precisa de um pequeno servlet para receber as solicitações, passar para o provedor dos serviços, receber as respostas do provedor e devolver as respostas ao cliente dos serviços.

Simples quer dizer: você controla tudo. Isto é, controla autorização, autenticação, transações, etc.

Se precisa de mais coisas, então o XFire, o AXIS 2 e principalmente o Apache CFX 2.0 podem ser boas alternativas.

[]s
Luca

Pedrosa

BrunoLeonardo:
Valeu Pedrosa. Dei uma olhada no link indicado, porém vi que a configuração do Xfire é feita no services.xml e no web.xml. Vc saberia me falar como eu faria isso numa aplicação desktop? Lembrando que no meu caso eu irei apenas usar os serviços e não criá-los.
(Desculpa se eu estiver perguntando besteira!)

Se os serviços já existem basta apenas consumi-los conforme o exemplo que te passei:

Client cliente = new Client(url);
Object[] resultado = cliente.invoke("metodoWebService", new Object[]{par1,par2);
return resultado[0].toString();
J

Eu ainda acho que quando você controla as duas pontas da troca de informação, um protocolo binário é melhor solução.

Existe alguns por ai, como por exemplo o RMI e aquele outra da Caucho (dona do Resin) que eu não lembro o nome e estou com preguiça de verificar.

B

Caro Pedrosa, fiz da maneira como vc indicou e dá o seguinte exceção:

Exception in thread “main” java.lang.UnsupportedOperationException: Service style/use not supported: document/encoded

Veja meu código:

try

{

URL url = new URL(“<a href="http://localhost/servico.wsdl">http://localhost/servico.wsdl</a>”);

Client cliente = new Client(url);

Object param = new Object();

Object[] resultado = cliente.invoke(“SituacaoAgente”, new Object[]{null});
if (resultado != null) 
        {
            java.lang.System.out.println("OK");
        }
    } 
    catch (MalformedURLException ex) 
    {
        Logger.getLogger("global").log(Level.SEVERE, null, ex);
    }

O q será :?:

Criado 13 de junho de 2007
Ultima resposta 19 de jun. de 2007
Respostas 7
Participantes 4