Erro autenticação utilizando EJB

5 respostas
sandokandias

tenho meu Stateless autenticaUsuario:

@Stateless
public class AutenticarUsuarioBean implements AutenticarUsuarioRemote, AutenticarUsuarioLocal {
    
    @PersistenceContext(unitName="BalancedScoreCard-ejbPU")
    private EntityManager manager;
   
    /** Creates a new instance of AutenticarUsuarioBean */
    public AutenticarUsuarioBean() {
    }
    
    public Usuarios autenticaUsuario(String login, char[] senha) {
            Query query = manager.createNamedQuery("findUsuarioByLoginSenha");
            query.setParameter("login", login)
                 .setParameter("senha", senha);
            return (Usuarios)query.getSingleResult();
    }       
        
}

meu cliente para autenticação:

public class FormLogin extends javax.swing.JFrame {
    
    @EJB
    private static AutenticarUsuarioRemote autenticacao;

// ao clicar no botao Autenticar
 private void btAutenticarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        startAutenticaLogin(txtLogin.getText(), txtSenha.getPassword());
    }

// metodo    
private void startAutenticaLogin(String login, char[] senha) {
      
        try {
            Usuarios user = autenticacao.autenticaUsuario(login, senha);
            if (user == null)
                JOptionPane.showMessageDialog(null, "Usuário inválido !","Informação",JOptionPane.INFORMATION_MESSAGE);
            else
                JOptionPane.showMessageDialog(null, "Usuário autenticado !","Informação",JOptionPane.INFORMATION_MESSAGE);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Não foi possível realizar a autenticação !","Erro",JOptionPane.ERROR_MESSAGE);
            ex.printStackTrace();
        }          
              
    }
}

e esta ocorrendo este erro:

javax.ejb.EJBException: nested exception is: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.RemoteException
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.RemoteException
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:188)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:172)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:119)
at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke(BCELStubBase.java:197)
at com.uemg.bsc.business.__AutenticarUsuarioRemote_Remote_DynamicStub.autenticaUsuario(__AutenticarUsuarioRemote_Remote_DynamicStub.java)
at com.uemg.bsc.business._AutenticarUsuarioRemote_Wrapper.autenticaUsuario(com.uemg.bsc.business._AutenticarUsuarioRemote_Wrapper.java)
at com.uemg.bsc.client.FormLogin.startAutenticaLogin(FormLogin.java:127)
at com.uemg.bsc.client.FormLogin.btAutenticarActionPerformed(FormLogin.java:110)
at com.uemg.bsc.client.FormLogin.access$000(FormLogin.java:18)
at com.uemg.bsc.client.FormLogin$1.actionPerformed(FormLogin.java:52)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.rmi.RemoteException
at com.sun.enterprise.iiop.POAProtocolMgr.mapException(POAProtocolMgr.java:234)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1280)
at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:197)
at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:110)
at $Proxy77.autenticaUsuario(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:121)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:650)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:193)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1705)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1565)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:947)
at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:178)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:717)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:473)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1270)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:479)
javax.ejb.EJBException: nested exception is: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.RemoteException
at com.uemg.bsc.business._AutenticarUsuarioRemote_Wrapper.autenticaUsuario(com.uemg.bsc.business._AutenticarUsuarioRemote_Wrapper.java)
at com.uemg.bsc.client.FormLogin.startAutenticaLogin(FormLogin.java:127)
at com.uemg.bsc.client.FormLogin.btAutenticarActionPerformed(FormLogin.java:110)
at com.uemg.bsc.client.FormLogin.access$000(FormLogin.java:18)
at com.uemg.bsc.client.FormLogin$1.actionPerformed(FormLogin.java:52)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Alguem tem idéia do que possa estar errado ?

desde ja agradeço.

5 Respostas

RafaelRio

O que você mostrou é o stack trace da IDE. Quando quiser entender qual a causa de um erro, é mais eficaz procurar no log do servidor.

Mas pelas suas classes e pelo tipo de erro, o problema deve estar com o seu componente AutenticarUsuarioRemote autenticação. Só seria possível injetar a referência à implementação de AutenticarUsuarioRemote se autenticacao fosse utilizada no método main.

Acontece que você não tem um container “de verdade” para injetar dependências num application client. Nos demais lugares do cliente desktop - longe da main - é preciso usar o método lookup da API JNDI.

Felizmente isso está bem mais fácil do que antes. Basta utilizar: Context context = new InitialContext(); AutenticarUsuarioRemote autenticar = (AutenticarUsuarioRemote) context.lookup(AutenticarUsuarioRemote.class.getName());

Não se esqueça de adicionar os .JAR javaee.jar e appserv-rt.jar no classpath (no caso de um cliente stand alone). Esse último contém o arquivo jndi.properites, cuja configuração é específica de cada “fabricante” do application server. E é por isso que você pode instanciar InitialContext sem argumentos no construtor.

sandokandias

Caused by: Exception [TOPLINK-8006] (Oracle TopLink Essentials - 2006.8 (Build 060830)): oracle.toplink.essentials.exceptions.EJBQLException
Exception Description: A problem was encountered resolving the class name - The descriptor for [usuarios] was not found.

eu inclui a classe modelo Usuarios no persistence.xml, mas mesmo assim esta com este erro acima…

sandokandias

quero acessar fora de uma classe que contenha o metodo MAIN.

JMan

Veja se te ajuda


http://www.guj.com.br/posts/list/56581.java

JMan

Ué, é a mesma coisa, o cliente pode ser o que vc quizer, Servlet, JSP; não importa, a maneira é a mesma.

Criado 5 de abril de 2007
Ultima resposta 13 de abr. de 2007
Respostas 5
Participantes 3