Мне нужно кодировать EJB3 без сохранения состояния, который использует вызываемые операторы и создает структуру XML.
Я получаю соединение с источником данных от JNDI;
ctx.lookup('DS').getConnection();
У моего ejb есть много методов (которые строят каждую часть XML), и я обнаружил, что передавать соединение в качестве параметра каждому методу, который я могу вызвать, неудобно.
дело в том:
Должен ли я поместить соединение в качестве поля в моем ejb, открыть его на @PostConstruct и закрыть только на @PreRemove? чтобы он использовал одно и то же соединение OPEN в течение всего времени жизни компонента.
или
Должен ли я использовать Interceptor с блоком try / cacth, который открывает соединение и назначает его компоненту при каждом вызове? Кроме того, это не вызовет проблемы параллелизма? учитывая, что соединение является полем и является общим для потоков, вызывающих методы bean-компонентов без состояния?
Я думаю, что хочу то же самое, что мы можем сделать с JPA:
@PersistenceContext EntityManager em;
public String businessMethod(String param){
em.find(...);
someMethod(param);
}
private void sometMethod(String param){
em.createQuery...;
}
но с java.sql.Connection
заранее спасибо
Victor