我必须编写使用可调用语句的无状态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
提前致谢
维克多
答案 0 :(得分:0)
为避免将连接作为参数传递给所有方法,您可以尝试基于字段的数据源注入。
@Resource(name="defaultDS")
private javax.sql.DataSource defaultDS;
然后,你可以在该bean和amp;中存在的所有方法中获得数据源。可以从它获得连接。