关于将ejb 3与数据源连接和许多方法一起使用的指南

时间:2011-07-14 16:50:33

标签: jdbc ejb-3.0

我必须编写使用可调用语句的无状态EJB3,并构建XML结构。 我从JNDI获得了一个DataSource连接;

ctx.lookup('DS').getConnection();

我的ejb有很多方法(构建XML的每个部分),我发现将连接作为参数传递给我可以调用的每个方法都很麻烦。

事情是:

我应该将连接作为字段放在我的ejb中,在@PostConstruct上打开它并仅在@PreRemove上关闭它吗?这样它就可以在bean的整个生命周期内使用相同的连接OPEN。

我是否应该使用带有try / cacth块的Interceptor打开连接并在每次调用时将其与bean对齐?这不会导致并发问题吗?如果连接是一个字段,并由调用无状态bean方法的线程共享?

我想我想要用JPA做同样的事情:

@PersistenceContext EntityManager em;

public String businessMethod(String param){
    em.find(...);
    someMethod(param);
}

private void sometMethod(String param){
    em.createQuery...;
}

但是使用java.sql.Connection

提前致谢

维克多

1 个答案:

答案 0 :(得分:0)

为避免将连接作为参数传递给所有方法,您可以尝试基于字段的数据源注入。

@Resource(name="defaultDS")
    private javax.sql.DataSource defaultDS;

然后,你可以在该bean和amp;中存在的所有方法中获得数据源。可以从它获得连接。