2015-11-06 20 views
6

का उपयोग करते हुए ओरेकल एक्सए लेनदेन पर थ्रेड फ्रीजिंग, जब मैं एटोमिकोस और हाइबरनेट का उपयोग करके कुछ डेटा संचारित करने जा रहा हूं, तो मुझे अपने आवेदन पर कुछ समय बाद त्रुटि मिल रही है।जेबीओएसएस: एटमिकोस

2015-11-06 07:11:56,353 WARN [http-/0.0.0.0:8083-10] datasource.xa.XAResourceTransaction - XA resource 'COTXADBMS': resume for XID '31302E3235332E312E35322E746D30303030313030303939:31302E3235332E312E35322E746D31' raised -7: the XA resource has become unavailable - (Slf4jLogger.java:24) 
oracle.jdbc.xa.OracleXAException 
     at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1110) 
     at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:240) 
     at com.atomikos.datasource.xa.XAResourceTransaction.resume(XAResourceTransaction.java:427) 
     at com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:59) 
     at com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:64) 
     at com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:88) 
     at com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:179) 
     at com.atomikos.jdbc.AtomikosConnectionProxy.enlist(AtomikosConnectionProxy.java:223) 
     at com.atomikos.jdbc.AtomikosConnectionProxy.invoke(AtomikosConnectionProxy.java:142) 
     at com.sun.proxy.$Proxy101.prepareStatement(Unknown Source) 
     at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:161) 
     at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:182) 
     at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:159) 
     at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1858) 
     at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1835) 
     at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) 
     at org.hibernate.loader.Loader.doQuery(Loader.java:899) 
     at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) 
     at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:311) 
     at org.hibernate.loader.Loader.loadEntity(Loader.java:2117) 
     at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82) 
     at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72) 
     at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3927) 
     at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:460) 
     at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:429) 
     at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:206) 
     at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:262) 
     at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:150) 
     at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1092) 
     at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:175) 
     at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2476) 
     at org.hibernate.internal.SessionImpl.get(SessionImpl.java:992) 
     at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:271) 
     at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:151) 
     at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:76) 
     at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:914) 
     at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:898) 
     at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:902) 
     at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:889) 
     at sun.reflect.GeneratedMethodAccessor227.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:342) 
     at com.sun.proxy.$Proxy112.merge(Unknown Source) 
     at sun.reflect.GeneratedMethodAccessor227.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:289) 
     at com.sun.proxy.$Proxy112.merge(Unknown Source) 
     at br.com.empresa.cotador.projeto.component.EfetivacaoComponent.transmitir(EfetivacaoComponent.java:390) 
     at br.com.empresa.cotador.projeto.component.EfetivacaoComponent$$FastClassBySpringCGLIB$$55efafb6.invoke(<generated>) 
     at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) 
     at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
     at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) 
     at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) 
     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
     at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) 
     at br.com.empresa.cotador.projeto.component.EfetivacaoComponent$$EnhancerBySpringCGLIB$$9f2cee0f.transmitir(<generated>) 
     at br.com.empresa.cotador.projeto.controller.emissao.EfetivacaoController.transmitirProposta(EfetivacaoController.java:218) 
     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:606) 
     at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) 
     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) 
     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 
     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 
     at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:164) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 
     at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202) 
     at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:180) 
     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:231) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:420) 
     at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) 
     at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) 
     at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) 
     at java.lang.Thread.run(Thread.java:745) 

और फिर हम एक "फ्रीज" पकड़ने

