Projeto Cajo - Cajo project

O Projeto Cajo é uma estrutura que permite que vários aplicativos Java que estão espalhados por várias máquinas trabalhem juntos de forma transparente e dinâmica. Essa estrutura é útil para aplicativos abertos / gratuitos e proprietários que precisam de recursos de computação distribuída. É capaz de ser usado em quase todas as plataformas equipadas com Java ( JRE / JME 1.2 ou superior) ( telefones celulares , mainframes , servidores , dispositivos incorporados etc.). É um framework “drop-in”, porque não impõe nenhum requisitos estruturais ou mudanças de código-fonte e é 100% puro Java sem código XML. Ele também não depende de nenhuma outra estrutura e pode funcionar por trás de NAT , firewalls e até proxies HTTP .

História

O projeto Cajo foi emitido pela porta IANA número 1198 e endereço UDP Multicast 224.0.23.162.

Licença

O código-fonte é gratuito sob a LGPL e a documentação é gratuita sob a GFDL .

Uso

visão global

Usando o Projeto Cajo, objetos Java comuns não modificados podem ser remotos usando uma única linha de código:

Itemserver.bind (someObject, "someName")

Eles podem então ser usados ​​por máquinas remotas estaticamente ou dinamicamente.

Uso de objeto remoto estático

O uso de objetos remotos estáticos é tipicamente realizado quando há uma ou mais interfaces para o objeto, definindo como o cliente pode utilizá-lo, conhecido em tempo de compilação . Por exemplo:

interface pública SomeInterface {... // assinaturas de método}

O objeto remoto implementa esta interface, e possivelmente outras, e então remota o objeto conforme mostrado anteriormente.

O uso de objeto remoto estático é fornecido por meio de a TransparentItemProxy. O usuário de um objeto remoto pode criar uma referência a esse objeto, que realmente implementa a interface compartilhada, da seguinte maneira:

SomeInterface si = (SomeInterface) TransparentItemProxy.getItem ("// someHost: 1198 / someName", nova classe [...] {SomeInterface.class})

Uma máquina remota agora pode invocar métodos no objeto remoto, com a sintaxe e semântica exata do Java, como se fosse local.

Uso de objetos remotos dinâmicos

O uso de objetos remotos dinâmicos normalmente é executado quando a interface para um objeto é determinada no tempo de execução. Geralmente, esse é o caso ao usar objetos remotos Cajo em um script . Uma máquina usa dinamicamente uma referência de objeto remoto da seguinte maneira:

// obter referência

Object object = Remote.getItem ("// someHost: 1198 / someName");

// normalmente obtido em tempo de execução

String someMethod = "someMethod";

// também obtido em tempo de execução

Objeto someArgs = new Object [...] {someArgs, ...};

Resultado do objeto = Remote.invoke (object, someMethod, someArgs);

Este trecho invoca um método em um objeto remoto, fornecendo os argumentos (se houver) e retornando o resultado. (caso existam)

A estrutura cajo pode permitir que uma máquina remova sua referência de objeto usando UDP / IP Multicast . Esta técnica permite que máquinas interessadas utilizem referências remotas, bastando escutar os anúncios. Isso fornece um mecanismo de ligação Um-para-muitos , em que os usuários do objeto remoto não precisam saber o endereço TCP / IP da máquina host.

Interfaces gráficas de usuário remotas

O Projeto Cajo também é usado para interfaces gráficas de usuário remotas. Isso permite que um aplicativo execute sua visualização em máquinas separadas de seu modelo e até mesmo em seus objetos de controlador .

Veja também

Referências

links externos