[RESOLVIDO] Erro em validação Login usuario JSF2 + HIBERNATE + POSTGRE

38 respostas
P

Olá pessoal, venho pedir um help se possível…

sou iniciante ainda, e estou tentando fazer uma validação de login, mas não estou conseguindo… Não consigo entender os erros q da no console do Eclipse, dai fica mais dificil =/
se alguém puder me dar um help, agradeço muito!

Minha classe Usuario.java

@Entity
@Table(name="usuario")
public class Usuario implements Serializable {
	
	private static final long serialVersionUID = 4227095602547505841L;
	
	private Integer cod_usuario;
	private String username;
	private String nome;
    private String senha;
    private String email;
    private String fone;
    private String tipousuario;
    
    @Id
    @SequenceGenerator(name="user", sequenceName="usuario_cod_usuario_seq",allocationSize=1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="user")
	@Column(name="cod_usuario", unique=true, nullable=false)
	public Integer getCod_usuario() {
		return cod_usuario;
	}
      
//RESTANTE DOS GETTERS E SETTERS

função do meu DAO que verifica o usuario no banco (classe EntityManagerBuilder)

public boolean verificarUsuario (String username, String senha){
		
		boolean valido = false;
		
		Query query = getEntityManager().createQuery("from usuario u where u.username = :username AND u.senha = :senha");
		query.setParameter("username", username);
		query.setParameter("senha", senha);
		
		Usuario user = (Usuario) query.getSingleResult();
			
		if(user != null){
			valido = true;
		}
		return valido;
		
	}

AutenticaBean

@ManagedBean
@SessionScoped
public class AutenticaLogin {
	
	private EntityManagerBuilder entityDAO;
	private Usuario usuario;
	