"http-/0.0.0.0:8083-2" daemon prio=10 tid=0x0000000001914800 nid=0x7640 runnable [0x0000000045ff8000] 
    java.lang.Thread.State: RUNNABLE 
      at java.net.SocketInputStream.socketRead0(Native Method) 
      at java.net.SocketInputStream.read(SocketInputStream.java:152) 
      at java.net.SocketInputStream.read(SocketInputStream.java:122) 
      at oracle.net.ns.Packet.receive(Packet.java:300) 
      at oracle.net.ns.DataPacket.receive(DataPacket.java:106) 
      at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:315) 
      at oracle.net.ns.NetInputStream.read(NetInputStream.java:260) 
      at oracle.net.ns.NetInputStream.read(NetInputStream.java:185) 
      at oracle.net.ns.NetInputStream.read(NetInputStream.java:102) 
      at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124) 
      at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80) 
      at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137) 
      at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:290) 
      at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192) 
      at oracle.jdbc.driver.T4CTTIOtxse.doOTXSE(T4CTTIOtxse.java:163) 
      at oracle.jdbc.driver.T4CXAResource.doStart(T4CXAResource.java:186) 
      - locked <0x000000078e7f7a40> (a oracle.jdbc.driver.T4CConnection) 
      at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:228) 
      - locked <0x000000078e7f7a40> (a oracle.jdbc.driver.T4CConnection) 
      at com.atomikos.datasource.xa.XAResourceTransaction.resume(XAResourceTransaction.java:427) 
      - locked <0x00000007ea3500c8> (a com.atomikos.datasource.xa.XAResourceTransaction) 
      at com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:59) 
      at com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:64) 
      at com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:88) 
      - locked <0x00000007ea1f2418> (a com.atomikos.datasource.xa.session.TransactionContext) 
      at com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:179) 
      - locked <0x000000078e807730> (a com.atomikos.datasource.xa.session.SessionHandleState) 
      at com.atomikos.jdbc.AtomikosConnectionProxy.enlist(AtomikosConnectionProxy.java:223) 
      at com.atomikos.jdbc.AtomikosConnectionProxy.invoke(AtomikosConnectionProxy.java:142) 
      at com.sun.proxy.$Proxy123.prepareStatement(Unknown Source) 
      at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:161) 
      at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:182) 
      at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:159) 
      at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1858) 
      at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1835) 
      at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) 
      at org.hibernate.loader.Loader.doQuery(Loader.java:899) 
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) 
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:311) 
      at org.hibernate.loader.Loader.loadEntity(Loader.java:2117) 
      at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82) 
      at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72) 
      at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3927) 
      at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:460) 
      at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:429) 
      at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:206) 
      at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:262) 
      at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:150) 
      at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1092) 
      at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:175) 
      at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2476) 
      at org.hibernate.internal.SessionImpl.get(SessionImpl.java:992) 
      at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:271) 
      at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:151) 
      at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:76) 
      at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:914) 
      at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:898) 
      at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:902) 
      at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:889) 
      at sun.reflect.GeneratedMethodAccessor256.invoke(Unknown Source) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
      at java.lang.reflect.Method.invoke(Method.java:606) 
      at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:342) 
      at com.sun.proxy.$Proxy138.merge(Unknown Source) 
      at sun.reflect.GeneratedMethodAccessor256.invoke(Unknown Source) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
      at java.lang.reflect.Method.invoke(Method.java:606) 
      at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:289) 
      at com.sun.proxy.$Proxy138.merge(Unknown Source) 
      at br.com.empresa.cotador.projeto.component.EfetivacaoComponent.transmitir(EfetivacaoComponent.java:390) 
      at br.com.empresa.cotador.projeto.component.EfetivacaoComponent$$FastClassBySpringCGLIB$$55efafb6.invoke(<generated>) 
      at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) 
      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708) 
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
      at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) 
      at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) 
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
      at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) 
      at br.com.empresa.cotador.projeto.component.EfetivacaoComponent$$EnhancerBySpringCGLIB$$4b6893af.transmitir(<generated>) 
      at br.com.empresa.cotador.projeto.controller.emissao.EfetivacaoController.transmitirProposta(EfetivacaoController.java:218) 
      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:606) 
      at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) 

...

कुछ समय जब कनेक्शन सक्रिय है, और यहां तक ​​उपयोग नहीं कर ऐसा होने के बाद होता है।

सेटअप - वसंत applicationXML

<context:component-scan base-package="br.com"> 
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 
</context:component-scan> 


<bean id="dsDataSourceCotador" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:/comp/env/jdbc/cotacaoDS" /> 
</bean> 
<bean id="entityManagerFactoryCotador" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="persistenceUnitName" value="puprojetoCotador" /> 
    <property name="dataSource" ref="dsDataSourceCotador"/> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 
    </property> 
    <property name="packagesToScan" value="br.com.empresa.cotador.projeto.model" /> 

    <property name="jpaProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="log4j.logger.org.hibernate.type">TRACE</prop> 
      <prop key="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop> 
      <prop key="hibernate.c3p0.acquire_increment">1</prop> 
      <prop key="hibernate.c3p0.idle_test_period">300</prop> 
      <prop key="hibernate.c3p0.timeout">5000</prop> 
      <prop key="hibernate.c3p0.max_size">10</prop> 
      <prop key="hibernate.c3p0.max_statements">0</prop> 
      <prop key="hibernate.c3p0.min_size">1</prop> 
      <prop key="hibernate.c3p0.acquireRetryAttempts">3</prop> 
      <prop key="hibernate.c3p0.acquireRetryDelay">1000</prop> 
      <prop key="hibernate.jdbc.batch_size">30</prop> 
     </props> 
    </property> 
