Galera,
Estou com um problema que eu não consigo resolver e já tentei de tudo: configurei minha aplicação inteira no spring e tudo mais. Mas quando faço uma busca ele me retorna o seguinte erro:
Cannot join transaction: do not override hibernate.transaction.factory_class
Tiles definition factory found for request processor ''.
Cannot join transaction: do not override hibernate.transaction.factory_class
Hibernate: select lotemicros0_.ZZN_LOTEIN as ZZN1_4_, lotemicros0_.R_E_C_N_O_ as R2_4_, lotemicros0_.ZZN_DTGRAV as ZZN3_4_, lotemicros0_.ZZN_DTPROC as ZZN4_4_, lotemicros0_.ZZN_FILIAL as ZZN5_4_, lotemicros0_.ZZN_TIPO as ZZN6_4_ from ZZN010 lotemicros0_
TransactionSynchronization.beforeCompletion threw exception
java.lang.IllegalStateException: JTA TransactionManager not available
at org.hibernate.transaction.JTATransaction.registerSynchronization(JTATransaction.java:302)
at org.hibernate.ejb.EntityManagerImpl.close(EntityManagerImpl.java:100)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:346)
at $Proxy292.close(Unknown Source)
at org.springframework.orm.jpa.EntityManagerFactoryUtils$EntityManagerSynchronization.beforeCompletion(EntityManagerFactoryUtils.java:349)
at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCompletion(TransactionSynchronizationUtils.java:60)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCompletion(AbstractPlatformTransactionManager.java:848)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:646)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:319)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:631)
at br.edu.unianhanguera.plt.agente.microsiga.business.LoteMicrosigaFacade$$EnhancerByCGLIB$$1f4e13c1.findAll(<generated>)
at br.edu.unianhanguera.plt.agente.action.WelcomeAction.execute(WelcomeAction.java:37)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:333)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:111)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:313)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:647)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
============================
Total de Lotes: 10
======================
Hibernate: select itemmicros0_.ZZL_LOTEIN as ZZL31_1_, itemmicros0_.R_E_C_N_O_ as R1_1_, itemmicros0_.R_E_C_N_O_ as R1_5_0_, itemmicros0_.ZZL_IDITEM as ZZL2_5_0_, itemmicros0_.ZZL_SEQ as ZZL3_5_0_, itemmicros0_.ZZL_NUMERO as ZZL4_5_0_, itemmicros0_.ZZL_BAIRRO as ZZL5_5_0_, itemmicros0_.ZZL_CEP as ZZL6_5_0_, itemmicros0_.ZZL_CURSO as ZZL7_5_0_, itemmicros0_.ZZL_DATALT as ZZL8_5_0_, itemmicros0_.ZZL_DTPROC as ZZL9_5_0_, itemmicros0_.ZZL_DTVEND as ZZL10_5_0_, itemmicros0_.ZZL_END as ZZL11_5_0_, itemmicros0_.ZZL_ERRO as ZZL12_5_0_, itemmicros0_.ZZL_ESTADO as ZZL13_5_0_, itemmicros0_.ZZL_LOCAL as ZZL14_5_0_, itemmicros0_.ZZL_CODLIV as ZZL15_5_0_, itemmicros0_.ZZL_CODEMP as ZZL16_5_0_, itemmicros0_.ZZL_OBS as ZZL17_5_0_, itemmicros0_.ZZL_DESSIA as ZZL18_5_0_, itemmicros0_.D_E_L_E_T_ as D19_5_0_, itemmicros0_.ZZL_STATUS as ZZL20_5_0_, itemmicros0_.ZZL_LOTEIN as ZZL31_5_0_, itemmicros0_.ZZL_NUMORC as ZZL21_5_0_, itemmicros0_.ZZL_SERIE as ZZL22_5_0_, itemmicros0_.ZZL_NOME as ZZL23_5_0_, itemmicros0_.ZZL_CIDADE as ZZL24_5_0_, itemmicros0_.ZZL_CPF as ZZL25_5_0_, itemmicros0_.ZZL_FILIAL as ZZL26_5_0_, itemmicros0_.ZZL_RA as ZZL27_5_0_, itemmicros0_.ZZL_CODSIA as ZZL28_5_0_, itemmicros0_.ZZL_VALOR as ZZL29_5_0_, itemmicros0_.ZZL_QTDE as ZZL30_5_0_ from ZZL010 itemmicros0_ where itemmicros0_.ZZL_LOTEIN=?
============================
Total de Itens em um lote: 32
======================
A aplicação Lazy funciona, tanto ele me traz o segundo resultado, mas ele me mostra essa exceção. Os resultados que estão entre "=======" foram os da busca desta chamada:
List<LoteMicrosigaEntity> alItem = loteMicrosigaFacade.findAll();
System.out.print("\n============================\nTotal de Lotes: "+alItem.size()+"\n======================\n");
System.out.print("\n============================\nTotal de Itens em um lote: "+alItem.get(Integer.parseInt(request.getParameter("nmOpcao"))).getItemMicrosiga().size()+"\n======================\n");
meu ApplicationContext do Spring:
<?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:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.properties" />
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource"
id="dataSource"
p:driverClassName="${microsiga.driverClassName}"
p:password="${microsiga.password}"
p:url="${microsiga.url}"
p:username="${microsiga.username}" />
<!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.show_sql=true
hibernate.connection.isolation=2
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JOTMTransactionManagerLookup
hibernate.current_session_context_class=thread
hibernate.jdbc.batch_size=5
hibernate.transaction.flush_before_completion=true
hibernate.connection.release_mode = after_transaction
</value>
</property>
</bean>
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true"/>
</bean>
</property>
<property name="jpaProperties">
<value>
hibernate.transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JOTMTransactionManagerLookup
hibernate.current_session_context_class=thread
</value>
</property>
</bean>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<!--CONFIGURAÇÃO E ESTABELECIMENTO DE TRANSACTIONS -->
<!--bean id="transactionManagerLocal" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="dataSource" ref="dataSource"/>
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" /-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!--INTERCEPTORS-->
<!--CONFIGURAÇÃO DE ASPECTOS-->
<!--aop:config>
<aop:pointcut id="entityTransaction" expression="execution(* *.business.*Facade.*(..))" />
<aop:advisor advice-ref="entityTransactionAdvice" pointcut-ref="entityTransaction" />
</aop:config-->
<!--CONFIGURAÇÃO DA TRANSACTION-->
<tx:annotation-driven transaction-manager="transactionManager" />
<tx:jta-transaction-manager/>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="beginEntry" propagation="REQUIRES_NEW"/>
<tx:method name="endEntry" propagation="REQUIRED"/>
<tx:method name="retorna*" read-only="true"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="load*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!--Classes FACADES-->
<bean id="loteMicrosigaFacade" class="br.edu.unianhanguera.plt.agente.microsiga.business.LoteMicrosigaFacade"/>
<bean id="itemMicrosigaFacade" class="br.edu.unianhanguera.plt.agente.microsiga.business.ItemMicrosigaFacade"/>
<!--ACTIONS-->
<bean name="/Welcome" class="br.edu.unianhanguera.plt.agente.action.WelcomeAction">
<property name="loteMicrosigaFacade" ref="loteMicrosigaFacade" />
</bean>
</beans>
Alguém tem uma idéia? o banco que eu uso é o MS SQL Server