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 */

Odpovedet emailem