</bean> 
<bean id="transactionManagerCotador" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactoryCotador"/> 
    <qualifier value="cot"/> 
</bean> 
<tx:annotation-driven transaction-manager="transactionManagerCotador" proxy-target-class="false"/> 



<bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 
    <property name="brokerURL"> 
     <value>#{systemProperties['empresa.mr.servidor.ACTIVEMQ']}</value> 
    </property> 
    <property name="userName"> 
     <value>#{ systemProperties['empresa.mr.servidor.ACTIVEMQ.USER'] }</value> 
    </property> 
    <property name="password"> 
     <value>#{ systemProperties['empresa.mr.servidor.ACTIVEMQ.PASS'] }</value> 
    </property> 
</bean> 

<bean id="connectionFactory" 
    class="org.springframework.jms.connection.CachingConnectionFactory"> 
    <constructor-arg ref="activeMQConnectionFactory" /> 
</bean> 

<bean id="filaRecepcaoMRPut" class="org.apache.activemq.command.ActiveMQQueue"> 
    <constructor-arg index="0" value="#{systemProperties['empresa.mr.fila.RECEPCAO.PUT']}" /> 
</bean> 

<bean id="filaUploadMRPut" class="org.apache.activemq.command.ActiveMQQueue"> 
    <constructor-arg index="0" value="#{systemProperties['empresa.mr.fila.UPLOAD.PUT']}" /> 
</bean> 

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
    <property name="connectionFactory" ref="connectionFactory" /> 
</bean> 



<bean id="queueConnectionFactoryBean" class="com.atomikos.jms.AtomikosConnectionFactoryBean" init-method="init" destroy-method="close"> 
    <property name="uniqueResourceName" value="QUEUE_BROKER" /> 
    <property name="xaConnectionFactory" ref="activeMQXAConnectionFactory" /> 
</bean> 

<bean id="jmsTemplateXA" class="org.springframework.jms.core.JmsTemplate"> 
    <property name="connectionFactory" ref="queueConnectionFactoryBean" /> 
    <property name="sessionTransacted" value="true"/> 
</bean> 

<bean id="datasourceCOTXA" class="br.com.empresa.cotador.projeto.util.CustomAtomikosDataSourceBean" init-method="init" destroy-method="close" lazy-init="true"> 
    <property name="uniqueResourceName" value="COTXADBMS" /> 
    <property name="wrapperDataSource"> 
     <bean id="dsDataSourceCOTXA" class="org.springframework.jndi.JndiObjectFactoryBean"> 
      <property name="jndiName" value="java:/comp/env/jdbc/cotacaoDSXA" /> 
     </bean> 
    </property> 
    <qualifier value="cot" /> 
</bean> 

<bean id="entityManagerFactoryCotadorXA" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="persistenceUnitName" value="puprojetoCotadorXA" /> 
    <property name="jtaDataSource" ref="datasourceCOTXA"/> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 
    </property> 
    <property name="packagesToScan" value="br.com.empresa.cotador.projeto.model" /> 

    <property name="jpaProperties"> 
     <props> 
      <prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup</prop> 
      <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="javax.persistence.transactionType">jta</prop> 

     </props> 
    </property> 
</bean> 

<bean id="atomikosUserTransactionService" class="com.atomikos.icatch.config.UserTransactionServiceImp" init-method="init" destroy-method="shutdownForce"> 
    <constructor-arg> 
     <props> 
      <prop key="com.atomikos.icatch.service">br.com.empresa.cotador.projeto.util.atomikos.UserTransactionServiceFactory</prop> 
      <prop key="com.atomikos.icatch.log_base_name">CotadorprojetoServiceXA</prop> 
      <prop key="com.atomikos.icatch.output_dir">/app/tmp/</prop> 
      <prop key="com.atomikos.icatch.log_base_dir">/app/tmp/</prop> 
      <prop key="com.atomikos.icatch.default_jta_timeout">600000</prop> 
      <prop key="com.atomikos.icatch.max_timeout">600000</prop> 
     </props> 
    </constructor-arg> 
</bean> 

<bean id="transactionManagerXA" class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="transactionManager"> 
     <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> 
      <property name="forceShutdown" value="true" /> 
     </bean> 
    </property> 
    <property name="userTransaction"> 
     <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp" depends-on="atomikosUserTransactionService"> 
      <property name="transactionTimeout" value="600000" /> 
     </bean> 
    </property> 
    <qualifier value="XA"/> 
