co takhle, @TransactionAttribute(value=TransactionAttributeType.NEVER)
na metodu spust, start, end. To by melo zarucit, ze ani jedna z nich
nebude moci byt volana v transakci. Pokud ji nekdo vola v transakci, tak
se to ukaze.
Ales Dostal napsal(a):
Tak bohuzel bez uspechu. Zkousel jsem to pres vytvoreni nove transakce,
ale stejne ne :(
Pr:
@Resource(mappedName = "jms/TopicConnectionFactoryPlneni")
private TopicConnectionFactory connectionFactory;
@Resource(mappedName = "jms/TopicPlneni")
private Topic topic;
private Connection con = null;
private Destination dest = null;
private Session session = null;
private MessageProducer producer = null;
private ObjectMessage oMessage = null;
@PostConstruct
public void connect() {
try {
dest = (Destination) topic; con =
connectionFactory.createConnection();
session = con.createSession(false,
Session.AUTO_ACKNOWLEDGE); producer =
session.createProducer(dest);
oMessage = session.createObjectMessage(); }
catch (Exception e) {} }
@PreDestroy
public void close() {
try {
con.close();
} catch (Exception e) {}
}
public void start() {
Plneni p = getPlneni();
p.setProbiha(true);
try {
oMessage.setObject(p);
producer.send(oMessage); } catch
(JMSException ex) {
ex.printStackTrace();
} }
@Timeout
public void spust(Timer timer) {
start(); // plneni
plneni();
end(); }
Zkousel jsem, vsechno mozne anotovat metodu start a end jako
@TransactionAttribute(value=TransactionAttributeType.REQUIRES_NEW). Ci
udelat pro start i end vlastni connection.
Uz jsem vazne bezradnej :(
--
S pozdravem Roman "Dagi" Pichlik
/* http://www.sweb.cz/pichlik/ Blog pro kodery */