Mostrar erro durante persist no banco (ex: chave duplicada) na View. JSF + JPA + Postgre

Olá pessoal

Andei pesquisando, mas não consegui fazer com que o erro mostrado no banco, fosse apresentado na view (pelo componente do primefaces ‘messages’, por exemplo).
Gostaria de saber, uma forma de fazer isso…
Por exemplo, se for cadastrar um usuário, e na hora de inserir, o nome de login ja existir… no console do Eclipse ele mostra o erro do banco (erro de restrição de unicidade)… tem como mostrar esse erro, ou ate mesmo personaliza-lo e apresenta-lo na view??
Tentei algo assim:

public void cadastrar() {

		FacesContext context = FacesContext.getCurrentInstance();
		try {
			getEntityManager().getTransaction().begin();
			
			if (getSelecionado().getCod_usuario() == null) {
				getEntityManager().persist(usuario_selecionado);
			}
			getEntityManager().getTransaction().commit();

			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Cadastrado realizado com Sucesso!", ""));
			usuario_selecionado = null;

		} catch (org.hibernate.exception.ConstraintViolationException e) {
                //MOSTRAR ERRO
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), ""));
		}
	}

Mas não deu certo =/
Acredito que seja algo um pouco mais complexo… se alguem puder me dar uma luz… alguma referencia, tutorial para estudo… qualquer coisa será bem vinda!
Agradeço desde já!!
Obrigado!!

Você chegou a ver se o seu método entra no catch ?

Não é melhor encapsular a sua mensagem em uma outra mais legível ?

Porque senão vai mostrar para o usuário uma mensagem em inglês e que ele não vai entender de erro de PK.

Você poderia pegar a exceção, pegar a mensagem associada a exceção e ver em qual erro ela se encaixa para criar uma mensagem sua personalizada.

Olá lele_vader, obrigado pela resposta! :smiley:

então… agora que voce comentou, coloquei um "System.out.println(“Erro: " + e.getMessage());” dentro do cacth, para ver se ele estava entrando…
e aparentemente não está… mas vc saberia me dizer pq??

quando ele encontra um erro nao deveria ir para o catch??
olha o erro, quando tendo colocar uma chave duplicada:

01/08/2012 10:09:45 com.sun.faces.lifecycle.InvokeApplicationPhase execute
AVISO: #{usuarioBean.cadastrar()}: javax.persistence.RollbackException: Error while committing the transaction
javax.faces.FacesException: #{usuarioBean.cadastrar()}: javax.persistence.RollbackException: Error while committing the transaction
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIData.broadcast(UIData.java:1093)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.EvaluationException: javax.persistence.RollbackException: Error while committing the transaction
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	... 24 more
Caused by: javax.persistence.RollbackException: Error while committing the transaction
	at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:90)
	at br.com.sico.bean.UsuarioBean.cadastrar(UsuarioBean.java:35)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:264)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 25 more
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: ERRO: duplicar valor da chave viola a restrição de unicidade "u_username"
	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1360)
	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1288)
	at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:78)
	... 34 more
Caused by: org.hibernate.exception.ConstraintViolationException: ERRO: duplicar valor da chave viola a restrição de unicidade "u_username"
	at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:128)
	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
	at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
	at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
	at $Proxy25.executeUpdate(Unknown Source)
	at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:56)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2856)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3297)
	at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:88)
	at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354)
	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:275)
	at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)
	at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
	at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1127)
	at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:325)
	at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
	at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
	at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:73)
	... 34 more
Caused by: org.postgresql.util.PSQLException: ERRO: duplicar valor da chave viola a restrição de unicidade "u_username"
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2096)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1829)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:510)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:386)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:332)
	at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
	at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
	... 50 more

Tenta colocar somente a classe da exceção.


catch(ConstraintViolationException e) {
}

Interessante é que ele jogou a exceção.
Tenta colocar essa classe PersistenceException em outro catch, pois pelo que vi você está usando jpa e colocando uma exceção específica do hibernate.

Por fim se ainda não descobrir coloque exception mesmo e dê uma olhada em qual classe a exceção se encontra.

obrigado pela atenção lele_vader :smiley:

então… fiz o que sugeriu, somente com:

catch(ConstraintViolationException e) { }
mas ele nao entrou no catch, e apareceu isso no console:


02/08/2012 22:30:16 org.apache.catalina.session.StandardManager doLoad
GRAVE: IOException while loading persisted sessions: java.io.EOFException
java.io.EOFException
	at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
	at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
	at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
	at java.io.ObjectInputStream.<init>(Unknown Source)
	at org.apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.java:58)
	at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:246)
	at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)
	at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5282)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
02/08/2012 22:30:16 org.apache.catalina.session.StandardManager startInternal
GRAVE: Exception loading sessions from persistent storage
java.io.EOFException
	at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
	at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
	at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
	at java.io.ObjectInputStream.<init>(Unknown Source)
	at org.apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.java:58)
	at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:246)
	at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)
	at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5282)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
02/08/2012 22:30:16 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-7070"]
02/08/2012 22:30:16 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
02/08/2012 22:30:16 org.apache.catalina.startup.Catalina start
INFO: Server startup in 5312 ms

outra coisa que fiz foi por outros catch:

catch (RollbackException e) { System.out.println(e.getMessage()); } catch (PersistenceException e) { System.out.println(e.getMessage()); }catch (Exception e) { System.out.println(e.getMessage()); }
em todos, ele entrou… e a messagem que ele imprimiu foi somente: Error while committing the transaction

o que voce acha??
e obrigado mais uma vez!

Você está escrevendo em arquivo ?
Porque está dando esse EOF exception ?

como assim escrevendo em arquivo?
sou novo ainda nisso… nem sei o que seria o EOF exception…

EOF é uma exceção de fim de arquivo.
Você está escrevendo em um file com HSQLDB não ?

Amigo, precisei fazer uma rápida pesquisa aqui para ver do que vc estava falando…

HSQLDB seria um banco de dados pelo visto, certo?

se for isso, acredito que eu não esteja fazendo isso não… (a não ser que, pela minha falta de experiencia, eu esteja fazendo algo sem saber que estou)

Me mostra o seu arquivo do hibernate

Agora já está entrando nos catch não é ?
Acho que não entrou em constraint, porque se não me engano essa exceção eu usei com arquivos do hibernate validator.

Debuga e ve o objeto da exceção para ver se tem algum atributo dizendo a mensagem do erro.
Acho que talvez o método getDetailedMessage

deixa só eu comentar uma coisa antes de continuar… andei mexendo no projeto por causa de otros problemas que estou tendo, dai fui testar agora inserir uma chave duplicada, e olha o erro que me apareceu

Ago 07, 2012 9:04:53 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
Grave: Error Rendering View[/sico/cadastro_usuario.xhtml]
java.lang.IllegalStateException: Cannot serialize a session while connected
	at org.hibernate.internal.SessionImpl.writeObject(SessionImpl.java:2030)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
	at java.util.HashMap.writeObject(HashMap.java:1014)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
	at java.util.HashMap.writeObject(HashMap.java:1014)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
	at com.sun.faces.renderkit.ClientSideStateHelper.doWriteState(ClientSideStateHelper.java:325)
	at com.sun.faces.renderkit.ClientSideStateHelper.writeState(ClientSideStateHelper.java:169)
	at com.sun.faces.renderkit.ResponseStateManagerImpl.getViewState(ResponseStateManagerImpl.java:135)
	at javax.faces.application.StateManager.getViewState(StateManager.java:555)
	at com.sun.faces.context.PartialViewContextImpl.renderState(PartialViewContextImpl.java:416)
	at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:300)
	at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
	at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:981)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:391)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)

Ago 07, 2012 9:04:53 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/sico] threw exception
java.lang.IllegalStateException: CDATA tags may not nest
	at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.startCDATA(HtmlResponseWriter.java:630)
	at javax.faces.context.ResponseWriterWrapper.startCDATA(ResponseWriterWrapper.java:172)
	at javax.faces.context.PartialResponseWriter.startError(PartialResponseWriter.java:342)
	at org.primefaces.context.PrimePartialResponseWriter.startError(PrimePartialResponseWriter.java:210)
	at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:200)
	at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:123)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)

sem querer abusar, tem ideia do que seria?

o arquivo persistence.xml que me pediu

<?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="sico" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<non-jta-data-source>java:comp/env/jdbc/sicoDS</non-jta-data-source>
		
		<class>sico.modelo.Usuario</class>
		
		<properties>
			<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JDBCTransactionFactory" /> 
			<property name="hibenate.show_sql" value="true"/>
			<property name="hibernate.format_sql" value="true"/>
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
			<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/sico"/>
			<property name="javax.persistence.jdbc.user" value="postgres"/>
			<property name="javax.persistence.jdbc.password" value="*****"/>
			<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
		</properties>
		
	</persistence-unit>
</persistence>

você está fechando a conexão ?

Tem que dar um session.close no finally.

Acredito que o erro se refere a isso

to vendo que preciso estudar muito ainda… hehe

eu nao chego a criar uma sessão… estou usando annotacion @ViewScoped

como que irei fechar entao??

e estou apanhando tbm pra chamar o metodo getDetailedMessage que mencionou… ;/

Calma ai.
@ViewScoped e do jsf.
Não tem nada haver com hibernate ou jpa.

É como é jpa é para fechar o entityManager

entityManager.close

Dá uma olhada aqui.

http://uaihebert.com/?p=1414

Me mostra o seu dao por favor

Porque voce definiu usuário,senha e url no persistence.xml, se voce referenciou um jndi

java:comp/env/jdbc/sicoDS

Ali já teria usuário,senha,driver e url

vou dar uma olhada!!

assim que eu tiver novidades posto aqui!!
Obrigado mais uma vez pela ajuda, e pela paciência comigo… (:

Abraços

nada.
qualquer coisa manda msg para o meu e-mail.

agora que vi que pediu para mostrar o DAO

@ManagedBean
@ApplicationScoped
public class EntityManagerBuilder implements Serializable{

	private static final long serialVersionUID = 1L;
	private EntityManager entityManager;

	public EntityManager getEntityManager() {
		if(entityManager == null){
			createEntityManager();
		}
		return entityManager;
	}
	
	private void createEntityManager(){
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("sico");
		entityManager = factory.createEntityManager();
	}

}

Aqui eu estava apanhando no começo para fazer a conexao do Tomcat com o Posgresql… dai tentei de tudo, ate que deu heheheh