</bean> 
<tx:annotation-driven transaction-manager="transactionManagerXA" /> 

anonyone whow इस समस्या से बचने के लिए, ठीक है या एक वैकल्पिक हल क्या करता है?

+0

ऐसा ही एक समस्या [Atomikos मंच] में चर्चा की है (http://fogbugz.atomikos.com/default.asp?community। 6.574.6)। समाधान जेएमएस टेम्पलेट कॉन्फ़िगरेशन में 'sessionTransacted = true' सेट करना है। –

+0

हां, लेकिन इस मामले में वास्तव में समान है, लेकिन एक ही समस्या नहीं है, एक बार एटमिकोस वेबसाइट पर हम ओरेकल जेएमएस समस्या पर एक समाधान देख सकते हैं, जेडीबीसी एक्सए लेनदेन की समस्या नहीं। –

+0

क्या आप अपने सेटअप का वर्णन कर सकते हैं? आपके एक्सए लेनदेन में कौन सा सॉफ्टवेयर भाग लेता है? – eis

उत्तर

4

मुझे कुछ साल पहले वेबलॉगिक का उपयोग एटॉमिकोस के बजाय लेनदेन प्रबंधक के रूप में एक ही समस्या थी। हमारे मामले में हमारे पास ऑरैकल के साथ अपरिहार्य अपवाद थे जिसमें लेनदेन ऑरैकल में जमा हो गया था और कनेक्शन ऑब्जेक्ट में व्यस्त हो गया था।

हम JTA लेनदेन का इस्तेमाल किया, मैं अपने कॉन्फ़िग फ़ाइल है कि आप जेपीए लेनदेन का उपयोग कर रहे में देखते हैं, लेकिन मैं लगातार फ़ाइल देखें नहीं है (जिसमें आप JTA के रूप में लेन-देन प्रकार कॉन्फ़िगर होगा)

समस्या संबंधित था समय समाप्ति के लेन-देन के लिए, वस्तुतः यह से बचने के लिए:

आप यह सुनिश्चित करें कि किसी भी लेनदेन टाइमआउट (JTA, जेपीए, आदि ...) XA लेन-देन समय समाप्ति (जैसे ओरेकल XA कनेक्शन के लिए सबसे कम मूल्य की तुलना में कम है)। -> 0 आप यह सुनिश्चित करें कि XA टाइमआउट लेनदेन प्रबंधक टाइमआउट

आशा हो जाएगा

XASetTransactionTimeout -> true 
XATransactionTimeout -> 0 
XATransactionTimeout साथ

:

इस लक्ष्य को हासिल करने के लिए, आप निम्नलिखित JDBC कनेक्शन पूल विन्यास में प्रदान कर सकते हैं मदद करता है!

+0

मैं करने के लिए इस [कड़ी] इंतजार कर रहे (, JBoss का जवाब अनुकूल करने के लिए कोशिश कर रहा हूँ https://developer.jboss.org/thread/ 206366) –

+0

XATransactionTimeout के लिए डिफ़ॉल्ट मान 0 है, लेकिन XASetTransactionTimeout के लिए गलत है, इसलिए इस मान को बदलने का प्रयास करें। –

+0

समस्या सिर्फ मूल्यों, JBoss कोई XASetTransactionTimeout होती है, और सबसे अनुमानित मान 'हैं <सेट-tx-क्वेरी-समय समाप्ति> सच' और '<क्वेरी-समय समाप्ति> 120 TAG/ 'के लिए स्टैंडअलोन.एक्सएमएल पर 'इसलिए मैं इन सर्वर मानों में जोड़ने की कोशिश कर रहा हूं। –

0

पहली बात मैं कह सकता हूँ यह एक जवाब नहीं है और जवाब है, थ्रेड समस्या बर्फ़ीली हल कर सकते हैं, लेकिन असली समस्या यह है कि धागा बर्फ़ीली मास्किंग था हल नहीं किया। थ्रेड फ्रीजिंग समस्या वास्तव में डेटासॉर पूल अधिकतम आकार जो जेबीएसएस पर स्टैंडअलोन.एक्सएमएल से अलग है। यदि आप अपने स्प्रिंग एप्लिकेशन पर maxpoolSize बनाते हैं तो स्टैंडअलोन.एक्सएमएल से अलग, परमाणुओं को कनेक्शन के अनुरोध और उधार लेने में समस्याएं होंगी।

देखो application.xml:

<bean id="datasourceCOTXA" class="br.com.empresa.util.CustomAtomikosDataSourceBean" init-method="init" destroy-method="close" lazy-init="true"> 
    <property name="uniqueResourceName" value="COTXADBMS" /> 
    <property name="wrapperDataSource"> 
     <bean id="dsDataSourceCOTXA" class="org.springframework.jndi.JndiObjectFactoryBean"> 
      <property name="jndiName" value="java:/comp/env/jdbc/cotacaoDSXA" /> 
     </bean> 
    </property> 
    <property name="minPoolSize" value="5" /> 
    <property name="maxPoolSize" value="50" /><!-- detail here--> 
    <property name="testQuery" value="select 1 from dual" /> 
    <qualifier value="cot" /> 
</bean> 

अब JBoss पर डेटा स्रोत देखें:

<xa-datasource enabled="true" use-java-context="true" pool-name="jdbc/cotacaoDSXA" jndi-name="java:/comp/env/jdbc/cotacaoDSXA"> 
<xa-datasource-property name="URL">... </xa-datasource-property> 
<driver>oracleXA</driver> 
<xa-pool> 
    <min-pool-size>5</min-pool-size> 
    <max-pool-size>30</max-pool-size> 
    <prefill>true</prefill> 
</xa-pool> 
... 
</xa-datasource> 

धागा जमा क्योंकि atomikos पहला आंतरिक पूल के लिए दिखाई देता रहेगा और अधिकतम पूल आकार से अधिक है डेटासोर्स, यह जम जाता है।

अच्छा, और आपको लगता है कि "तो यह समस्या हल करता है", और मेरा जवाब है, नहीं, बस हल नहीं होता है, लेकिन समस्या को मास्क करना बंद कर देता है।

थ्रेड फ्रीजिंग समस्या हल होने के बाद क्या होता है? समस्या XA और JBOSS 6.2 के बीच है, ATOMIKOS के लॉग स्तर को बदलकर आप कनेक्शन के साथ क्या होता है इसके बारे में कुछ विवरण देखेंगे।

पर्यावरण एक: ATOMIKOS श्रमजीवी

2015-12-09 16:14:51,647 INFO [ServerService Thread Pool -- 49] atomikos.logging.LoggerFactory - Using Slf4J for logging. - (Slf4jLogger.java:16) 
2015-12-09 16:14:51,714 INFO [ServerService Thread Pool -- 49] atomikos.jdbc.AbstractDataSourceBean - AtomikosDataSoureBean 'COTXADBMS': init... - (Slf4jLogger.java:16) 
2015-12-09 16:14:51,715 WARN [ServerService Thread Pool -- 49] atomikos.jdbc.AbstractDataSourceBean - AtomikosDataSoureBean 'COTXADBMS': testQuery set - pool may be slower/you might want to consider setting maxLifetime instead... - (Slf4jLogger.java:12) 
2015-12-09 16:14:51,764 INFO [ServerService Thread Pool -- 49] atomikos.jdbc.AtomikosDataSourceBean - AtomikosDataSoureBean 'COTXADBMS': initializing with [ xaDataSourceClassName=oracle.jdbc.xa.client.OracleXADataSource, uniqueResourceName=COTXADBMS, maxPoolSize=30, minPoolSize=5, borrowConnectionTimeout=30, maxIdleTime=60, reapTimeout=0, maintenanceInterval=60, testQuery=select 1 from dual, xaProperties=[URL=jdbc:oracle:thin:@SRVODB003D:1527:COTD,user=APPCOT,password=APCTO234], loginTimeout=0, maxLifetime=0] - (Slf4jLogger.java:16) 
2015-12-09 16:14:52,476 INFO [ServerService Thread Pool -- 49] imp.thread.TaskManager - THREADS: using JDK thread pooling... - (Slf4jLogger.java:16) 
2015-12-09 16:14:52,599 INFO [ServerService Thread Pool -- 49] atomikos.jdbc.AbstractDataSourceBean - AtomikosDataSoureBean 'COTXADBMS': getConnection (null)... - (Slf4jLogger.java:16) 
2015-12-09 16:14:52,604 INFO [ServerService Thread Pool -- 49] atomikos.jdbc.AbstractDataSourceBean - AtomikosDataSoureBean 'COTXADBMS': init... - (Slf4jLogger.java:16) 

पर्यावरण बी: ATOMIKOS JBoss चलाने पर कुछ समय के बाद काम नहीं।

2015-12-11 12:45:39,477 INFO [http-/0.0.0.0:8083-10] atomikos.jdbc.AbstractDataSourceBean - AtomikosDataSoureBean 'COTXADBMS': getConnection (null)... - (Slf4jLogger.java:16) 
    2015-12-11 12:45:39,478 INFO [http-/0.0.0.0:8083-10] atomikos.jdbc.AbstractDataSourceBean - AtomikosDataSoureBean 'COTXADBMS': init... - (Slf4jLogger.java:16) 
    2015-12-11 12:50:39,966 WARN [Atomikos:12] icatch.imp.ActiveStateHandler - Timeout/setRollbackOnly of ACTIVE coordinator ! - (Slf4jLogger.java:12) 
    2015-12-11 13:01:06,128 WARN [http-/0.0.0.0:8083-10] datasource.pool.ConnectionPool - atomikos connection pool 'COTXADBMS': error creating proxy of connection an AtomikosXAPooledConnection with a SessionHandleState with 0 context(s) - (Slf4jLogger.java:24) 
    com.atomikos.datasource.pool.CreateConnectionException: Error executing testQuery 
     at com.atomikos.jdbc.AtomikosXAPooledConnection.testUnderlyingConnection(AtomikosXAPooledConnection.java:128) 
     at com.atomikos.datasource.pool.AbstractXPooledConnection.createConnectionProxy(AbstractXPooledConnection.java:71) 
     at com.atomikos.datasource.pool.ConnectionPool.retrieveFirstAvailableConnection(ConnectionPool.java:209) 
     at com.atomikos.datasource.pool.ConnectionPool.retrieveFirstAvailableConnectionAndGrowPoolIfNecessary(ConnectionPool.java:173) 
     at com.atomikos.datasource.pool.ConnectionPool.findOrWaitForAnAvailableConnection(ConnectionPool.java:160) 
     at com.atomikos.datasource.pool.ConnectionPool.borrowConnection(ConnectionPool.java:151) 
     at com.atomikos.jdbc.AbstractDataSourceBean.getConnection(AbstractDataSourceBean.java:342) 
     at com.atomikos.jdbc.AbstractDataSourceBean.getConnection(AbstractDataSourceBean.java:394) 
     at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70) 
    ... 
     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:606) 
     at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) 
     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737) 
     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 
     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 
     at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:164) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 
     at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202) 
     at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:180) 
     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:231) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:420) 
     at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) 
     at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) 
     at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) 
     at java.lang.Thread.run(Thread.java:745) 
    Caused by: java.sql.SQLRecoverableException: Erro de ES: Connection timed out 
     at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:886) 
     at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167) 
     at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289) 
     at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1909) 
     at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1871) 
     at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:318) 
     at com.atomikos.jdbc.AtomikosXAPooledConnection.testUnderlyingConnection(AtomikosXAPooledConnection.java:124) 
     ... 108 more 
    Caused by: java.net.SocketException: Connection timed out 
     ... 

