我有一个 EJB3 应用程序,它包含一些用于访问数据库的 EJB,并通过会话 Bean 作为 Web 服务公开。
现在有两件事我需要找出:
1) 有什么方法可以阻止 SQL 异常导致 Web 服务抛出 SOAP 错误?事务由容器处理,当前 sql 异常会导致引发 RollBackException,因此事务会回滚(期望的行为)并且 Web 服务会引发错误(不期望的)。
2)我希望扩展 web 服务以能够接收实体列表,并且会话 bean 能够持久化。但是,我希望每个实体都在自己的事务中执行,这样如果一个实体失败,其他实体不会受到影响(同样,Web 服务也不应该出错)。
对于 (1) 我试图捕获 RollBackException,但我认为这是在另一个线程的某个地方抛出的,因为永远不会到达 catch 块。我假设(2)我需要研究用户事务,但首先希望容器来管理它,其次不知道如何强制使用用户事务。
谢谢。