小编hal*_*ave的帖子

优雅地处理EJB/JPA环境中的约束违规?

我在Glassfish v3应用服务器上使用EJB和JPA.我有一个实体类,我强迫其中一个字段与@Column注释是唯一的.

@Entity
public class MyEntity implements Serializable {

    private String uniqueName;

    public MyEntity() {
    }

    @Column(unique = true, nullable = false)
    public String getUniqueName() {
        return uniqueName;
    }

    public void setUniqueName(String uniqueName) {
        this.uniqueName = uniqueName;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将此字段设置为非唯一值的对象持久化时,当EJB容器管理的事务提交时,我得到一个异常(如预期的那样).

我有两个问题需要解决:

1)我得到的例外是无用的"javax.ejb.EJBException:Transaction aborted".如果我递归调用getCause()足够多次,我最终会得到更有用的"java.sql.SQLIntegrityConstraintViolationException",但是这个异常是EclipseLink实现的一部分,我真的不习惯依赖它的存在.

有没有更好的方法来获取JPA的详细错误信息?

2)EJB容器坚持记录此错误,即使我抓住它并处理它.

有没有更好的方法来处理这个错误,这将阻止Glassfish使用无用的异常信息混乱我的日志?

谢谢.

java database jpa java-ee ejb-3.0

18
推荐指数
2
解决办法
2万
查看次数

如何在WebLogic 10.3中配置WorkManagers?

我想使用WorkManager在WebLogic 10.3应用服务器上安排一些并行作业.

http://java.sun.com/javaee/5/docs/api/javax/resource/spi/work/WorkManager.html

我发现Oracle/BEA文档有点碎片化且难以理解,并且它没有很好的例子来使用EJB 3.0中的WorkManagers.

具体来说,我想知道:

1)我需要在部署描述符(ejb-jar.xml和朋友)中放入什么(如果有的话)?

2)我想使用@Resource注释将WorkManager注入我的EJB 3会话bean.我使用什么"名称"作为资源?

3)如何配置WorkManager的线程数和其他参数.

我的理解是WebLogic上的底层实现是CommonJ,但如果可能的话,我更愿意使用非专有方法.

concurrency weblogic java-ee weblogic-10.x

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

java-ee ×2

concurrency ×1

database ×1

ejb-3.0 ×1

java ×1

jpa ×1

weblogic ×1

weblogic-10.x ×1