आप सोच सकते हैं "डेटाबेस आदमी कनेक्ट नहीं कर सकता!", हम एक ही उदाहरण के लिए, एक ही आधार है, एक ही उपयोगकर्ता से कनेक्ट कर दो datasources है, पहले डेटा स्रोत XA नहीं है और सही ढंग से दूसरा काम कर रहा है, कुछ समय बाद कनेक्ट नहीं हो सकता है।

विस्तार: यहां तक ​​कि आपने कुछ समय बाद डेटासोर्स को जेबीओएसएस का उपयोग नहीं किया है। ये वातावरण JBOSS AS 6.2

पर्यावरण बी पर किसी भी तरह, जेबीओएसएस और एक्सए में कुछ अंतर है जो इस त्रुटि का कारण बनता है, जेबीएसएसएसएस पुनरारंभ होने के बाद, समस्या बंद हो जाती है। कुछ समय चलने के बाद, एक्सए कनेक्शन काम करना बंद कर देता है, भले ही आप लेनदेन भेजते हों या नहीं। अब सवाल है, यह जेबएसएस में धागे और कनेक्शन को अवरुद्ध कर सकता है?

आप देखते हैं कि क्या Atomikos फ्रीज़ का कोड लाइन इसे यहाँ जाँच करना चाहते हैं: http://grepcode.com/file/repo1.maven.org/maven2/com.atomikos/transactions-jdbc/3.6.4/com/atomikos/jdbc/AtomikosXAPooledConnection.java#124

संबंधित मुद्दे