thanks a lot :-) gonna try this approach right now
you rock man [] Leo On Wed, Apr 15, 2015 at 10:12 AM, Romain Manni-Bucau <[email protected]> wrote: > this is the default yes > > > Romain Manni-Bucau > @rmannibucau <https://twitter.com/rmannibucau> | Blog > <http://rmannibucau.wordpress.com> | Github < > https://github.com/rmannibucau> | > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber > <http://www.tomitribe.com> > > 2015-04-15 15:09 GMT+02:00 Leonardo K. Shikida <[email protected]>: > > > then the message will be acknowledged on userTransaction.commit() right? > > > > do I have to also use > > > > PersistenceContextType.TRANSACTION > > > > for the injected entity manager? (as showed at > > > http://tomee.apache.org/examples-trunk/testing-transactions-bmt/README.html > > ) > > > > > > > > > > [] > > > > Leo > > > > On Wed, Apr 15, 2015 at 10:04 AM, Romain Manni-Bucau < > > [email protected]> > > wrote: > > > > > @javax.ejb.TransactionManagement(BEAN), then @TransactionAttribute will > > get > > > ignored. > > > > > > You can inject with ÀResource userTransaction ut the "transaction > facade" > > > you can use > > > > > > > > > Romain Manni-Bucau > > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > <http://rmannibucau.wordpress.com> | Github < > > > https://github.com/rmannibucau> | > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber > > > <http://www.tomitribe.com> > > > > > > 2015-04-15 14:39 GMT+02:00 Leonardo K. Shikida <[email protected]>: > > > > > > > yup :-) > > > > > > > > do I have to explicitly use > > > > > > > > @TransactionAttribute(TransactionAttributeType.REQUIRED) > > > > > > > > or change > > > > > > > > @ActivationConfigProperty(propertyName = "acknowledgeMode", > > > > propertyValue = "Auto-acknowledge") > > > > > > > > to client in order to do that? > > > > > > > > > > > > [] > > > > > > > > Leo > > > > > > > > On Wed, Apr 15, 2015 at 9:22 AM, Romain Manni-Bucau < > > > [email protected] > > > > > > > > > wrote: > > > > > > > > > well transaction timeout = exception + rollback if transaction took > > > more > > > > > than X but the execution time is still the real one. > > > > > > > > > > you can do using bean managed transactions: > > > > > > > > > > Exception oops = null; > > > > > try { > > > > > userTransaction.begin(); > > > > > } cath (Exception e) { > > > > > oops = e; > > > > > } finally { // add the logic you want here > > > > > if (oops == null) { > > > > > userTransaction.commit(); > > > > > return; > > > > > } > > > > > > > > > > userTransaction.rollback(); > > > > > } > > > > > > > > > > It doesnt match your need? > > > > > > > > > > > > > > > Romain Manni-Bucau > > > > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > > > <http://rmannibucau.wordpress.com> | Github < > > > > > https://github.com/rmannibucau> | > > > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber > > > > > <http://www.tomitribe.com> > > > > > > > > > > 2015-04-15 14:15 GMT+02:00 Leonardo K. Shikida <[email protected] > >: > > > > > > > > > > > If there's an external event to the MDB like a timeout (which > > > > exception I > > > > > > cannot catch), then it should have something like a @Timeout > > > annotation > > > > > so > > > > > > I could customize how the event could be handled. > > > > > > > > > > > > Not tomee's problem of course, tomee just implements a standard. > > > > > > > > > > > > :-( > > > > > > > > > > > > Gonna think on something else here. > > > > > > > > > > > > > > > > > > [] > > > > > > > > > > > > Leo > > > > > > > > > > > > On Wed, Apr 15, 2015 at 4:21 AM, Romain Manni-Bucau < > > > > > [email protected] > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > hmm, my proposal was to use UserTransaction more than that. > About > > > > this > > > > > > > particular exemple we would need a maven project to reproduce > it. > > > > > > > > > > > > > > > > > > > > > Romain Manni-Bucau > > > > > > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > > > > > <http://rmannibucau.wordpress.com> | Github < > > > > > > > https://github.com/rmannibucau> | > > > > > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | > Tomitriber > > > > > > > <http://www.tomitribe.com> > > > > > > > > > > > > > > 2015-04-15 4:05 GMT+02:00 Leonardo K. Shikida < > [email protected] > > >: > > > > > > > > > > > > > > > Hi > > > > > > > > > > > > > > > > So I've changed my MDBs to stateless > > > > > > > > > > > > > > > > public class Worker implements MessageListener { > > > > > > > > > > > > > > > > @Resource(name="MyJmsConnectionFactory") > > > > > > > > private ConnectionFactory connectionFactory; > > > > > > > > > > > > > > > > @Resource(name="DriverJobQueue") > > > > > > > > private Queue queue; > > > > > > > > > > > > > > > > private Connection connection = null; > > > > > > > > private Session session = null; > > > > > > > > private MessageConsumer consumer = null; > > > > > > > > > > > > > > > > @PostConstruct > > > > > > > > public void initialize() { > > > > > > > > System.out.println("Instantiating "+this); > > > > > > > > try { > > > > > > > > connection = > connectionFactory.createConnection(); > > > > > > > > connection.start(); //activemq site says it's > here > > > > > > > > // Create a Session > > > > > > > > session = connection.createSession(false, > > > > > > > > Session.AUTO_ACKNOWLEDGE); > > > > > > > > > > > > > > > > // Create a MessageConsumer from the Session to > the > > > > Topic > > > > > > or > > > > > > > > Queue > > > > > > > > consumer = session.createConsumer(this.queue); > > > > > > > > > > > > > > > > consumer.setMessageListener(this); > > > > > > > > > > > > > > > > // connection.start(); //some sites says it's here > > > > > > > > > > > > > > > > } catch(Exception e) { > > > > > > > > e.printStackTrace(); > > > > > > > > } finally { > > > > > > > > if (consumer != null) { > > > > > > > > try { > > > > > > > > consumer.close(); > > > > > > > > } catch (JMSException e) { > > > > > > > > e.printStackTrace(); > > > > > > > > } > > > > > > > > } > > > > > > > > if (session != null) { > > > > > > > > try { > > > > > > > > session.close(); > > > > > > > > } catch (JMSException e) { > > > > > > > > e.printStackTrace(); > > > > > > > > } > > > > > > > > } > > > > > > > > if (connection != null) { > > > > > > > > try { > > > > > > > > connection.close(); > > > > > > > > } catch (JMSException e) { > > > > > > > > e.printStackTrace(); > > > > > > > > } > > > > > > > > } > > > > > > > > } > > > > > > > > } > > > > > > > > > > > > > > > > @Override > > > > > > > > public void onMessage(Message msg) { > > > > > > > > System.out.println("On message for "+this); > > > > > > > > } > > > > > > > > > > > > > > > > openejb-jar.xml > > > > > > > > > > > > > > > > <?xml version="1.0"?> > > > > > > > > <openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1"> > > > > > > > > <ejb-deployment > > > > > > > > ejb-name="Worker" > > > > > > > > deployment-id="Worker" > > > > > > > > container-id="pseudo_mdb" /> > > > > > > > > </openejb-jar> > > > > > > > > > > > > > > > > tomee.xml > > > > > > > > > > > > > > > > <Container id="myAllContainer" type="STATELESS"> > > > > > > > > strictPooling = false > > > > > > > > </Container> > > > > > > > > > > > > > > > > <Container id="pseudo_mdb" type="STATELESS"> > > > > > > > > strictPooling = true > > > > > > > > maxSize = 5 > > > > > > > > minSize = 3 > > > > > > > > </Container> > > > > > > > > > > > > > > > > The container part seems to be right, since only the Worker > > bean > > > is > > > > > > > > instantiated early. > > > > > > > > > > > > > > > > But for some reason, it's not consuming from the queue. > > > > > > > > > > > > > > > > Am I missing something here? > > > > > > > > > > > > > > > > Still, I feel I am running in circles here... because even > if I > > > > have > > > > > > some > > > > > > > > control on the context, I still won't be able to catch the > > > timeout > > > > > > > > exception :-( > > > > > > > > > > > > > > > > grrrrrrrrrrrr > > > > > > > > > > > > > > > > [] > > > > > > > > > > > > > > > > Leo > > > > > > > > > > > > > > > > On Tue, Apr 14, 2015 at 6:08 PM, Leonardo K. Shikida < > > > > > > [email protected]> > > > > > > > > wrote: > > > > > > > > > > > > > > > > > thx! > > > > > > > > > > > > > > > > > > [] > > > > > > > > > > > > > > > > > > Leo > > > > > > > > > > > > > > > > > > On Tue, Apr 14, 2015 at 6:03 PM, Romain Manni-Bucau < > > > > > > > > [email protected] > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > >> using openejb-jar.xml you can wire a container to some > beans > > > > only. > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> Romain Manni-Bucau > > > > > > > > >> @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > > > > > > >> <http://rmannibucau.wordpress.com> | Github < > > > > > > > > >> https://github.com/rmannibucau> | > > > > > > > > >> LinkedIn <https://www.linkedin.com/in/rmannibucau> | > > > Tomitriber > > > > > > > > >> <http://www.tomitribe.com> > > > > > > > > >> > > > > > > > > >> 2015-04-14 22:59 GMT+02:00 Leonardo K. Shikida < > > > > [email protected] > > > > > >: > > > > > > > > >> > > > > > > > > >> > yeah, I think this will be the way to go > > > > > > > > >> > > > > > > > > > >> > since I can configure max/min instances for stateless ( > > > > > > > > >> > http://tomee.apache.org/statelesscontainer-config.html) > I > > > > > think I > > > > > > > can > > > > > > > > >> just > > > > > > > > >> > create a pool of stateless instances to work as MDBs > that > > > can > > > > > deal > > > > > > > > with > > > > > > > > >> > timeout :-) > > > > > > > > >> > > > > > > > > > >> > is there any way to configure a container just for these > > > > specfic > > > > > > > > >> stateless > > > > > > > > >> > EJBs (so some other configuration can be used for > > stateless > > > by > > > > > > > > default)? > > > > > > > > >> > > > > > > > > > >> > [] > > > > > > > > >> > > > > > > > > > >> > Leo > > > > > > > > >> > > > > > > > > > >> > On Tue, Apr 14, 2015 at 5:46 PM, Romain Manni-Bucau < > > > > > > > > >> [email protected] > > > > > > > > >> > > > > > > > > > > >> > wrote: > > > > > > > > >> > > > > > > > > > >> > > so just handle transactions yourself > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > > >> > > Romain Manni-Bucau > > > > > > > > >> > > @rmannibucau <https://twitter.com/rmannibucau> | > Blog > > > > > > > > >> > > <http://rmannibucau.wordpress.com> | Github < > > > > > > > > >> > > https://github.com/rmannibucau> | > > > > > > > > >> > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | > > > > > Tomitriber > > > > > > > > >> > > <http://www.tomitribe.com> > > > > > > > > >> > > > > > > > > > > >> > > 2015-04-14 22:42 GMT+02:00 Lars-Fredrik Smedberg < > > > > > > > > [email protected] > > > > > > > > >> >: > > > > > > > > >> > > > > > > > > > > >> > > > Another option is to look at the redelivered > > > > > > property/redelivery > > > > > > > > >> count > > > > > > > > >> > > and > > > > > > > > >> > > > take action (write to db?) in case of redelivery.... > > > > > requires > > > > > > > you > > > > > > > > >> to > > > > > > > > >> > > set a > > > > > > > > >> > > > redelivery policy / number of retries etc > > > > > > > > >> > > > > > > > > > > > >> > > > /LF > > > > > > > > >> > > > On Apr 14, 2015 10:39 PM, "Leonardo K. Shikida" < > > > > > > > > [email protected]> > > > > > > > > >> > > wrote: > > > > > > > > >> > > > > > > > > > > > >> > > > > Yup, but if the MDB timeout, I need to set > something > > > in > > > > > the > > > > > > > DB, > > > > > > > > >> > that's > > > > > > > > >> > > > why > > > > > > > > >> > > > > I need to treat the timeout. > > > > > > > > >> > > > > > > > > > > > > >> > > > > If the job to be executed timeout, then it will > > > probably > > > > > > > timeout > > > > > > > > >> for > > > > > > > > >> > > any > > > > > > > > >> > > > > retry, because it's caused by a poorly chosen > > > parameter, > > > > > so > > > > > > > > >> retries > > > > > > > > >> > are > > > > > > > > >> > > > not > > > > > > > > >> > > > > important here (although increasing timeouts on > each > > > > retry > > > > > > > could > > > > > > > > >> be > > > > > > > > >> > an > > > > > > > > >> > > > > interesting option) > > > > > > > > >> > > > > > > > > > > > > >> > > > > [] > > > > > > > > >> > > > > > > > > > > > > >> > > > > Leo > > > > > > > > >> > > > > > > > > > > > > >> > > > > On Tue, Apr 14, 2015 at 5:27 PM, Romain > Manni-Bucau > > < > > > > > > > > >> > > > [email protected] > > > > > > > > >> > > > > > > > > > > > > > >> > > > > wrote: > > > > > > > > >> > > > > > > > > > > > > >> > > > > > Hmm, with MDBs you have retries since they are > > > > > > > transactional. > > > > > > > > >> you > > > > > > > > >> > can > > > > > > > > >> > > > > even > > > > > > > > >> > > > > > configure the redelivery policy with an > > exponential > > > > > > backoff > > > > > > > > and > > > > > > > > >> so > > > > > > > > >> > on > > > > > > > > >> > > > if > > > > > > > > >> > > > > > really needed > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > Romain Manni-Bucau > > > > > > > > >> > > > > > @rmannibucau <https://twitter.com/rmannibucau> > | > > > > Blog > > > > > > > > >> > > > > > <http://rmannibucau.wordpress.com> | Github < > > > > > > > > >> > > > > > https://github.com/rmannibucau> | > > > > > > > > >> > > > > > LinkedIn < > https://www.linkedin.com/in/rmannibucau > > > > > > | > > > > > > > > Tomitriber > > > > > > > > >> > > > > > <http://www.tomitribe.com> > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > 2015-04-14 22:13 GMT+02:00 Leonardo K. Shikida < > > > > > > > > >> [email protected] > > > > > > > > >> > >: > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > Well, what I need is a pool of workers to > listen > > > to > > > > a > > > > > > > queue > > > > > > > > >> and > > > > > > > > >> > > > process > > > > > > > > >> > > > > > > messages while they come, but I also need to > > > > properly > > > > > > > treat > > > > > > > > >> them > > > > > > > > >> > > when > > > > > > > > >> > > > > the > > > > > > > > >> > > > > > > JMS transaction times out. > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > So I guess I can't use a MDB here right? > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > What would be a good approach in this > situation? > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > [] > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > Leo > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > On Tue, Apr 14, 2015 at 4:53 PM, Romain > > > Manni-Bucau > > > > < > > > > > > > > >> > > > > > [email protected] > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > wrote: > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > if you want to control and be able to catch > it > > > you > > > > > > need > > > > > > > to > > > > > > > > >> > handle > > > > > > > > >> > > > > > > yourself > > > > > > > > >> > > > > > > > the transaction otherwise if it takes more > > then > > > > > you'll > > > > > > > > get a > > > > > > > > >> > > > rollback > > > > > > > > >> > > > > > > and a > > > > > > > > >> > > > > > > > (surely wrapped) RollbackException > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > Romain Manni-Bucau > > > > > > > > >> > > > > > > > @rmannibucau < > https://twitter.com/rmannibucau > > > > > > | > > > > > > Blog > > > > > > > > >> > > > > > > > <http://rmannibucau.wordpress.com> | > Github < > > > > > > > > >> > > > > > > > https://github.com/rmannibucau> | > > > > > > > > >> > > > > > > > LinkedIn < > > > https://www.linkedin.com/in/rmannibucau > > > > > > > > > > | > > > > > > > > >> > Tomitriber > > > > > > > > >> > > > > > > > <http://www.tomitribe.com> > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > 2015-04-14 21:45 GMT+02:00 Leonardo K. > > Shikida < > > > > > > > > >> > > [email protected] > > > > > > > > >> > > > >: > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > just checking > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > I just add > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > @Resource > > > > > > > > >> > > > > > > > > private TransactionManager tx; > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > and in the MDB initialization I set some > > > timeout > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > @PostConstruct > > > > > > > > >> > > > > > > > > public void initialize() { > > > > > > > > >> > > > > > > > > try { > > > > > > > > >> > > > > > > > > tx.setTransactionTimeout(3); > > > > > > > > >> > > > > > > > > } catch (SystemException e) { > > > > > > > > >> > > > > > > > > e.printStackTrace(); > > > > > > > > >> > > > > > > > > } > > > > > > > > >> > > > > > > > > } > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > and when my onMessage() executes, if it > > takes > > > > more > > > > > > > than > > > > > > > > 3 > > > > > > > > >> > > seconds > > > > > > > > >> > > > > to > > > > > > > > >> > > > > > > > > complete, it throws and exception? > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > and if so, how do I catch it? (or I > don't?) > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > [] > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > Leo > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > On Tue, Apr 14, 2015 at 4:20 PM, Leonardo > K. > > > > > > Shikida < > > > > > > > > >> > > > > > > [email protected]> > > > > > > > > >> > > > > > > > > wrote: > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > thx! > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > [] > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > Leo > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > On Tue, Apr 14, 2015 at 4:16 PM, Romain > > > > > > Manni-Bucau > > > > > > > < > > > > > > > > >> > > > > > > > > [email protected] > > > > > > > > >> > > > > > > > > > > wrote: > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > >> Get the Transactionmanager injected > > > > (@Resource) > > > > > > and > > > > > > > > >> call > > > > > > > > >> > > > > > > > > >> setTransactionTimeout(seconds) > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> Romain Manni-Bucau > > > > > > > > >> > > > > > > > > >> @rmannibucau < > > > > https://twitter.com/rmannibucau> > > > > > | > > > > > > > > Blog > > > > > > > > >> > > > > > > > > >> <http://rmannibucau.wordpress.com> | > > > Github > > > > < > > > > > > > > >> > > > > > > > > >> https://github.com/rmannibucau> | > > > > > > > > >> > > > > > > > > >> LinkedIn < > > > > > > https://www.linkedin.com/in/rmannibucau> > > > > > > > | > > > > > > > > >> > > > Tomitriber > > > > > > > > >> > > > > > > > > >> <http://www.tomitribe.com> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> 2015-04-14 19:38 GMT+02:00 Leonardo K. > > > > Shikida > > > > > < > > > > > > > > >> > > > > [email protected] > > > > > > > > >> > > > > > >: > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > Hi > > > > > > > > >> > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > How do I increase the MDB onMessage() > > > > > > transaction > > > > > > > > >> > timeout? > > > > > > > > >> > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > [] > > > > > > > > >> > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > Leo > > > > > > > > >> > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
