1
resposta

Visibilidade de EJBs

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.

1 resposta

Só pra completar a pergunta. Eu estou rodando as duas aplicações em um servidor WildFly 10.