Como acessar a entidade Beans de um cliente remoto?
-
27-09-2019 - |
Pergunta
Eu tenho isso no servidor:
class Person{...}
e
@Stateless
public class HelloServiceBean implements HelloServiceLocal, HelloServiceRemote {
public Person getPerson(String name) {
return new Person(name);
}
}
E eu tenho isso no meu cliente (em uma JVM diferente):
public static void main(String[] a) throws Exception{
String name = "java2s";
HelloServiceRemote service = null;
service = (HelloServiceRemote)new InitialContext().lookup("HelloServiceBean/remote");
Person p = service.getPerson(name));
}
Quando preciso ligar, por exemplo, o método getPerson () do meu EJB, que devolve um objeto do tipo de pessoa, como meu cliente vai entender que essa pessoa é uma classe?
Eu tenho que reescrever a classe da pessoa outra vez em meu cliente (e também a classe HeloserviceRemote), para que possa entender o que é uma pessoa? Ou tenho que incluir o projeto EJB no meu projeto de cliente?
Solução
Você deve incluir o projeto JAR of EJB no lado do cliente, contendo interfaces, entidades e outras classes de utilitário usadas.
Mas expor os grãos de entidade no lado do cliente não é preferível, você pode obter mais informações sobre isso em http://www.ibm.com/developerworks/websphere/library/bestpractices/ejbs_access_entity_bean.html