Pessoal, eu tenho uma aplicação web monolítica empacotado em um .WAR. Dentro destas aplicações eu tenho alguns EJBs , sem interface, que coordenam entidades de domínio. O fato é que acabei de perceber que estes EJBs ficam visíveis para outros .WAR que esteja rodando dentro do mesmo servidor. Consegui, via JNDI e reflection, consumir um método de um dos meus EJBs de ManageBean de outra aplicação. Alguém pode me dar um help de como evitar isso ? Gostaria que os EJBs deste .WAR ficassem visíveis somente para classes desta aplicação.
Greetings é um EJB sem interface e está na aplicação A.WAR :
@Stateless
public class Grettings {
public void sayHello() {
System.out.println("HELLO, EJB NO-INTERFACE VIEW...");
}
}
Segue abaixo o código para consumir o EJB de outra aplicação B .WAR
Context context;
try {
context = new InitialContext();
Object obj = context.lookup("java:global/backendEjb/Grettings");
Method metodo = obj.getClass().getMethod("sayHello");
metodo.invoke(obj);
} catch (NamingException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
Obrigado.