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

Reply via email to