estou desenvolvendo um projeto de internet computing (no estilo do projeto BOINC, o mesmo usado no SETI@Home) e pretendo implementá-lo através de webservices. Bueno, dito isso, tenho duas dúvidas:
1 - É possível utilizar o só tomcat como um servidor xmlrpc? (claro que é possível utilizar o tomcat pra isso. mas eu quero saber se é possível sem o uso de classes ou aplicações adicionais…)
2 - Uma vez que eu consiga estabelecer o tomcat como servidor… é possível enviar o código fonte (java) que deverá ser executado aos clientes?
Eu já consegui implementar usando Tomcat+AXIS para usar SOAP ao invés de XMLRPC mas o pessoal que está desenvolvendo os clientes tá BASTANTE resistente para usar essa tecnologia, então pra não me incomodar, eu gostaria de tentar implementar o servidor usando xmlrpc para troca de mensagens.
Você não quer usar o Sun Web Developer Pack? Se não me engano, ele tem o Tomcat incorporado, além de um instalador, e suporta várias das tecnologias XML (não só SOAP).
Para o tal “código Java” em clientes veja o “Java Web Start”. Basicamente o cliente vai clicar em um link de seu site, e baixar uma aplicação.
O problema é que o código Java pode deixar a máquina do cliente muito lenta, porque ocupa memória demais, e isso é ruim - não se esqueça de reduzir a prioridade para não “afogar” a máquina cliente.
bigodines
Primeiro Luca e thingol obrigado pelas respostas rápidas
@Luca: Sobre o apache xml-rpc eu havia lido mas quando li esta parte:
Use of the WebServer has grown very popular amongst users of Apache XML-RPC. Why this is the case, can hardly be explained, because the WebServer is at best a workaround, compared to full blown servlet engines like Tomcat or Jetty. For example, under heavy load it will almost definitely be slower than a real servlet engine, because it does neither support proper keepalive (multiple requests per physical connection) nor chunked mode (in other words, it cannot stream requests).
@thingol: eu havia lido sobre o JWSDP mas eu já baixei e configurei o tomcat na mão aqui. n queria ter de repetir todo o processo só pra utilizá-lo como um servidor de xmlrpc.
Pq a idéia de internet computing é criar uma aplicação que será utilizada qdo o computador estiver ocioso para processar alguma coisa. Eu posso fazer um algoritmo fixo e enviar pelo service só os parâmetros. Mas seria um tesão se eu consguisse enviar o código que deverá ser processado também…
T
thingol
Basicamente não é que ele “manda” alguma coisa; o cliente é que, periodicamente, deve solicitar a execução de um web service que informa se há uma versão nova do cliente.
Se houver, então deve baixar o novo “.jar”, e então, usando uma classe derivada de java.lang.ClassLoader, executar a nova versão das classes.
Obviamente isso deve ser feito com certo cuidado, já que as classes antigas continuam em memória até que o programa seja reiniciado. (a rigor elas permanecem até que todas as referências às classes antigas sejam eliminadas e o classloader antigo seja “limpo” pelo garbage collector, mas para efeitos práticos isso é difícil de ocorrer sem muita disciplina na programação)
bigodines
beleza. é isso mesmo.
e é fácil fazer trafegar esse “upgrade” pelo xmlrpc? devo usar aquela feature de “streaming” do apache xml-rpc?