Amigos estou “apanhando” para configurar este ambiente e subir corretamente.
Configurei o pool de conexões no próprio Glassfish e em outro projeto (que não utiliza o Spring) o mesmo pool esta funcionando Ok.
Eu sei que o Spring é muito mais que isso, mas ele gerenciar as transações e inserir a Injeção de dependência ja esta ótimo pra mim no momento.
Creio que deve estar faltando alguma configuração. Por favor que puder/ souber oque esta errado ou faltando ou ate me indicar algum tutorial que supra ou tenha algo parecido para seguir como exemplo eu agradeço muito!
Obrigado pela resposta drsmachado, então o outro projeto que menciono que esta funcionando é exatamente com o CDI e esta funfando bem legal gerenciando as transações e tudo mais, mas queria tentar montar um com Spring para fazer um “de para” entre as duas arquiteturas.
Então sugiro remover toda a padronização…
CDI (IoC e DI): Spring Framework
JPA : Hibernate (ao invés de EntityManager, usar Session)
Isso é plenamente possível e fica mais fácil gerenciar pelo Spring…
usar session fica bem mais facil com spring como o amigo a cima disse.
é complicado se fizer por jpa
eu fiz uma vez e confesso da vontade de chuta tudo kkkk (ate dar certo pelo tempo que leva para você entender)
mas funcionou…
Obrigado pelo Link eu olhei sim e utilizei como exemplo. Após algumas pesquisas também consegui fazer o projeto subir e rodar, porém quando chamo a action de um metodo que executa um select simples, esta me retornando o seguinte erro: [color=black]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. [/color]
Eu debuguei e esta funcionando OK a injeção de dependência, ele executa a query traz o retorno o erro esta acontecendo ao retornar a lista e ai estoura esta Exception que mencionei acima
Creio que eu esteja no quase…
Segue o 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">
<!-- Data Source -->
<bean id="poolBean" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/WPOSPool" />
<property name="resourceRef" value="true" />
</bean>
<!-- Compartilha a transação JPA -->
<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>
<!-- Gerenciador de transação -->
<bean id="transacaoJPA" class="org.springframework.transaction.jta.JtaTransactionManager" />
<tx:jta-transaction-manager />
<context:component-scan base-package="br.adv.wpos" />
<context:annotation-config />
<!-- Localiza e faz auto DI para os bean com @Transaction -->
<tx:annotation-driven transaction-manager="transacaoJPA" />
<!-- Localiza e faz auto DI para os bean com @PersistenceContext -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
</beans>
Quem puder dar mais alguma opinião eu agradeço muito!
INFO: EclipseLink, version: Eclipse Persistence Services - 2.5.0.v20130507-3faac2b
INFO: file:/D:/GlassFish4/glassfish/domains/domain1/eclipseApps/AdviceTeste_2/WEB-INF/classes/_AdviceTeste login successful
INFO: WebModule[null] ServletContext.log():No Spring WebApplicationInitializer types detected on classpath
INFO: Registering the Jersey servlet application, named org.eclipse.persistence.jpa.rs.service.JPARSApplication, at the servlet mapping /persistence/*,
with the Application class of the same name.
INFO: Inicializando Mojarra 2.2.0 ( 20130502-2118 https://svn.java.net/svn/mojarra~svn/tags/2.2.0@11930) para o contexto '/AdviceTeste_2'
WARNING: WELD-001529 An InjectionTarget implementation is created for a class org.primefaces.context.PrimePartialViewContextFactory which
does not have any appropriate constructor.
INFO: Running on PrimeFaces 3.5
INFO: WebModule[null] ServletContext.log():Initializing Spring root WebApplicationContext
INFO: Root WebApplicationContext: initialization started
INFO: Refreshing Root WebApplicationContext: startup date [Mon Sep 16 11:19:03 BRT 2013]; root of context hierarchy
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]
INFO: JSR-250 'javax.annotation.ManagedBean' found and supported for component scanning
INFO: JSR-330 'javax.inject.Named' annotation found and supported for component scanning
INFO: JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@138c4b9: defining beans [poolBean,jpaDialect,emf,transacaoJPA,transactionManager,acdAlunoDaoImpl,telaPrincipal,acdAlunoServiceImpl,
org.springframework.context.annotation.internalConfigurationAnnotationProcessor,
org.springframework.context.annotation.internalAutowiredAnnotationProcessor,
org.springframework.context.annotation.internalRequiredAnnotationProcessor,
org.springframework.context.annotation.internalCommonAnnotationProcessor,
org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.aop.config.internalAutoProxyCreator,
org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,
org.springframework.transaction.interceptor.TransactionInterceptor#0,
org.springframework.transaction.config.internalTransactionAdvisor,org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,
org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy
INFO: Building JPA EntityManagerFactory for persistence unit 'AdviceTeste'
INFO: Using JTA UserTransaction: com.sun.enterprise.transaction.UserTransactionImpl@1c6cbc1
INFO: Using JTA TransactionManager: com.sun.enterprise.transaction.TransactionManagerHelper@9628da
INFO: Using JTA TransactionSynchronizationRegistry: com.sun.enterprise.transaction.TransactionSynchronizationRegistryImpl@7ee378
INFO: Using JTA UserTransaction: com.sun.enterprise.transaction.UserTransactionImpl@8fd3bb
INFO: Using JTA TransactionManager: com.sun.enterprise.transaction.TransactionManagerHelper@9628da
INFO: Using JTA TransactionSynchronizationRegistry: com.sun.enterprise.transaction.TransactionSynchronizationRegistryImpl@7ee378
INFO: Root WebApplicationContext: initialization completed in 1801 ms
INFO: Loading application [AdviceTeste_2] at [/AdviceTeste_2]
INFO: AdviceTeste_2 was successfully deployed in 10.216 milliseconds.
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 $Proxy239.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)
... 35 more
Caused by: javax.transaction.RollbackException: Transaction marked for rollback.
at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:445)
at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:854)
at com.sun.enterprise.transaction.UserTransactionImpl.commit(UserTransactionImpl.java:212)
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1011)
... 55 more
E ainda pra ajudar o site do springsource foi modificado e não estou conseguindo nem postar no forum de lá! para ver se consigo acertar esta configuração! :-S
Até aqui parece tudo certo… ainda falta examinar o código do DAO (pesquisaAlunosPorId()).
Comigo, pelo menos, erros assim são de violação de chave, ou erro de SQL. Um outro caso é o generator da chave primária “atrasado”, ou seja, ele tenta inserir um registro, mas na hora de checar a sequência, bate com outro valor já cadastrado e dá erro de violação. Consequentemente, a transação fica marcada como rollback…
Até aqui parece tudo certo… ainda falta examinar o código do DAO (pesquisaAlunosPorId()).
Comigo, pelo menos, erros assim são de violação de chave, ou erro de SQL. Um outro caso é o generator da chave primária “atrasado”, ou seja, ele tenta inserir um registro, mas na hora de checar a sequência, bate com outro valor já cadastrado e dá erro de violação. Consequentemente, a transação fica marcada como rollback…
Não sei se pode ser o seu caso.[/quote]
Então Roselito obrigado pela resposta, o fonte do DAO esta em uma resposta anterior aqui neste post, o estranho é que estou fazendo um simples select mais nada é so pra testar mesmo e este erro esta me assombrando e estou ficando sem idéia de como resolver isso.
Se puder dar uma olhada no DAO como mencionei de repente tem algo de errado la que não estou enxergando!