2012-02-19 3 views
0

Quelqu'un a-t-il réussi à configurer Infinispan comme cache L2 au printemps?Utilisation d'Infinispan pour le cache L2 d'Hibernate avec Spring & Tomcat

Je veux éviter d'utiliser XA pour ma source de données. Actuellement, j'utilise LocalContainerEntityManagerFactoryBean avec JPATransactionManager.

Des conseils sur la configuration du gestionnaire JTATransactionManager requis par Infinispan?

J'ai actuellement les informations suivantes pour mon gestionnaire de transactions: Notez que vous devez transmettre entityManagerFactory au gestionnaire de transactions. Le gestionnaire d'entités doit donc être entièrement créé afin de créer le TransactionManager. Mais si Infinispan nécessite le TransactionManager, cela ne créera-t-il pas une dépendance circulaire?

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> 
<!-- Transaction Manager --> 
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    <property name="dataSource" ref="dataSource" /> 
</bean> 
<tx:advice id="txAdvice"/> 

Mise à jour: J'utilise bitronix et les choses semble fonctionner, mais je vois plusieurs avertissements:

1) Au démarrage de Infinispan:

STDOUT [WARN] [14 20/02/2012 : 29: 00] statetransfer.BaseStateTransferManagerImpl - ISPN000159: transactions déblocage a échoué java.lang.IllegalStateException: Essayer de débloquer les commandes d'écriture pour vue cache 1, mais ils ne sont pas bloqués à org.infinispan.statetransfer.StateTransferLockImpl.unblockNewTransactions (StateTransferLockImpl.java : 260) à org.infinispan.statetransfer.BaseStateTransferManagerImpl.postInstallView (BaseStateTransferManagerImpl.java:351) à org.infinispan.cacheviews.CacheViewsManagerImpl.handleCommitView (CacheViewsManagerImpl.java:520) à org.infinispan.cacheviews.CacheViewsManagerImpl.clusterCommitView (CacheViewsManagerImpl. java: 387) à org.infinispan.cacheviews.CacheViewsManagerImpl.clusterInstallView (CacheViewsManagerImpl.java:271) à org.infinispan.cacheviews.CacheViewsManagerImpl $ ViewInstallationTask.call (CacheViewsManagerImpl.java:876) à java.util.concurrent. FutureTask $ Sync.innerRun (FutureTask.java:303) à java.util.concurrent.FutureTask.run (FutureTask.java:138) à java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.java:886) à java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:908) à java.lang.Thread.run (Thread.java:680)

2) Lors de l'exécution d'une opération d'écriture:

STDOUT [WARN ] [2012.02.20 13:54:14] tm.BitronixTransaction - Synchronization.afterCompletion() call failed for org.hibernate.engine[email protected]67c61e31 
java.util.ConcurrentModificationException 
    at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:373) 
    at java.util.LinkedHashMap$KeyIterator.next(LinkedHashMap.java:384) 
    at org.hibernate.engine.transaction.internal.SynchronizationRegistryImpl.notifySynchronizationsAfterTransactionCompletion(SynchronizationRegistryImpl.java:78) 
    at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.sendAfterTransactionCompletionNotifications(TransactionCoordinatorImpl.java:333) 
    at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.afterTransaction(TransactionCoordinatorImpl.java:145) 
    at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorImpl.afterCompletion(SynchronizationCallbackCoordinatorImpl.java:126) 
    at org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.afterCompletion(RegisteredSynchronization.java:61) 
    at bitronix.tm.BitronixTransaction.fireAfterCompletionEvent(BitronixTransaction.java:497) 
    at bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:244) 
    at bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:120) 
    at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1010) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) 
    at com.mckesson.dex.ui.administration.users.SiteUserResourceProvider$$EnhancerByCGLIB$$edc43389.save(<generated>) 
    at com.mckesson.dex.ui.viewer.AdaptableForm.save(AdaptableForm.java:407) 
    at com.mckesson.dex.ui.viewer.AdaptableForm.attemptSave(AdaptableForm.java:274) 
    at com.mckesson.dex.ui.viewer.AdaptableForm$5.buttonClick(AdaptableForm.java:323) 
    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 com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:512) 
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164) 
    at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219) 
    at com.vaadin.ui.Button.fireClick(Button.java:550) 
    at com.vaadin.ui.Button.changeVariables(Button.java:217) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1451) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1399) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1318) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:763) 
    at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296) 
    at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501) 
    at com.mckesson.dex.servlet.DexApplicationServlet.service(DexApplicationServlet.java:60) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:550) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1359) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at com.mckesson.dex.security.filter.IpAddressAuditFilter.doFilterInternal(IpAddressAuditFilter.java:54) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at com.mckesson.dex.security.DexConcurrentSessionFilter.doFilter(DexConcurrentSessionFilter.java:92) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:484) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:970) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:414) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:187) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:904) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110) 
    at org.eclipse.jetty.server.Server.handle(Server.java:347) 
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:590) 
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1071) 
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:823) 
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:220) 
    at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:535) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529) 
    at java.lang.Thread.run(Thread.java: 
+0

J'ai trouvé cette config. Je vais voir si je peux le faire fonctionner en utilisant ça. Cependant, je suis actuellement configuré pour utiliser 3 dbs différents (dev, tests, prod) = (postgres, h2, oracle). Je compile la source de données dans la configuration de contexte et m'enregistre via jndi. Donc je vais devoir jouer un peu pour voir comment c'est possible d'utiliser cette configuration. https://github.com/hibernate/hibernate-search/blob/master/hibernate-search-integrationtest/src/test/resources/beans.xml –

+0

Cela ressemble à une bonne source pour configurer Infinispan comme 2LC, mais vous Il va probablement falloir un hibernate.transaction.manager_lookup_class différent, celui qui pointe vers un gestionnaire de transactions JTA. C'est bizarre que vous ayez besoin de passer un gestionnaire d'entité à un gestionnaire de transactions. Le gestionnaire de transactions devrait être à peu près autonome et JPA devrait en dépendre. –

+0

Re: IllegalStateException dans le transfert d'état - quelle version d'Infinispan utilisez-vous? –

Répondre

Questions connexes