Problema com acesso a Enterprise Beans... ( ClassCastException )

Ola pessoal,
estou tendo que desenvolver uma aplicação que vai ser util para tratamento de usuarios , como autenticacao, perfis de acesso a determinados modulos e etc… com isso outras aplicacoes nao precisam fazer todos esses tratamentos denovo, bastando usar o que ja tem nessa aplicacao…

então criei um Stateless Session Bean para fazer a parte de validacao de usuario por ex. ( sistema 01 )
Projeto de Administracao dos Usuarios
Session Bean

@Stateless
public class ManagerUserBean implements ManagerUser {
    @PersistenceContext
    private EntityManager em;

    @Override
    public User logonExtern(String userName, String password) {
	// ...
    }

    // demais metodos de tratamento de permissoes ou coisas do tipo
}

Interface

@Remote
public interface ManagerUser {
    public User logonExtern(String userName, String password);
    
    // demais metodos de tratamento de permissoes ou coisas do tipo
}

então em um outro projeto em que eu precise desse 1o, eu faço algo como:

public static ManagerUser getManagerUser() {
    try {
        InitialContext ctx = new InitialContext();
        // esquecia a outra forma de fazer o lookup sem precisar inserir o nome do arquivo .ear
        ManagerUser manager = (ManagerUser) ctx.lookup("managerEAR/ManagerUserBean/remote");
        return manager;
     }catch (NamingException e) {
        e.printStackTrace();
        return null;
     }
}

ao chamar esse metodo nesse segundo projeto ( sistema ), o JBoss me retorna o erro abaixo na linha [color=red]5[/color] do code acima… no momento do lookup

java.lang.ClassCastException: $Proxy167 cannot be cast to org.company.manager.session.ManagerUser
// esse 167 muda... 

não sei se isso é coisa de especificação que eu estou fazendo errado/quebrando…
mas não entendi porque que está sendo retornado um Proxy quando deveria chegar um ManagerUser.

resumindo, esse caso ae é uma sistema que trata so de informações de usuários… mas como ele usa EJBs, eu estou tentando aproveitar o mesmo para fazer autenticacoes de usuarios por exemplos, fazendo o segundo sistema acessar esse ejb e utilizar os metodos que ele possui.

se alguém tiver alguma informação que me ajude, sera de grade valia…

Abs,

Tente:

public static ManagerUser getManagerUser() {
    try {
        InitialContext ctx = new InitialContext();
        // esquecia a outra forma de fazer o lookup sem precisar inserir o nome do arquivo .ear
        ManagerUser manager = (ManagerUser) ctx.lookup("ManagerUser");
        return manager;
     }catch (NamingException e) {
        e.printStackTrace();
        return null;
     }
}

opa, assim ele me retorna

mas na verdade eu acredito que a questão não é nem como eu estou chamando… ( o comentario é pq sei que existe uma outra forma …)

meu galho é o motivo dele retornar um Objeto Proxy.

so lembrando que são 2 projetos separados com .ear distintos

quem tiver alguma sugestão/dica sera bem vindo…
t+

[quote=Foxlol]Tente:

public static ManagerUser getManagerUser() { try { InitialContext ctx = new InitialContext(); // esquecia a outra forma de fazer o lookup sem precisar inserir o nome do arquivo .ear ManagerUser manager = (ManagerUser) ctx.lookup("ManagerUser"); return manager; }catch (NamingException e) { e.printStackTrace(); return null; } } [/quote]

e ae freak… O JBoss utiliza padrão de nomes do JNDI diferente… fazer o q…

Para mudar o jndi name deve-se usar a annotation org.jboss.ejb3.RemoteBindings juntamente com o @Stateless

Suas aplicações estão rodando no mesmo container?
Se sim, vc não deve empacotar as classes da app EJB na sua aplicação cliente. Isso faz gerar esse erro. Vc so precisa das classes da app EJB em tempo de compilação, mas não deve empacota-las junto para fazer deploy. o proprio container se encarrega se se “achar”.

[]´s

[quote=Tecnoage][quote=Foxlol]Tente:

public static ManagerUser getManagerUser() { try { InitialContext ctx = new InitialContext(); // esquecia a outra forma de fazer o lookup sem precisar inserir o nome do arquivo .ear ManagerUser manager = (ManagerUser) ctx.lookup("ManagerUser"); return manager; }catch (NamingException e) { e.printStackTrace(); return null; } } [/quote]

e ae freak… O JBoss utiliza padrão de nomes do JNDI diferente… fazer o q…

Para mudar o jndi name deve-se usar a annotation org.jboss.ejb3.RemoteBindings juntamente com o @Stateless
[/quote]

Aow Freak!!

Usando o RemoteBindings da pra fazer desse modo ou ainda assim tem que mudar o JNDI?

Flw

[quote=jgbt]Suas aplicações estão rodando no mesmo container?
Se sim, vc não deve empacotar as classes da app EJB na sua aplicação cliente. Isso faz gerar esse erro. Vc so precisa das classes da app EJB em tempo de compilação, mas não deve empacota-las junto para fazer deploy. o proprio container se encarrega se se “achar”.

[]´s
[/quote]
estão as 2 em um único jboss.

uhm! faz sentido… realmente está indo um .jar do projeto 01 ( que eu chamo de autenticacao) dentro do .ear do projeto 02 ( o que precisa acessar o 01), alterei algo no ant que faz com que ele não insira tal lib no .ear
mas ele dar erro na inicializacao do jboss dizendo que não conseguiu encontrar as classes
por exemplo:

a qual eu venho a utilizar no projeto 02 ( essas classes sao do projeto 01).

o que podera ser ?