Um Sistema Web, voltado para a execução na Internet, pode...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: D - Java RMI permite que um objeto cliente invoque um método de um objeto servidor remotamente.
Para entendermos o porquê dessa alternativa ser a correta, precisamos nos aprofundar um pouco no conceito de Java RMI (Remote Method Invocation). O RMI é uma API que permite a execução de métodos de maneira remota, isto é, em diferentes máquinas ou processos. Quando utilizamos RMI, estamos adotando um modelo de programação distribuída, onde os objetos não precisam estar no mesmo espaço de memória para interagir entre si.
O que torna a alternativa D correta é que o principal propósito do Java RMI é justamente fornecer essa funcionalidade de invocação remota de métodos. Um objeto cliente (em uma JVM - Java Virtual Machine) pode chamar métodos de um objeto servidor (em outra JVM, potencialmente em outra máquina) como se fossem chamadas locais. O Java RMI cuida de toda a complexidade de comunicação de rede, serialização de objetos, entre outras operações necessárias para que essa interação remota ocorra de maneira transparente para o desenvolvedor.
Essa capacidade elimina a necessidade de se preocupar com detalhes de baixo nível da comunicação entre os objetos em diferentes sistemas ou redes, focando no desenvolvimento da lógica de negócio e funcionalidades da aplicação.
Vamos entender porque as outras alternativas não são corretas:
- A - Java RMI de fato utiliza o protocolo TCP/IP para realizar a comunicação entre os objetos, mas a questão diz que as aplicações são dependentes do protocolo de rede da camada de transporte (UDP/TCP), o que não é verdade, já que RMI abstrai esses detalhes para o desenvolvedor.
- B - RMI pode ser utilizado no desenvolvimento de aplicações P2P, no entanto, a afirmação de que métodos invocados remotamente são automaticamente replicados em dois ou mais servidores é incorreta. Essa característica não faz parte do RMI em si, mas poderia ser implementada pelo desenvolvedor se desejado.
- C - A passagem de objetos em Java RMI exige que os mesmos sejam serializáveis, ou seja, o objeto precisa implementar a interface
java.io.Serializable. A ideia de um "local pointer" não se aplica neste contexto. - E - Java RMI não utiliza o protocolo SOAP, que é baseado em XML e é uma especificação diferente usada para serviços web. RMI utiliza uma própria implementação para a transferência de objetos e chamadas de métodos.
Portanto, a alternativa D é a correta porque reflete exatamente a capacidade que o Java RMI fornece aos desenvolvedores de sistemas distribuídos: realizar invocações de métodos de objetos remotos de maneira simples e direta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
a) Não tenho certeza, alguém mais pode contribuir, mas acho que essa questão está errada porque RMI usa o JRMP (Java Remote Method Protocol) sob TCP/IP e por isso depende apenas desse ultimo. Se alguém mais puder contribuir...
b) Essa "replicação automática" não existe de forma nativa.
c) Objetos precisam ser serializados e portanto implementar a interface Serializable.
d) Correta. Essa é a definição do RMI, ou Remote Method Invocation. A interface distribuída no cliente e no servidor determina e garante o que pode ser chamado pelo cliente.
e) Errada. RMI usa uma um canal de comunicação "raw" para transmissão de mensagens. É possível definir um protocolo mas isso precisa ser feito pelo programador.
A alternativa correta é a D — Java RMI permite que um objeto cliente invoque um método de um objeto servidor remotamente. ✅
O próprio nome RMI (Remote Method Invocation) indica sua finalidade: permitir que um objeto Java invoque métodos de um objeto remoto, como se estivesse realizando uma chamada local.
O RMI oculta do programador boa parte dos detalhes da comunicação de rede.
A) ❌ Errada
O RMI abstrai os detalhes do transporte. Embora uma implementação tradicional utilize JRMP sobre TCP, não é correto dizer que as aplicações RMI são dependentes diretamente do protocolo de transporte.
B) ❌ Errada
RMI não replica automaticamente métodos em vários servidores. Além disso, não é uma tecnologia especificamente voltada a P2P.
C) ❌ Errada
Objetos transmitidos pelo RMI precisam obedecer às regras de serialização apropriadas. Não existe um mecanismo de “local pointer” para enviar objetos não serializáveis dessa maneira.
D) ✅ Correta
Essa é justamente a finalidade do RMI: um objeto cliente invoca remotamente um método de um objeto servidor.
E) ❌ Errada
RMI não se baseia em SOAP. SOAP é um protocolo utilizado tradicionalmente em Web Services. RMI possui mecanismos próprios de comunicação, como JRMP.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo