Diferenças entre RMI e EJB

Pessoal

Estou estudando EJB e me surgiu uma dúvida.

Pelo que li, a especificação de EJB, da Sun, diz que um container EJB tem que ter suporte a RMI-IIOP, que é o protocolo que o RMI usa.

Sendo assim, qual a diferença entre EJB e RMI? Quando usar um e quando usar o outro?

Obrigado

Ola,

A diferença está na forma de implementação.

Não sou um especialista em EJB mas o que me parece é:

EJB é algo bem “maior” que simplesmente o RMI. É uma especificação abrangente, engloba coisas como: EJB Local x EJB Remoto, controle de transações, alguns recursos de segurança, e etc.

Ou vendo de outra forma, RMI não é “O” EJB em si, mas sim aquilo que está por trás, que o faz funcionar.

o EJB usa o RMI para fazer as requisições remotas.

você pode usar RMI sem EJB… porém em alguns casos é melhor tentar outra tecnologia (WebServices, etc)

[quote=marcelo_mococa]o EJB usa o RMI para fazer as requisições remotas.

você pode usar RMI sem EJB… porém em alguns casos é melhor tentar outra tecnologia (WebServices, etc)[/quote]

Por que em alguns casos é melhor usar soluções alternativas?

por vários motivos… se o seu cliente usa outra linguagem diferente de java por exemplo EJB ja não atende, web services sim… cada caso é um caso…

bom… eu entendo EJB de uma forma meio simplista e resumida como uma forma meio automatizada de se implementar RMI (ganhando de forma automatizada escalabilidade por exemplo, entre outras coisas) mas além de ter certos benefícios de forma automatizada, você está fazendo soluções maiores também, mais robustas, devido ao que o container ja te provê automaticamente…

[quote=maior_abandonado]por vários motivos… se o seu cliente usa outra linguagem diferente de java por exemplo EJB ja não atende, web services sim… cada caso é um caso…
[/quote]

Não querendo ser prático demais… esta visão pode ser pensada assim:

1º) Penso num serviço.
2º) Verifico as reais necessidades.
3º) Faço o RMI, mas se for necessário, a estrutura que pensei no passo 1 está pronta para um WebService.

Pois não pense diretamente no Web Service, senão vc vai colocar uma compexidade desnecessária no seu sistema, sem falar dos custos de transporte de pacotes, que no Web Service é muito maior.

Ps.: falo isto com uma certa vivencia, pois vivenciei casos em que lidamos com alta carga de dados, e via Web Service, onde o server é java, e o cliente tb, e não se tem noticias, nem de longe, da real necessidade de outros sistemas acessarem este serviço.

[quote=BrunoCarlo][quote=maior_abandonado]por vários motivos… se o seu cliente usa outra linguagem diferente de java por exemplo EJB ja não atende, web services sim… cada caso é um caso…
[/quote]

Não querendo ser prático demais… esta visão pode ser pensada assim:

1º) Penso num serviço.
2º) Verifico as reais necessidades.
3º) Faço o RMI, mas se for necessário, a estrutura que pensei no passo 1 está pronta para um WebService.

Pois não pense diretamente no Web Service, senão vc vai colocar uma compexidade desnecessária no seu sistema, sem falar dos custos de transporte de pacotes, que no Web Service é muito maior.

Ps.: falo isto com uma certa vivencia, pois vivenciei casos em que lidamos com alta carga de dados, e via Web Service, onde o server é java, e o cliente tb, e não se tem noticias, nem de longe, da real necessidade de outros sistemas acessarem este serviço.[/quote]

você disse a mesma coisa que eu mas com o exemplo contrário… eu citei de usar web service se o cliente usar outra linguagem e você citou não usar se o cliente usar a mesma linguagem…

apenas reforçando… cada caso pé um caso, cada caso tem sua necessidade especifica, cabe utilizar a tecnologia que melhor atenda as necessidades do caso em si (quando ambos usam a mesma linguagem e você pretende disponibilizar esse serviço especifico apenas para este cliente, web service é desnecessário).

[quote=BrunoCarlo][quote=maior_abandonado]por vários motivos… se o seu cliente usa outra linguagem diferente de java por exemplo EJB ja não atende, web services sim… cada caso é um caso…
[/quote]

Não querendo ser prático demais… esta visão pode ser pensada assim:

1º) Penso num serviço.
2º) Verifico as reais necessidades.
3º) Faço o RMI, mas se for necessário, a estrutura que pensei no passo 1 está pronta para um WebService.

Pois não pense diretamente no Web Service, senão vc vai colocar uma compexidade desnecessária no seu sistema, sem falar dos custos de transporte de pacotes, que no Web Service é muito maior.

Ps.: falo isto com uma certa vivencia, pois vivenciei casos em que lidamos com alta carga de dados, e via Web Service, onde o server é java, e o cliente tb, e não se tem noticias, nem de longe, da real necessidade de outros sistemas acessarem este serviço.[/quote]

E vocês usaram algo alternativo? Ou continuaram com Web Service? Aliás, vocês comendariam algo diferente de Web Service e ou RMI?

Obrigado gente pela ajuda.

Algo alternativo? bom, além de RMI/EJB ou Web Service, dependendo muito da solução que vc queira implementar, HTTP, atraves de programas web.

Só EJB, no inicio do tópico.