开发者

guidance on using ejb 3 with Datasource connection and lots of methods

开发者 https://www.devze.com 2023-03-20 04:09 出处:网络
I have to code an Stateless EJB3that uses callable statements, and builds a XML structure. I\'m getting a DataSource Connection from JNDI;

I have to code an Stateless EJB3 that uses callable statements, and builds a XML structure. I'm getting a DataSource Connection from JNDI;

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

my ejb has lots of methods(that build each part of the XML), and i found it is cumbersome to pass the connection as a parameter to every method that i could call.

the thing is:

Should I put the connection as a field in my ejb, open it on @PostConstruct and close it only on @PreRemove? so that it would use the same connection OPEN for the entire lifetime of the bean.

or

Should I use an Interceptor with a try/c开发者_StackOverflow社区acth block that opens the connection and asign it to the bean on every call? Moreover wouldn't this cause concurrency problems? given the connection is a field and is shared by the threads calling the stateless bean methods?

I think I want the same thing we can do with JPA:

@PersistenceContext EntityManager em;

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

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

but with java.sql.Connection

thanks in advance

Victor


To avoid passing connection as parameter to all methods, you can try field-based injection for the data-source.

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

Then you can have the data-source available in all the methods present in that bean & can get connection from it.

0

精彩评论

暂无评论...
验证码 换一张
取 消