	public String login(){
		
		FacesMessage msg = null;  
		boolean logado = false;
        
		logado = entityDAO.verificarUsuario(this.getUsuario().getUsername(), this.getUsuario().getSenha());
		
		if(logado){
			return "sucesso";
		}
		else{
			msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao fazer login", "Usuário ou senha inválidos");
			FacesContext.getCurrentInstance().addMessage(null, msg);
			return "erro";
		}
		
	}

Erro no Console do Eclipse

00:35:15,099 INFO [org.hibernate.dialect.Dialect] (http-localhost-127.0.0.1-9090-1) HHH00400:Using dialect: org.hibernate.dialect.PostgreSQLDialect 00:35:15,100 INFO [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (http-localhost-127.0.0.1-9090-1) HHH00424:Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException 00:35:15,102 INFO [org.hibernate.engine.transaction.internal.TransactionFactoryInitiator] (http-localhost-127.0.0.1-9090-1) HHH00268:Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory 00:35:15,102 INFO [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (http-localhost-127.0.0.1-9090-1) HHH00397:Using ASTQueryTranslatorFactory 00:35:20,808 Advertência [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-localhost-127.0.0.1-9090-1) #{autenticaLogin.login()}: java.lang.NullPointerException: javax.faces.FacesException: #{autenticaLogin.login()}: java.lang.NullPointerException at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT] at javax.faces.component.UICommand.broadcast(UICommand.java:315) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1] at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1] at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1] at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT] at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT] at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final] at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final] at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49) [jboss-as-jpa-7.0.2.Final.jar:7.0.2.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at java.lang.Thread.run(Thread.java:722) [:1.7.0_02] Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1] at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT] ... 22 more Caused by: java.lang.NullPointerException at br.com.astronomia.bean.AutenticaLogin.login(AutenticaLogin.java:29) [classes:] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.7.0_02] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [:1.7.0_02] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [:1.7.0_02] at java.lang.reflect.Method.invoke(Method.java:601) [:1.7.0_02] at org.apache.el.parser.AstValue.invoke(AstValue.java:196) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT] at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1] ... 23 more

Não sei o que fazer… alguma sugestão??
Obrigado, desde já! :slight_smile:

38 Respostas

T

Esse erro significa que você nao especifico o Dialect la no arquivo de configuração do hibernate
você tem que dizer para o hibernate qual é o banco no qual você esta usando atraves desse dialect
segue um exemplo abaixo:

<hibernate-configuration>
    <session-factory>
        <!--mais configuração aqui -->
      <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>

se tiver duvida da um toque

P

Obrigado pela atenção… :slight_smile:

o arquivo de configuração do hibernate que vc se refere seria o persistense.xml certo?
O meu realmente nao tinha o dialect… adicionei a propriedade, mas continua com o erro =/

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="Astrono" transaction-type="RESOURCE_LOCAL">
	
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<non-jta-data-source>java:jboss/postgresqlDS</non-jta-data-source>
		
		<class>br.com.astronomia.model.Usuario</class>
		
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
			<property name="hibernate.show_sql" value="true"/>
			<property name="hibernate.format_sql" value="true"/>
		</properties>
		
	</persistence-unit>
</persistence>

seria isso??

O erro:

09:45:39,347 INFO  [org.jboss.as.deployment] (MSC service thread 1-4) Started FileSystemDeploymentService for directory C:\Veere\servidores\jboss-as-web-7.0.2.Final\standalone\deployments
09:45:39,372 INFO  [org.jboss.as.deployment] (DeploymentScanner-threads - 1) Found Astrono.war in deployment directory. To trigger deployment create a file called Astrono.war.dodeploy
09:45:39,391 INFO  [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.2.Final "Arc" started in 4456ms - Started 107 of 162 services (55 services are passive or on-demand)
09:45:39,404 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of "Astrono.war"
09:45:39,839 INFO  [org.jboss.jpa] (MSC service thread 1-3) read persistence.xml for Astrono
09:45:39,850 INFO  [org.jboss.as.jpa] (MSC service thread 1-1) added javax.persistence.api, javaee.api, org.jboss.as.jpa, org.javassist dependencies to Astrono.war
09:45:39,852 INFO  [org.jboss.as.jpa] (MSC service thread 1-1) added (default provider) org.hibernate dependency to application deployment (since 1 PU(s) didn't specify jboss.as.jpa.providerModule)
09:45:39,852 INFO  [org.jboss.as.jpa] (MSC service thread 1-1) added org.hibernate dependency to application deployment
09:45:40,386 INFO  [org.jboss.jpa] (MSC service thread 1-2) starting Persistence Unit Service 'Astrono.war#Astrono' 
09:45:40,570 INFO  [org.hibernate.annotations.common.Version] (MSC service thread 1-2) HCANN000001: Hibernate Commons Annotations {4.0.0.CR2}
09:45:40,584 INFO  [org.hibernate.Version] (MSC service thread 1-2) HHH00412:Hibernate Core {4.0.0.CR2}
09:45:40,587 INFO  [org.hibernate.cfg.Environment] (MSC service thread 1-2) HHH00206:hibernate.properties not found
09:45:40,589 INFO  [org.hibernate.cfg.Environment] (MSC service thread 1-2) HHH00021:Bytecode provider name : javassist
09:45:40,611 INFO  [org.hibernate.ejb.Ejb3Configuration] (MSC service thread 1-2) HHH00204:Processing PersistenceUnitInfo [
	name: Astrono
	...]
09:45:40,815 INFO  [org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator] (MSC service thread 1-2) HHH00130:Instantiating explicit connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
09:45:41,548 WARN  [org.jboss.as.protocol] (pool-2-thread-2) JBAS012100: Got error closing channel JBREM00206: Channel is not open
09:45:42,002 INFO  [org.hibernate.dialect.Dialect] (MSC service thread 1-2) HHH00400:Using dialect: org.hibernate.dialect.PostgreSQLDialect
09:45:42,017 INFO  [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (MSC service thread 1-2) HHH00424:Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
09:45:42,027 INFO  [org.hibernate.engine.transaction.internal.TransactionFactoryInitiator] (MSC service thread 1-2) HHH00268:Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
09:45:42,032 INFO  [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (MSC service thread 1-2) HHH00397:Using ASTQueryTranslatorFactory
09:45:42,086 INFO  [org.hibernate.validator.util.Version] (MSC service thread 1-2) Hibernate Validator 4.2.0.Final
09:45:42,481 WARN  [org.hibernate.internal.SessionFactoryImpl] (MSC service thread 1-2) HHH00008:JTASessionContext being used with JDBCTransactionFactory; auto-flush will not operate correctly with getCurrentSession()
09:45:42,603 Informações [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-4) Inicializando Mojarra 2.1.3 (SNAPSHOT 20110825) para o contexto '/Astrono'
09:45:45,158 Informações [org.primefaces.webapp.PostConstructApplicationEventListener] (MSC service thread 1-4) Running on PrimeFaces 3.2
09:45:45,199 INFO  [org.jboss.web] (MSC service thread 1-4) registering web context: /Astrono
09:45:45,435 INFO  [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "Astrono.war"
09:46:27,486 INFO  [org.hibernate.dialect.Dialect] (http-localhost-127.0.0.1-9090-1) HHH00400:Using dialect: org.hibernate.dialect.PostgreSQLDialect
09:46:27,500 INFO  [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (http-localhost-127.0.0.1-9090-1) HHH00424:Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
09:46:27,501 INFO  [org.hibernate.engine.transaction.internal.TransactionFactoryInitiator] (http-localhost-127.0.0.1-9090-1) HHH00268:Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
09:46:27,502 INFO  [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (http-localhost-127.0.0.1-9090-1) HHH00397:Using ASTQueryTranslatorFactory
09:46:32,323 Advertência [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-localhost-127.0.0.1-9090-1) #{autenticaLogin.login()}: java.lang.NullPointerException: javax.faces.FacesException: #{autenticaLogin.login()}: java.lang.NullPointerException
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.component.UICommand.broadcast(UICommand.java:315) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
	at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49) [jboss-as-jpa-7.0.2.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at java.lang.Thread.run(Thread.java:722) [:1.7.0_02]
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	... 22 more
Caused by: java.lang.NullPointerException
	at br.com.astronomia.bean.AutenticaLogin.login(AutenticaLogin.java:29) [classes:]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.7.0_02]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [:1.7.0_02]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [:1.7.0_02]
	at java.lang.reflect.Method.invoke(Method.java:601) [:1.7.0_02]
	at org.apache.el.parser.AstValue.invoke(AstValue.java:196) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	... 23 more

Obrigado!!

T

é isso mesmo
agora temos outro erro

Então vamos lá:

Você criou um datasource no jboss?

pq não vejo configuração de banco no seu .xml (como Usuario e senha do banco)

só me confirme isso

P

criei…
meu standalone.xml

<datasource jndi-name="java:jboss/postgresqlDS" pool-name="org.postgresql" enabled="true" jta="true" use-java-context="true" use-ccm="true">
                    <connection-url>
                        jdbc:postgresql://localhost:5432/astronomia
                    </connection-url>
                    <driver-class>
                        org.postgresql.Driver
                    </driver-class>
                    <driver>
                        postgresql
                    </driver>
                    <pool>
                        <min-pool-size>
                            0
                        </min-pool-size>
                        <max-pool-size>
                            10
                        </max-pool-size>
                        <prefill>
                            true
                        </prefill>
                        <use-strict-min>
                            false
                        </use-strict-min>
                        <flush-strategy>
                            FailingConnectionOnly
                        </flush-strategy>
                    </pool>
                    <security>
                        <user-name>
                            postgres
                        </user-name>
                        <password>
                            hinako
                        </password>
                    </security>
                </datasource>

em outra parte do sistema, consigo inserir, alterar e excluir usuario do banco…
por isso pensei que talvez o problema fosse na logica do meu programa :S

T

e outra você colocou os .jar do hibernate na pasta lib?

T
Query query = getEntityManager().createQuery("from usuario u where u.username = :username AND u.senha = :senha");

from Usuario <----- acerte e tente rodar

P

então… o jboss já nao possui essas libs?? Se não, não adicionei heheh

e quanto a query, mudei mas não deu certo não… quanto a isso, uma duvida… este “usuario” seria a tabela ou a classe?? Pq no banco esta como “usuario” o nome da tabela…

T

Você esta usando JPQL

Seria a classe que no caso é um Entity


eh pra ter sim as libs

pcsantana:
então… o jboss já nao possui essas libs?? Se não, não adicionei heheh

e quanto a query, mudei mas não deu certo não… quanto a isso, uma duvida… este “usuario” seria a tabela ou a classe?? Pq no banco esta como “usuario” o nome da tabela…

T

você inseriu a lib da JDBC do postgres

compatível com a versão do seu banco?
no jboss?

P

eu tinha inserido somente nas pastas do Jboss… em ~\modules\org\postgresql\main

agora inseri no projeto tbm… na pasta lib, mas parece que não teve mudanças no erro :s

T

Se no jboss já tem
não precisa por na pasta do projeto

Esse projeto já funciona certo?.. so está dando erro agora que você esta tentando pegar usuario e senha?

pcsantana:
eu tinha inserido somente nas pastas do Jboss… em ~\modules\org\postgresql\main

agora inseri no projeto tbm… na pasta lib, mas parece que não teve mudanças no erro :s

T

eu tentei usar o jboss 7.0 e não consegui criar um data source nele

dai pesquisei na net e ngm conseguia criar da maneira normal
eu percebi que vc esta usando a versao 7.0

mas você falou que seu sistema esta funcionando so isso que esta dando problema, entao descarte essa possibilidade

P

Então… eu estou começando este projeto a pouco tempo… a unica coisa que fiz até agora foi tentar realizar cadastro de usuarios (ja possuia um codigo de exemplo)… e essa parte está funcionando…
vo postar aqui a classe DAO inteira que faz isso… talvz tenha algo que ajude

@ManagedBean(eager=true)
@ApplicationScoped

public class EntityManagerBuilder {

	private EntityManager entityManager;

	public EntityManager getEntityManager() {
		if(entityManager == null){
			createEntityManager();
		}
		return entityManager;
	}
	
	private void createEntityManager(){
		
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("Astrono");
		entityManager = factory.createEntityManager();
		
	}
	
	public boolean verificarUsuario (String username, String senha){
		
		boolean valido = false;
		
		Query query = getEntityManager().createQuery("from Usuario u where u.username = :username AND u.senha = :senha");
		query.setParameter("username", username);
		query.setParameter("senha", senha);
		
		Usuario user = (Usuario) query.getSingleResult();
			
		if(user != null){
			valido = true;
		}
		return valido;	
	}		
}

UsuarioBen

@ManagedBean
@ViewScoped
public class UsuarioBean {
	
	@ManagedProperty(value="#{entityManagerBuilder.entityManager}") //busca no entityManager e injeta objeto
	private EntityManager entityManager;
	
	private List<Usuario> lista;
	private Usuario selecionado;
	private Panel panel_novouser;
	
	public void salvar(){
		
		try {		
			FacesMessage msg = null;
			
			getEntityManager().getTransaction().begin();
			
			if(getSelecionado().getCod_usuario() == null){
				getEntityManager().persist(selecionado);
			}
			
			getEntityManager().getTransaction().commit();
			
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cadastro realizado com Sucesso! Aguarde a Confirmação.", "");
			FacesContext.getCurrentInstance().addMessage(null, msg);
			
			panel_novouser.setRendered(false);
			selecionado = null;
			refreshList();
			
		} 
		catch (Exception e) {
			// TODO: handle exception
		}		
	}

	public void refreshList(){
		
		lista = getEntityManager().createQuery("from Usuario").getResultList(); 
			
	}
        //getters e setters
A

posso estar falando besteira mas pelo erro:


09:46:32,323 Advertência [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-localhost-127.0.0.1-9090-1) #{autenticaLogin.login()}: java.lang.NullPointerException: javax.faces.FacesException: #{autenticaLogin.login()}: java.lang.NullPointerException

parece faltar uma intancia de Usuario, ex:

@ManagedBean  
@SessionScoped  
public class AutenticaLogin {        
    private EntityManagerBuilder entityDAO;  
    private Usuario usuario = new Usuario();
T

private Usuario selecionado;

coloque assim

private Usuario selecionado = new Usuario();

P

pelo erro, realmente parece que algo esta retornando nulo… mas nao sei o que…
fiz a instancia do usuario no getter dele

public Usuario getUsuario() {
		if(usuario == null){
			usuario = new Usuario();
		}
		return usuario;
	}
	
	public EntityManagerBuilder getEntityDAO() {
		if(entityDAO == null){
			entityDAO = new EntityManagerBuilder();
		}
		return entityDAO;
	}

mas por via das duvidas, resolvi por como vc recomendou, mas o problema continua =/

11:13:22,621 INFO  [org.jboss.web] (MSC service thread 1-4) registering web context: /Astrono
11:13:22,683 INFO  [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "Astrono.war"
11:13:26,656 INFO  [org.hibernate.dialect.Dialect] (http-localhost-127.0.0.1-9090-1) HHH00400:Using dialect: org.hibernate.dialect.PostgreSQLDialect
11:13:26,657 INFO  [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (http-localhost-127.0.0.1-9090-1) HHH00424:Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
11:13:26,658 INFO  [org.hibernate.engine.transaction.internal.TransactionFactoryInitiator] (http-localhost-127.0.0.1-9090-1) HHH00268:Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
11:13:26,659 INFO  [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (http-localhost-127.0.0.1-9090-1) HHH00397:Using ASTQueryTranslatorFactory
11:13:32,421 Advertência [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-localhost-127.0.0.1-9090-1) #{autenticaLogin.login()}: java.lang.NullPointerException: javax.faces.FacesException: #{autenticaLogin.login()}: java.lang.NullPointerException
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.component.UICommand.broadcast(UICommand.java:315) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
	at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49) [jboss-as-jpa-7.0.2.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at java.lang.Thread.run(Thread.java:722) [:1.7.0_02]
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	... 22 more
Caused by: java.lang.NullPointerException
	at br.com.astronomia.bean.AutenticaLogin.login(AutenticaLogin.java:29) [classes:]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.7.0_02]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [:1.7.0_02]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [:1.7.0_02]
	at java.lang.reflect.Method.invoke(Method.java:601) [:1.7.0_02]
	at org.apache.el.parser.AstValue.invoke(AstValue.java:196) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	... 23 more

Só dizer que esse erro acontece somente quando clico no botao “login”… e não quando starto a aplicação (nao sei se isso qer dizer alguma coisa)
Mas obrigado!

P

mas isso no meu UsuarioBean?? Porque não estou usando essa classe para fzer a autenticação… apenas mostrei como estava fazendo o cadastro do usuario (parte que esta funcionando)

T

eu não acho isso legal

@Id @SequenceGenerator(name="user", sequenceName="usuario_cod_usuario_seq",allocationSize=1) @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="user") @Column(name="cod_usuario", unique=true, nullable=false) public Integer getCod_usuario() { return cod_usuario; }

por anotação no get

Sempre coloque no atributo

por exemplo:

@Id @SequenceGenerator(name="user", sequenceName="usuario_cod_usuario_seq",allocationSize=1) @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="user") @Column(name="cod_usuario", unique=true, nullable=false) private Integer cod_usuario;

O cadastro de usuário está funcionando ?

T
public boolean verificarUsuario (String username, String senha){  
              
            boolean valido = false;  
              
            Query query = getEntityManager().createQuery("from usuario u where u.username = :username AND u.senha = :senha");  
            query.setParameter("username", username);  
            query.setParameter("senha", senha);  
              
            Usuario user = (Usuario) query.getSingleResult();  
                  
            if(user != null){  
                valido = true;  
            }  
            return valido;  
              
        }

Mude para isso e outra "user" voce não tem isso ?

teste isso

public boolean verificarUsuario (String username, String senha){  
              
            boolean valido = false;  
              
            Query query = getEntityManager().createQuery("from Usuario u where u.username = :username AND u.senha = :senha");  
            query.setParameter("username", username);  
            query.setParameter("senha", senha);  
              
            Usuario user = (Usuario) query.getSingleResult();  
                  
            if(username != null){  
                valido = true;  
            }  
            return valido;  
              
        }  


sua comparação voce colocou user ?

é username
A

porque não usa o debug e não olha onde esta o erro ?

P

desculpe se estiver errado, mas ali eu não estou criando um atributo do tipo Usuario, e instanciando ele com o resultado da query?? Se eu por username, aonde que eu vou comparar com o resultado da query?

Obrigado

P

entao aix… o problema é que nao consigo (nao sei msmo) usar o debug no eclipse… =/

H

Desculpe mas… oq vc tem nessa linha: at br.com.astronomia.bean.AutenticaLogin.login(AutenticaLogin.java:29)

P

galera… tive uma evolução (ou nao, hehe)
O valor nulo que ele tava pegando era na classe AutenticaLogin, o atributo do meu DAO nao tava instanciado…
Mas o erro é outro agora… parece que ele nao ta encontrando a entidade no query

15:06:58,710 INFO  [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "Astrono.war"
15:07:02,339 INFO  [org.hibernate.dialect.Dialect] (http-localhost-127.0.0.1-9090-1) HHH00400:Using dialect: org.hibernate.dialect.PostgreSQLDialect
15:07:02,352 INFO  [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (http-localhost-127.0.0.1-9090-1) HHH00424:Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
15:07:02,353 INFO  [org.hibernate.engine.transaction.internal.TransactionFactoryInitiator] (http-localhost-127.0.0.1-9090-1) HHH00268:Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
15:07:02,354 INFO  [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (http-localhost-127.0.0.1-9090-1) HHH00397:Using ASTQueryTranslatorFactory
15:07:06,194 INFO  [org.hibernate.dialect.Dialect] (http-localhost-127.0.0.1-9090-1) HHH00400:Using dialect: org.hibernate.dialect.PostgreSQLDialect
15:07:06,194 INFO  [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (http-localhost-127.0.0.1-9090-1) HHH00424:Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
15:07:06,195 INFO  [org.hibernate.engine.transaction.internal.TransactionFactoryInitiator] (http-localhost-127.0.0.1-9090-1) HHH00268:Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
15:07:06,195 INFO  [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (http-localhost-127.0.0.1-9090-1) HHH00397:Using ASTQueryTranslatorFactory
15:07:06,399 INFO  [stdout] (http-localhost-127.0.0.1-9090-1) Hibernate: 
15:07:06,399 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)     select
15:07:06,400 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)         usuario0_.cod_usuario as cod1_8_,
15:07:06,400 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)         usuario0_.email as email8_,
15:07:06,400 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)         usuario0_.fone as fone8_,
15:07:06,400 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)         usuario0_.nome as nome8_,
15:07:06,401 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)         usuario0_.senha as senha8_,
15:07:06,401 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)         usuario0_.tipousuario as tipousua6_8_,
15:07:06,401 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)         usuario0_.username as username8_ 
15:07:06,401 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)     from
15:07:06,402 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)         usuario usuario0_ 
15:07:06,402 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)     where
15:07:06,402 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)         usuario0_.username=? 
15:07:06,402 INFO  [stdout] (http-localhost-127.0.0.1-9090-1)         and usuario0_.senha=? limit ?

15:07:06,474 Advertência [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-localhost-127.0.0.1-9090-1) #{autenticaLogin.login()}: javax.persistence.NoResultException: No entity found for query: javax.faces.FacesException: #{autenticaLogin.login()}: javax.persistence.NoResultException: No entity found for query
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.component.UICommand.broadcast(UICommand.java:315) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
	at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49) [jboss-as-jpa-7.0.2.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at java.lang.Thread.run(Thread.java:722) [:1.7.0_02]
Caused by: javax.faces.el.EvaluationException: javax.persistence.NoResultException: No entity found for query
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	... 22 more
Caused by: javax.persistence.NoResultException: No entity found for query
	at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:286) [hibernate-entitymanager-4.0.0.CR2.jar:4.0.0.CR2]
	at br.com.astronomia.dao.EntityManagerBuilder.verificarUsuario(EntityManagerBuilder.java:42) [classes:]
	at br.com.astronomia.bean.AutenticaLogin.login(AutenticaLogin.java:33) [classes:]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.7.0_02]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [:1.7.0_02]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [:1.7.0_02]
	at java.lang.reflect.Method.invoke(Method.java:601) [:1.7.0_02]
	at org.apache.el.parser.AstValue.invoke(AstValue.java:196) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
	... 23 more

Meu bean AutenticaLogin

@ManagedBean
@SessionScoped
public class AutenticaLogin {
	
	private EntityManagerBuilder entityDAO;
	private Usuario usuario;
	
	public String login(){
		
		FacesMessage msg = null;  
		boolean logado = false;
		logado = getEntityDAO().verificarUsuario(this.getUsuario().getUsername(), this.getUsuario().getSenha());  //AQUI MEU entityDAO não estava instanciado..
		
		if(logado){
			return "sucesso";
		}
		else{
			msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao fazer login", "Usuário ou senha inválidos");
			FacesContext.getCurrentInstance().addMessage(null, msg);
			return "erro";	 
		}	
	}

	public Usuario getUsuario() {
		if(usuario == null){
			usuario = new Usuario();
		}
		return usuario;
	}
	public EntityManagerBuilder getEntityDAO() {
		if(entityDAO == null){
			entityDAO = new EntityManagerBuilder();
		}
		return entityDAO;
	}

Minha classe DAO

@ManagedBean(eager=true)
@ApplicationScoped
public class EntityManagerBuilder {

	private EntityManager entityManager;

	public EntityManager getEntityManager() {
		if(entityManager == null){
			createEntityManager();
		}
		return entityManager;
	}
	
	private void createEntityManager(){
		
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("Astrono");
		entityManager = factory.createEntityManager();
		
	}
	public boolean verificarUsuario (String username, String senha){
		
		boolean valido = false;
				
		Query query = getEntityManager().createQuery("from Usuario u where u.username = :username AND u.senha = :senha");
		query.setParameter("username", username);
		query.setParameter("senha", senha);
		
		Usuario user = (Usuario) query.getSingleResult();
			
		if(user != null){
			valido = true;
		}
		return valido;	
	}		
}

Se alguem tiver uma luz com o “novo” erro… ;s
Obrigado!!

H

dá uma olhada aqui: http://uaihebert.com/?p=1137&page=7

P

Obrigado jakefrog pelo link :slight_smile:

vou dar uma olhada, e depois posto o resultado

P

Primeiro gostaria de agradecer a todos que me ajudaram!!! Serio mesmo!! Consegui fazer a validação… :smiley:
parece que o problema era algo no

Usuario user = (Usuario) query.getSingleResult();

segundo o link que o jakefrog me passou, esse metodo tem alguns cuidados… a unica coisa que fiz foi colocar dentro de um try/catch

public boolean verificarUsuario (String username, String senha){
		
		boolean valido = false;		
		try{
			Query query = getEntityManager().createQuery("from Usuario u where u.username = :username AND u.senha = :senha");
			query.setParameter("username", username);
			query.setParameter("senha", senha);
			
			Usuario user = (Usuario) query.getSingleResult();
			
			if(user != null){
				valido = true;
			}
		}
		catch (Exception e) {
			System.out.println("Erro: " + e.getMessage());
			e.printStackTrace();
		}
		return valido;	
	}

só estou com uma pequena duvida… guardo o usuario na sessao porque defini meu bean como SessionScope certo???
E como posso tirar ele da sessao? (logout)

Mas enfim, obrigado a todos novamente!

H

Aqui tem um modelo http://uaihebert.com/?p=836&page=8.

Resumidamente basta fazer getRequest().getSession().invalidate();

P

acho q pelo pouco conhecimento que ainda tenho nao consegui compreender mto bem o código do link…
Preciso criar um HttpServlet? pq apenas

getRequest().getSession().invalidate();

não funciona… na vdd não é que nao funciona, é que nao consigo usar (nao existe ainda imagino) no meu projeto um getRequest();

H

Sim, precisa.

A sessão (inclusive do MB do JSF) está presa ao HttpSession.

No link mostra como recuperar o HttpRequest.

T

Desculpe eu nao tinha visto

esquece o que eu falei erro meu

pcsantana:

tmvolpato

Mude para isso e outra “user” voce não tem isso ?

teste isso

view plaincopy to clipboardprint?
  public boolean verificarUsuario (String username, String senha){    
                
            boolean valido = false;    
                
            Query query = getEntityManager().createQuery("from Usuario u where u.username = :username AND u.senha = :senha");    
            query.setParameter("username", username);    
            query.setParameter("senha", senha);    
                
            Usuario user = (Usuario) query.getSingleResult();    
                    
            if(username != null){    
                valido = true;    
            }    
            return valido;    
                
        }

sua comparação voce colocou user ?

é username

desculpe se estiver errado, mas ali eu não estou criando um atributo do tipo Usuario, e instanciando ele com o resultado da query?? Se eu por username, aonde que eu vou comparar com o resultado da query?

Obrigado

P

Que isso tmvolpato! Sou muito grato pela sua ajuda!! :smiley:

T

Seu problema agora está em matar a sessão do usuário?

pcsantana:
acho q pelo pouco conhecimento que ainda tenho nao consegui compreender mto bem o código do link…
Preciso criar um HttpServlet? pq apenas

getRequest().getSession().invalidate();

não funciona… na vdd não é que nao funciona, é que nao consigo usar (nao existe ainda imagino) no meu projeto um getRequest();

T

se for isso

é so criar um metodo Logout

Exemplo:

public void doLogout(){

FacesContext fc = FacesContext.getCurrentInstance();   
       HttpSession session = (HttpSession)fc.getExternalContext().getSession(false);   
       session.invalidate();  


}

ou com retorno para a tela de login

public String doLogout(){
FacesContext fc = FacesContext.getCurrentInstance();   
       HttpSession session = (HttpSession)fc.getExternalContext().getSession(false);   
       session.invalidate();  
      
return "paginalogin.xhtml";

}
P

opaa!! Valeu novamente!!! :smiley:

facilitou bastante realmente…
Obrigadoo!

T

flw

rodou 100% agora?

T

coloque o topico como resolvido

se não tiver mais duvida

Att

P

Aham… já havia alterado :slight_smile: heheh

Criado 18 de maio de 2012
Ultima resposta 19 de mai. de 2012
Respostas 38
Participantes 4