JSF 2.2+JPA (Eclipse Link 2.5 Kepler) +Spring 3.2.4 + Glassfish 4.0 + PrimeFaces 3.5

[quote=UpTheIrons]Sciuba,

Não olhei todo o tópico, mas de antemão adianto que migrei para o Spring pro conta do “mercado”, acho CDI, EJB, EclipseLink, Glassfish
mais “fácil” do que o Spring, Hibernate, JBoss, mas é onde estou hoje e gostando, pelo que vejo é bastante comum as pessoas apanharem
do Spring, mas isso é só no início mesmo, após as configurações OK, o resto anda bem, eu to gostando, principalmente por poder testar
minhas classes de forma fácil.

[quote]porém não consigo mais “imaginar” oque pode estar ocorrendo para a transação no insert/update
estar marcado com rollback mesmo utilizando as N configurações que o @transactional tem.[/quote]

Olhando o erro acima:

Parece que falta você informar o Provider, Hibernate, EclipseLink…

[code]


<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
	<property name="database" value="${database}" />
	<property name="databasePlatform" value="${plataform}" />
	<property name="showSql" value="${show_sql}" />
</bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
	<property name="persistenceUnitName" value="PU" />
	<property name="dataSource" ref="datasource" />
	<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
</bean>[/code]

Note que na minha configuração (parte dela), o entityManagerFactory tem a propriedade jpaVendorAdapter que se refere
ao PROVIDER, no meu caso HibernateJpaVendorAdapter.

Não acha que falta algo similar?

Vamos acompanhando isso aí…

Outra coisa, evitei muito o Spring devido a quantidade de XML, e mesmo após o suporte às annotations, eu prefiro que
essas configurações permaneçam em XML.

Falew!

[/quote]

Olá UpTheIrons obrigado pela resposta,

Mas creio que este erro que você pegou foi ao teste que tinha executado tentando configurar tudo pela classe java, irei postar abaixo os meus arquivos de configuração do jeito qu estão hoje e o stacktrace que estou recebendo quando tento fazer um insert/update.

persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="AdviceTeste" transaction-type="JTA">
        <jta-data-source>jdbc/WPOSPool</jta-data-source>
            
            <class>br.adv.wpos.entities.AcdAluno</class>
            <class>br.adv.wpos.entities.TgrPessoa</class>
            
            <exclude-unlisted-classes>true</exclude-unlisted-classes>
            
    
    </persistence-unit>
</persistence>

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">
    
    
    <jee:jndi-lookup id="dataSource" jndi-name="jdbc/WPOSPool"/>    
    
       
    <bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect" />
    
    <!-- JPA -->  
    <!-- Gerenciador de EntityManagerFactory -->  
    <bean id="emf" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">  
        <property name="persistenceUnitName" value="AdviceTeste" />  
    </bean> 
     
   
    
    <bean id="transacaoJPA" class="org.springframework.transaction.jta.JtaTransactionManager"/>
                                    
    <tx:jta-transaction-manager />
           
      
       <context:component-scan base-package="br.adv.wpos" />               
   
      <context:annotation-config />
  
        <tx:annotation-driven transaction-manager="transacaoJPA" />
    
   
    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 
    
    
</beans>

and the console error:

WARNING: #{telaPrincipal.populaLista}: org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException: Transaction marked for rollback.
javax.faces.FacesException: #{telaPrincipal.populaLista}: org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException: Transaction marked for rollback.
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
    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:198)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:722)
Caused by: javax.faces.el.EvaluationException: org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException: Transaction marked for rollback.
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    ... 34 more
Caused by: org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException: Transaction marked for rollback.
    at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1014)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:755)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:475)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:270)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy351.pesquisaAlunosPorId(Unknown Source)
    at br.adv.wpos.service.impl.AcdAlunoServiceImpl.pesquisaAlunosPorId(AcdAlunoServiceImpl.java:20)
    at br.adv.wpos.mbean.TelaPrincipalBBean.populaLista(TelaPrincipalBBean.java:25)
    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 com.sun.el.parser.AstValue.invoke(AstValue.java:275)
    at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
    at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
    at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)

Notei que vc havia tentado:

[code]

<!-- JPA -->    
<!-- Gerenciador de EntityManagerFactory -->    
<bean id="emf" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">    
    <property name="persistenceUnitName" value="AdviceTeste" />    
</bean>   [/code]

Em nenhum momento vc está usando o jpaDialect, dê uma olhada como fiz, no post acima.

Outra coisa, se sua aplicação for de pequeno ou médio porte, utilize o JPATransactionManager mesmo.

Segue abaixo a configuração de modo mais completo:

<!-- CONFIGURAÇÃO DO SPRING -->
	<context:component-scan base-package="br.com.orion" />
	<context:annotation-config />

	<context:property-placeholder location="classpath*:jdbc.properties" />

	<bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName" value="java:jboss/datasources/sigeDS" />
	</bean>

	<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
		<property name="database" value="${database}" />
		<property name="databasePlatform" value="${plataform}" />
		<property name="showSql" value="${show_sql}" />
	</bean>

	<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
		<property name="persistenceUnitName" value="PU" />
		<property name="dataSource" ref="datasource" />
		<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
	</bean>

	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
		<property name="entityManagerFactory" ref="entityManagerFactory" />
	</bean>

	<tx:advice id="txAdvice">
		<tx:attributes>
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>

	<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
		<property name="scopes">
			<map>
				<entry key="view">
					<bean class="br.com.orion.util.ViewScoped" />
				</entry>
			</map>
		</property>
	</bean>

E no Persistence.xml:

[code]

<?xml version="1.0" encoding="UTF-8"?>



org.hibernate.ejb.HibernatePersistence
java:jboss/datasources/sigeDS

           .... MINHAS ENTIDADES

</persistence-unit>

[/code]

Estava usando JTA antes, mas pelo que li, não era necessário, de qq forma é algo ainda a verificar.

Falew.

Então, ainda acho que o problema é indicar o Provider, vja a sua configuração e a minha que acabei de postar.

Outra coisa, se estiver usando o Glassfish, não precisa apontar suas entidades, bastaria isto:

<exclude-unlisted-classes>false</exclude-unlisted-classes> ...

Você está usando Primefaces 3.5 com JSF 2.2, e está funcionando sem problemas?!
Eu pensei que só a versão 4.0 seria compatível com o JSF 2.2.

[quote=UpTheIrons]Então, ainda acho que o problema é indicar o Provider, vja a sua configuração e a minha que acabei de postar.

Outra coisa, se estiver usando o Glassfish, não precisa apontar suas entidades, bastaria isto:

<exclude-unlisted-classes>false</exclude-unlisted-classes> ...

[/quote]

Amigo obrigado pela atenção, irei estar efetuando os testes e posto o resultado. Obrigado