Tag: 容器管理

容器管理事务无法回滚

我正在玩交易。 我配置JPA来处理我的实体,并希望将它们保存在数据库中。 问题是,当我的程序抛出runtimeException时,CMT不会回滚。 这个“容器事物”背后的想法很难理解,而且记录很少。 @transactional托管事务,纯CDI Interceptor托管事务和Bean管理事务就像一个魅力。 这是我编码的内容:这是一个简单的“电影演示”。 你想看两部带X座位的电影。 座位有限。 如果电影中的座位不足,则不应该有交易(ACID和东西) 在我的buyTicketsBoundary类: 起初我告诉我的class级我们正在使用CMT: @Named(“buchungBoundry”) @RequestScoped @TransactionManagement(TransactionManagementType.CONTAINER) public class BuchungBoundry { @EJB private BuchungVerwaltung buyTicketsController; @EJB private KundenVerwaltung customerController; @EJB private SaalVerwaltung roomController; @EJB private MovieVerwaltung movieController; private int ticketsForMovie1; //this is how many tickets we want to buy private int ticketsForMovie2; public BuchungBoundry() { } @TransactionAttribute(TransactionAttributeType.REQUIRED) […]

如何从容器管理的事务提交中捕获exception?

我有一个带有@WebService接口的@Stateless EJB,使用容器管理的事务,这意味着如果没有抛出系统exception,在调用方法后,容器会自动提交事务。 如果我尝试EntityManager.persist(…)两个具有相同值的对象,对于具有唯一约束的列,容器将在我的代码之外的提交时向客户端抛出PersistenceException 。 我如何捕获此exception,以便我可以重新抛出自己的应用程序exception? 我是否必须在我的方法中手动提交事务以捕获提交中的exception? (并且EntityManager.flush()是正确的方法吗?)如果是这样,那么容器管理事务的重点是什么?

受保护的URL将未受保护的webapge组件泄露给未经身份validation的用户

我相信通过 + + 和使用实现JSF应用程序的是两种不同的方式! 是吗? 我尝试通过上面的第一种方法(使用 + + )实现但发现使用受保护和未受保护的HTML组件的受保护网页甚至提供了不受保护的资源对未经身份validation的用户。 我需要完全保护URL,以便受保护的URL甚至不会将该网页的任何部分泄露给未经身份validation的用户。 我该怎么做? 并且,使用web.xml的安全实现是一种自我管理的方式来处理安全性吗? 我相信,然后您可以在过滤/捕获每个请求时自定义更细粒度的安全性?