jta 相关问题

Java Transaction API(JTA)指定事务管理器与分布式事务系统中涉及的各方之间的标准Java接口:资源管理器,应用程序服务器和事务应用程序。

什么是 openliberty 事务管理器后端路由?

Java EE 应用程序服务器 OpenLiberty 文档为事务管理器提供了一个可配置属性“backendURL”。 当后端路由处于活动状态时,对等服务器使用 URL 来

回答 1 投票 0

将 JTA 属性设置为 Atomikos + Spring Boot 配置

我正在尝试使用以下命令在 Spring Boot 配置中设置 Atomikos JTA 属性(例如 com.atomikos.icatch.max_timeout): 导入 com.atomikos.icatch.config.UserTransactionServiceImp; ...

回答 3 投票 0

Hibernate执行更新SQL语句但更新没有写入数据库

我有一个在 WildFly 服务器上运行的 Java EE 应用程序。持久化单元中的配置如下: 我有一个在 WildFly 服务器上运行的 Java EE 应用程序。持久化单元中的配置如下: <persistence-unit name="default" transaction-type="JTA"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <jta-data-source>java:/jboss/datasources/templateDS</jta-data-source> <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode> <validation-mode>AUTO</validation-mode> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.format_sql" value="true" /> <property name="use_sql_comments" value="false" /> <property name="hibernate.cache.use_second_level_cache" value="true" /> <property name="hibernate.cache.use_query_cache" value="true" /> <!-- <property name="hibernate.cache.region.factory_class" vvalue="org.hibernate.transaction.CMTTransactionFactory"/>--> <!-- <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.infinispan.JndiInfinispanRegionFactory" />--> <property name="hibernate.cache.infinispan.cachemanager" value="java:jboss/infinispan/container/hibernate" /> <!-- <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>--> <property name="hibernate.generate_statistics" value="false" /> <!-- none | validate | update | create | create-drop --> <property name="hibernate.hbm2ddl.auto" value="none" /> </properties> </persistence-unit> 我有一些业务逻辑,用于向用户发送 Firebase 推送通知,作为一种有针对性的通信形式。用户基数相当大(> 10k),因此我们决定以 10 个为一组对消息收件人进行分页和批处理,以确保不存在内存问题。我有一个名为 MessageRecipient 的实体,它管理接收消息的用户。它有一个列来管理状态,当逻辑运行时,我们希望将每条已发送消息的状态从“未发送”更新为“已发送”或“失败”。以下是我在方法中运行的业务逻辑: private void sendTargetedMessages(CsvFile dueFile) { LOGGER.debug("in send targeted messages"); String filename = dueFile.getFilename(); String batchRef = filename.substring(0, filename.indexOf('.')); // Calculate number of recipients. int numberOfRecipients = crudService.findAllByColumn(MessageRecipient.class, batchRef, "batchRef").size(); int pageNumber = 0; int pageSize = 10; //TODO: Change this to config entry Integer num_sent = 0; // Calculate number of pages. Use calculated number of pages to run the logic in a do while loop that increments do { List<MessageRecipient> recipients = crudService.findAllByColumn(MessageRecipient.class, batchRef, "batchRef", new Paging(pageNumber, pageSize)); // Execute the logic if (recipients != null) { // send targeted messages User u; for (MessageRecipient r : recipients) { u = null; if (RecipientState.UNSENT.equals(r.getState())) { if (UserReferenceType.CVS_REF.equals(dueFile.getUserReferenceType())) { u = userRepository.findUserByCvsRef(r.getReference(), Status.ACTIVE); } else { try { u = userRepository.findUserByUserId(Long.parseLong(r.getReference()), Status.ACTIVE); } catch (NumberFormatException e) { r.setState(RecipientState.FAILED); LOGGER.error("Reference cannot be converted to long.", e); } } if (u != null) { pushNotificationService.sendTargetedCommunication(u, dueFile.getCommId()); r.setState(RecipientState.SENT); num_sent++; } //crudService.merge(r); entityManager.merge(r); entityManager.flush(); } } } else { LOGGER.error("No recipients found for targeted communication."); } // Increment page number pageNumber++; } while (pageNumber <= (calculateNumberOfPages(numberOfRecipients, pageSize) - 1)); // Send email report once done if (!StringUtils.isBlank(dueFile.getReportEmails())) { String[] reportEmails = dueFile.getReportEmails().split(","); List<String> reportEmailsList = Arrays.asList(reportEmails); messagingReportService.sendEmailReport(reportEmailsList, batchRef, numberOfRecipients, num_sent, dueFile.getBucketName()); } } 我调用entityManager merge() 和flush() 来尝试在发送推送通知后更新每个MessageRecipient 记录的状态,但状态在我的数据库(MySQL 数据库)中没有更新。我在应用程序中打开了 SQL 语句日志记录,并且看到 Hibernate 执行更新 SQL 语句,尽管我的数据库中没有更新。我该如何解决这个问题? 11:04:54,017 INFO [stdout] (EE-ManagedScheduledExecutorService-default-Thread-1) Hibernate: 11:04:54,018 INFO [stdout] (EE-ManagedScheduledExecutorService-default-Thread-1) update 11:04:54,018 INFO [stdout] (EE-ManagedScheduledExecutorService-default-Thread-1) message_recipient 11:04:54,019 INFO [stdout] (EE-ManagedScheduledExecutorService-default-Thread-1) set 11:04:54,019 INFO [stdout] (EE-ManagedScheduledExecutorService-default-Thread-1) last_updated=?, 11:04:54,019 INFO [stdout] (EE-ManagedScheduledExecutorService-default-Thread-1) batch_ref=?, 11:04:54,020 INFO [stdout] (EE-ManagedScheduledExecutorService-default-Thread-1) reference=?, 11:04:54,020 INFO [stdout] (EE-ManagedScheduledExecutorService-default-Thread-1) state=? 11:04:54,021 INFO [stdout] (EE-ManagedScheduledExecutorService-default-Thread-1) where 11:04:54,021 INFO [stdout] (EE-ManagedScheduledExecutorService-default-Thread-1) id=? 最初我只是调用 entityManager.merge(T entity),Hibernate 在尝试更新实体时没有生成更新 SQL 语句,但我添加了 entityManager.flush(),现在我在日志中看到它。但是,我的问题是数据库也没有更新。 您正在使用二级缓存,可能是缓存尚未刷新事务,请尝试读取应用程序中的更改(如果您尝试读取时存在更改),没问题,它按预期工作,那么这意味着它的缓存未刷新还没有到 DB。 另一件事是确保您使用 EJB 和 @TransactionManagement(TransactionManagementType.CONTAINER) 在容器管理的 TX 范围内进行操作

回答 1 投票 0

在Servlet内的容器管理事务上下文中调用EntityManager的方法是线程安全的吗?

servlet 中有以下代码片段 @PeristenceContext 私有EntityManager实体管理器; @覆盖 protected void doPost(HttpServletRequest req, HttpServletResponse resp) ...

回答 1 投票 0

有问题的读取提交行为 - 我应该期待什么?

有关使用 Wildfly、hibernate jpa、jta 和隔离级别 READ_COMMITED 的隔离级别的小简化问题。假设以下场景: 线程 1,在表 SomeTable 上,使用 JPA ...

回答 1 投票 0

无法创建请求的服务[org.hibernate.service.jta.platform.spi.JtaPlatform]

我正在使用 spring3、hibernate4 和 maven3,我的这段代码给了我这个错误: 无法创建请求的服务 [org.hibernate.service.jta.platform.spi.JtaPlatform] 我正在使用 spring3、hibernate4 和 maven3,我的这段代码给了我这个错误: Unable to create requested service [org.hibernate.service.jta.platform.spi.JtaPlatform] <?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:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd"> <util:properties id="hibernateProperties" location="classpath:hibernate.properties" /> <tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager"/> <context:component-scan base-package="com.ecom.data.access.controller" /> <context:component-scan base-package="com.ecom.data.access.model" /> <mvc:annotation-driven /> <bean id="usermanagementSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="usermanagementDataSource" /> <property name="configLocation" value="classpath:hibernate.cfg.xml" /> <!-- <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" /> --> <property name="annotatedClasses"> <list> <value>com.ecom.data.access.model.User</value> <value>com.ecom.data.access.controller.LoginController</value> <value>com.ecom.data.access.dao.MyFactory</value> </list> </property> <property name="hibernateProperties" ref="hibernateProperties" /> </bean> <jee:jndi-lookup id="usermanagementDataSource" jndi-name="java:jboss/datasources/usermanagementDS" /> <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> <property name="forceShutdown" value="false" /> <property name ="startupTransactionService" value="false"/> </bean> <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"> <property name="transactionTimeout" value="30" /> </bean> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager" ref="atomikosTransactionManager" /> <property name="userTransaction" ref="atomikosUserTransaction" /> </bean> <bean id="User" class="com.ecom.data.access.model.User"/> <bean id="myFactory" class="com.ecom.data.access.dao.MyFactory"/> </beans> 休眠属性文件 hibernate.validator.apply_to_ddl=false hibernate.validator.autoregister_listeners=false hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.show_sql=false hibernate.format_sql=true #hibernate.query.factory_class=org.hibernate.hql.classic.ClassicQueryTranslatorFactory hibernate.hbm2ddl.auto=validate hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider hibernate.max_fetch_depth=2 hibernate.default_batch_fetch_size=32 hibernate.transaction.manager_lookup_class=com.atomikos.icatch.jta.hibernate4.TransactionManagerLookup hibernate.transaction.factory_class=org.hibernate.transaction.CMTTransactionFactory 错误: Error creating bean with name 'usermanagementSessionFactory' defined in class path resource [applicationContext-dao.xml]: Invocation of init method failed; nested exception is hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.service.jta.platform.spi.JtaPlatform] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486) [spring-beans-3.2.1.RELEASE ] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524) [spring-beans-3.2.1.RELEASE.ja at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) [spring-beans-3.2.1.RELEASE.jar: at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) [spring-beans-3.2.1.RELEASE.jar:] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) [spring-beans-3.2.1.RELEASE.jar:] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) [spring-beans-3.2.1.RELEASE.jar:] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) [spring-beans-3.2.1.RELEASE.jar:] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:608) [spring-beans-3.2.1.RELEASE.jar:] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) [spring-context-3.2.1.RELEASE.jar at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) [spring-context-3.2.1.RELEASE.jar:] at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) [spring-web-3.2.2.RELEASE.jar:] at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) [spring-web-3.2.2.RELEASE.jar:] at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) [spring-web-3.2.2.RELEASE.jar:] at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3368) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.catalina.core.StandardContext.start(StandardContext.java:3821) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final] at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_18] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_18] at java.lang.Thread.run(Thread.java:619) [:1.6.0_18] aused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.service.jta.platform.spi.JtaPlatform] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:186) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:150) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:102) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2276) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2272) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1741) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1781) [hibernate-core-4.1.10.Final.jar:] at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:247) [spring-orm-3.2.2.RELEASE.jar:] at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:373) [spring-orm-3.2.2.RELEASE.jar:] at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:358) [spring-orm-3.2.2.RELEASE.jar:] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545) [spring-beans-3.2.1.RELE ar:] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483) [spring-beans-3.2.1.RELEASE ] ... 20 more aused by: org.hibernate.service.jta.platform.spi.JtaPlatformException: Unable to build org.hibernate.service.jta.platform.internal.TransactionManagerLookupBridge from specifie .hibernate.transaction.TransactionManagerLookup implementation: com.atomikos.icatch.jta.hibernate4.TransactionManagerLookup at org.hibernate.service.jta.platform.internal.JtaPlatformInitiator.mapLegacyClasses(JtaPlatformInitiator.java:155) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.jta.platform.internal.JtaPlatformInitiator.getConfiguredPlatform(JtaPlatformInitiator.java:78) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.jta.platform.internal.JtaPlatformInitiator.initiateService(JtaPlatformInitiator.java:60) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.jta.platform.internal.JtaPlatformInitiator.initiateService(JtaPlatformInitiator.java:47) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:69) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) [hibernate-core-4.1.10.Final.jar:] ... 32 more 4:57:12,923 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/SpringMVC]] (MSC service thread 1-4) Exception sending context initialized event to list instance of class org.springframework.web.context.ContextLoaderListener: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'usermanagement onFactory' defined in class path resource [applicationContext-dao.xml]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unabl create requested service [org.hibernate.service.jta.platform.spi.JtaPlatform] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486) [spring-beans-3.2.1.RELEASE ] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524) [spring-beans-3.2.1.RELEASE.ja at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) [spring-beans-3.2.1.RELEASE.jar: at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) [spring-beans-3.2.1.RELEASE.jar:] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) [spring-beans-3.2.1.RELEASE.jar:] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) [spring-beans-3.2.1.RELEASE.jar:] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) [spring-beans-3.2.1.RELEASE.jar:] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:608) [spring-beans-3.2.1.RELEASE.jar:] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) [spring-context-3.2.1.RELEASE.jar at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) [spring-context-3.2.1.RELEASE.jar:] at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) [spring-web-3.2.2.RELEASE.jar:] at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) [spring-web-3.2.2.RELEASE.jar:] at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) [spring-web-3.2.2.RELEASE.jar:] at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3368) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.apache.catalina.core.StandardContext.start(StandardContext.java:3821) [jbossweb-7.0.1.Final.jar:7.0.2.Final] at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final] at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_18] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_18] at java.lang.Thread.run(Thread.java:619) [:1.6.0_18] aused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.service.jta.platform.spi.JtaPlatform] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:186) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:150) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:102) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2276) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2272) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1741) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1781) [hibernate-core-4.1.10.Final.jar:] at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:247) [spring-orm-3.2.2.RELEASE.jar:] at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:373) [spring-orm-3.2.2.RELEASE.jar:] at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:358) [spring-orm-3.2.2.RELEASE.jar:] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545) [spring-beans-3.2.1.RELE ar:] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483) [spring-beans-3.2.1.RELEASE ] ... 20 more aused by: org.hibernate.service.jta.platform.spi.JtaPlatformException: Unable to build org.hibernate.service.jta.platform.internal.TransactionManagerLookupBridge from specifie .hibernate.transaction.TransactionManagerLookup implementation: com.atomikos.icatch.jta.hibernate4.TransactionManagerLookup at org.hibernate.service.jta.platform.internal.JtaPlatformInitiator.mapLegacyClasses(JtaPlatformInitiator.java:155) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.jta.platform.internal.JtaPlatformInitiator.getConfiguredPlatform(JtaPlatformInitiator.java:78) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.jta.platform.internal.JtaPlatformInitiator.initiateService(JtaPlatformInitiator.java:60) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.jta.platform.internal.JtaPlatformInitiator.initiateService(JtaPlatformInitiator.java:47) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:69) [hibernate-core-4.1.10.Final.jar:] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) [hibernate-core-4.1.10.Final.jar:] ... 32 more 4:57:13,028 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-4) Error listenerStart 4:57:13,028 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-4) Context [/SpringMVC] startup failed due to previous errors 4:57:13,046 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/SpringMVC]] (MSC service thread 1-4) Closing Spring root WebApplicationContext 4:57:13,050 INFO [org.jboss.web] (MSC service thread 1-4) registering web context: /SpringMVC 4:57:13,055 INFO [org.jboss.as] (MSC service thread 1-1) JBoss AS 7.0.2.Final "Arc" started in 9904ms - Started 184 of 241 services (57 services are passive or on-demand) 4:57:13,115 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "SpringMVC.war" 我可以尝试回答您的问题,但您的问题应该包含更多信息: 您应该包含完整的堆栈跟踪。您在问题中提出的错误中没有足够的信息。完整的堆栈跟踪将添加一些必要的信息来帮助我们弄清楚发生了什么。 您发布了一个配置文件,但它引用了其他文件,例如hibernate.properties。您应该包含这些文件,以便我们可以检查您的应用程序的正确配置。 如果没有这些信息,我只能建议以下内容: 您正在使用 Atomikos 作为交易管理器。您必须包含对 Atomikos 的 Maven 依赖项(您在帖子中说您正在使用 Maven)。 在声明的beanusermanagementSessionFactory中,您应该具有与Atomikos相关的属性,如本文档中所述(因为我们看不到hibernate属性,也许您已正确配置它们)。 举个例子,我有一个项目可以与 Spring 3.2.3、Hibernate 4.2.1、Atomikos 3.8.0 和 Ivy 完美配合作为依赖管理器(Ivy 使用与 Maven 相同的信息来声明依赖项,所以你不应该使其适应 Maven 的问题)。我在这里放置了一些配置文件,可以帮助您找到错误: ivy.xml <dependency org="org.hibernate" name="hibernate-core" rev="4.2.1.Final"/> <dependency org="com.atomikos" name="transactions-jdbc" rev="3.8.0" /> <dependency org="com.atomikos" name="transactions-hibernate3" rev="3.8.0" /> spring-config.xml <bean id="usermanagementSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSourceA" /> <property name="annotatedClasses"> <list> <value>com.edt.tests.model.Contact</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.transaction.factory_class"> org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory </prop> <prop key="hibernate.transaction.manager_lookup_class"> com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup </prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> 如果您无法使用此信息解决问题,则必须发布有关您所遇到的错误以及您在项目中使用的配置文件的更多信息。 我用hibernate.transaction.jta.platform_resolver制作的,描述于这里。

回答 2 投票 0

如何在 Quarkus/Kotlin 中使用 JDBC 以事务方式写入 Kafka 记录并持久化它

我正在使用 Kotlin 编写一个反应式 Quarkus 应用程序。这是我的 REST 资源,它接收请求并尝试从中创建操作。 @ApplicationScoped @Path("/v1/opera...

回答 1 投票 0

引起:org.hibernate.MappingException:未知实体:新对象。 JTA

由于我的数据库的复杂性,我决定创建一个新对象,在其中仅指定我将使用的参数。为了进行自定义查询,我在 JPA 中使用 createNativeQuery。遵循我的目标...

回答 4 投票 0

分布式事务中无法调用Connection.commit

我正在使用 Weblogic 12c,在应用程序中提交分布式事务时遇到以下错误。 “java.sql.SQLException:无法在分布式事务中调用 Connection.commit...

回答 1 投票 0

EJB Hibernate 嵌套事务不会回滚,尽管我抛出一个用 @ApplicationException(rollback=true) 注释的异常

我在制作真正的代码之前创建了一个测试代码只是为了确保它能工作。 这段代码所做的就是在彼此之间启动新的事务并尝试更新两个实体。这很简单。 对我来说,

回答 1 投票 0

单个数据库上的分布式事务处理(SpringBoot、JMS、JPA)

我有一个设置,可以通过添加侦听 JMS 队列的节点来扩展该设置。 所有资源(节点)写入同一数据库并并行处理一项或多项“作业”。 工作 A --...

回答 1 投票 0

带有 Atomikos 的 Spring boot 3

Spring Boot 3 不支持 Atomikos。 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide Spring Boot 3.0 中删除了对以下依赖项的支持:

回答 1 投票 0

无法同时使用多个JTA EntityManager

尝试从旧数据库(具有不同数据源)查询数据到当前数据库,但在两种情况下出现两个异常。 我有一个这样的实现: A类{ @PersistenceCo...

回答 1 投票 0

Spring Boot 3.0中的多数据库事务管理

嗨,我有两个不同的数据库,我的流程需要分布式事务。 链式事务管理器已被弃用 (https://github.com/spring-projects/spring-data-commons/issues/2232) 还有

回答 1 投票 0

使用 Atomikos 减少 JTA 中的事务超时

我正在尝试使用 JTA + Atomikos 减少 300 秒的默认超时。但是,它不起作用,因为它一直需要 300 秒才能超时。 我想做的是: UserTransaction:设置时间...

回答 1 投票 0

如何在Keycloak中提交交易?

我使用 Keycloak: 我与Keycloak一起工作: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <parent> <artifactId>keycloak-parent</artifactId> <groupId>org.keycloak</groupId> <version>4.4.0.21-SNAPSHOT</version> </parent> <name>Keycloak WildFly Integration</name> <description/> <modelVersion>4.0.0</modelVersion> <artifactId>keycloak-wildfly-parent</artifactId> <packaging>pom</packaging> <modules> <module>adduser</module> <module>extensions</module> <module>server-subsystem</module> </modules> 在我的自定义模块中,我正在尝试处理事务。我从主类 KeycloakApplications 得到这段代码作为例子 KeycloakSession session = sessionFactory.create(); try { session.getTransactionManager().begin(); //do some wokr with db etc. session.getTransactionManager().commit(); ServicesLogger.LOGGER.addUserSuccess(userRep.getUsername(), realmRep.getRealm()); } 但是当我在我的代码中使用相同的方法时,我得到了这个错误 java.lang.IllegalStateException: No transaction associated with the 当前线程 我的代码: try { KeycloakTransactionManager transactionManager = session.getTransactionManager(); transactionManager.begin(); //do some work transactionManager.commit(); //error in this line } 我使用 begin()、commit() 和 rollback() 方法的实现来调试类 org.keycloak.services.DefaultKeycloakTransactionManager,但它并没有帮助我弄清楚我做错了什么。 部分画面: 开始之前的 TransactionManager() begin() 之后的事务管理器 事务管理器在一些工作之后,但在提交之前 谁能告诉我为什么会发生这个错误?

回答 0 投票 0

为什么我们需要setRollbackOnly,而不仅仅是回滚事务?

当我在项目中使用@Transactional时,我将超时时间设置为60秒,但当进程运行超过60秒后,事务并没有立即回滚,只是调用了setRollbackOnly()。但是当进程运行超过60秒后,事务并没有立即回滚,只是调用了setRollbackOnly()...。

回答 1 投票 1

在JTA中,交易经理的具体流程是什么?

看了很多关于JTA的博客,还是有一些地方让我很困惑。比如我在JTA实例中发现博客提供了一张图片来解释一个组件之间的关系。

回答 1 投票 0

Spring DefaultJmsListenerContainerFactory在JBoss EAP 7上丢弃消息。

我有以下Spring JMS工厂配置。@Bean(name = "jmsListenerFactory") public DefaultJmsListenerContainerFactory jmsListenerFactory() throws Exception { ....

回答 1 投票 0

单个数据库的JTA

我只是在学习JTA,如果我只有一个数据库,我不知道是否应该使用它。当前,我使用hibernate 5作为JPA提供程序,如果需要在方法之间使用一个事务,我只需传递...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.