- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于 EE 容器如何控制事务的问题。这是为我的问题提供一些上下文的伪代码。这不是我编码的方式,所以请留在问题上,不要将主题演变成其他内容。
考虑以下两个服务和相关 Controller 。这两个服务都注入(inject)了 EntityManager 并且都有需要在事务中运行的方法。一项服务有一种不需要任何事务支持的方法。
@Stateless
class UserService {
@PersistenceContext private EntityManager em;
public void saveUser(User user) {
em.merge(user);
}
public String getFullName(User user) {
return user.getFirstName() + " " + user.getLastName();
}
}
@Stateless
class LogService {
@PersistenceContext private EntityManager em;
public void logEvent(String eventText) {
Event event=new Event();
event.setText(eventText);
event.setTime(new Date());
em.persist(event);
}
}
@Named
class UserController {
User user;
@Inject UserService userService;
@Inject LogService logService;
public void updateUser(user) { // button posts to this method
String fullName=userService.getFullName(user); // 1
if(fullName.startsWith("X")) return; // 2
userService.saveUser(user); // 3
logService.logEvent("Saved user " + fullName); // 4
}
}
UserController.updateUser()
将执行
userService.saveUser(user);
Và
logService.logEvent("Saved user " + fullName);
在同一笔交易中。所以如果调用
logService.logEvent()
失败并出现 SQL 异常,用户实体将不会更新。另外,我的假设是调用
userService.getFullName(user)
不在任何事务中运行,如果我们在用户名以 X 开头时提前退出该方法,则不会创建事务。但显然,这些只是猜测。
UserController.updateUser()
带有事务的方法以及实际触发事务的原因是什么?此外,您可以指出我的任何进一步阅读,将不胜感激。我在网上看到了一些 Material ,但我仍然在这里遗漏了一些东西,并且在工作中也没有得到任何帮助。所以我当然不是唯一在这方面存在差距的人。
1 Câu trả lời
在您的情况下,将启动 3 个独立事务。每个由您的 @Stateless
中的一个 bean 类方法。这是因为 session EJB 具有事务类型为 TransactionAttribute.REQUIRED
的事务方法。默认情况下。这意味着如果一个事务尚未运行,新的事务将在方法调用之前创建。
要在一个事务中运行所有 session EJB 方法,您必须将它们包装在一个事务中。在您的情况下,您可以通过注释 updateUser(...)
来做到这一点。使用 @Giao dịch
的方法
关于jakarta-ee - Java EE 容器如何控制事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20388885/
我想了解为什么一些 Jakarta EE 规范是空的。 例如 Jakarta Annotations规范由免责声明和快速描述(3 行)组成,但是有 Javadoc . 当 JCP 负责 J2EE 规范
我正在研究 OpenNTF 项目“XPages Jakarta EE Support”。 我正在尝试为 Person 对象上的 CRUD 操作设置 REST API。我设法创建 GET 和 POST
我正在研究 OpenNTF 项目“XPages Jakarta EE Support”。 我正在尝试为 Person 对象上的 CRUD 操作设置 REST API。我设法创建 GET 和 POST
我正在采用 Jakarta EE 9 并使用 EJB 和 WEB 模块开发一个 EE 应用程序。 EJB 已经完成并部署在 Glassfish 6(Jakarta EE 9 的 RI 实现)上。现在,
OpenLiberty(v20.0.0.2-beta 或其他版本)中是否有办法将 jakarta ee 9(通过 webProfile-9.0 或 jakartaee-9.0 或任何仅 jakarta
在使用Spring Boot 3.0.7并试图保持更新时,我遇到了这个错误,不知道它是什么意思。。加载的依赖项是Spring Security 6.0.9,问题存在于使用Java 17或19的情况下(
有没有办法在 JPA 实体监听器中检查当前事务是否已提交,如下所示? @ApplicationScoped public class EntityListener { @Inject
以下代码使用 javamail api 通过 gmail smtp 服务器发送邮件和附件。 public void doSendGmail(){ from = txtFrom.getT
大家好我有一个应用程序(spring+hibernate)需要同时发送数千封电子邮件我被告知这里最好的解决方案是有一个邮件服务器我不知道从哪里开始,或者是否有更好的框架或服务所以请大家给我一些信息,从
我正在尝试从 Java 邮件的文件夹中删除/删除消息(在我将其复制到另一个文件夹之后),这是我的代码: Flags deleted = new Flags("DELETED"); folder.se
某些页面可以接收称为“P1”的特定请求参数: page.do?P1=value1 现在,一个scriptlet正在测试request参数的存在,如果P1为“value1”,则会在页面上呈现一些信息。
我有一段非常类似于此http://java.sun.com/developer/onlineTraining/JavaMail/contents.html#JavaMailFetching的代码 我的
我在NetBeans中创建了一个Java Web应用程序项目,并在其中创建了一个启动bean: package malibu.util; import javax.annotation.PostCon
我有两个不同的项目:A 和 B。 B 包含一个拦截器,我想在项目 A 以及将来的项目 C 和 D 中使用它。 我在两个项目中都使用 jboss-javaee-6.0 版本 3.0.3.Final(这意
我一直在阅读 “Java 事务” ,我一直困惑它是什么?什么是有用的? 最佳答案 你可以谷歌搜索并找到这样的页面:http://www.java-tips.org/java-ee-tips/enter
这个问题在这里已经有了答案: What exactly is Java EE? (5 个回答) Difference between an application server and a servl
Web 应用程序的用户界面通常包含用于执行 CRUD 操作的各种按钮。在执行以下操作时,按钮标签的建议命名约定是什么? 用户创建(添加用户...或添加用户或添加用户) 事件创建(添加事件...或添加事
Hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời được hỗ trợ bằng sự kiện, trích dẫn hoặc chuyên môn, nhưng câu hỏi này có thể gây ra tranh luận, tranh cãi, thăm dò ý kiến hoặc thảo luận mở rộng. Nếu bạn cảm thấy câu hỏi này có thể được cải thiện và có thể mở lại, hãy truy cập
我对java网页环境很陌生。最近尝试用Java开发一个电子商务平台。 因此,我使用 j_security_check 基于表单作为我的身份验证工具。身份验证完成后,成功重定向到所需页面。 但是,由于我
什么时候 我通过无状态服务从数据库中获取实体, 然后在另一个 bean 和 中修改它 然后想通过无状态服务将其保存到数据库中, 我注意到实体已分离。我认为因为无状态服务的持久化上下文,实体从被夺取到存
Tôi là một lập trình viên xuất sắc, rất giỏi!