【发布时间】:2015-03-31 16:39:02
【问题描述】:
我正在使用在 Wildfly 8 上运行的 Jax-RS 和 EJB3 构建一个安静的 Web 服务。系统分为两部分。一个休息模块和一个持久性模块。 rest 模块由一个带有方法的 rest servlet 组成,可在“mycontext/rest/do”下访问。该方法调用代表持久性模块接口的无状态bean 的方法“do()”。 “do()”调用另一个无状态 bean 的“persistEntity(Entity e)”,它表示实体类的外观(一种接口模式)。我要坚持的实体有一些限制。如果它们被违反,则会抛出诸如“ConstraintViolationException”之类的异常(我认为是由 EJB 容器)。我尝试在持久性模块中的两个无状态 bean 之一中捕获异常,但这不起作用。这意味着 catch 块中的代码不会被执行。但是在 servlet 中捕获异常是有效的。
Rest servlet(捕捉异常在这里工作):
@Path("/rest")
public class AccountRestService {
@Inject
private Service service;
@POST
public void do(Entity entity) {
service.do(entity);
}
}
表示持久化模块接口的Bean(忽略捕获异常):
@Stateless
@LocalBean
public class Service {
@Inject
private EntityFacade facade;
public void do(Entity entity) {
facade.persist(entity);
}
}
实体外观(捕捉异常被忽略):
@Stateless
public class EntityFacade{
@PersistenceContext(unitName = "primary")
private EntityManager em;
public void create(Entity entity){
em.persist(entity); // this line throws exception like ConstraintViolationException
}
}
【问题讨论】:
标签: java exception ejb try-catch constraints