My initial thought was it sounds like a big change too. Having thought
about it, I do agree with Romain that its probably do-able without too much
hassle on 7.x and 1.7.x. I'll give it a shot.

Jon

On Thu, Jul 13, 2017 at 2:34 PM, Romain Manni-Bucau <[email protected]>
wrote:

> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://blog-rmannibucau.rhcloud.com> | Old Blog
> <http://rmannibucau.wordpress.com> | Github <https://github.com/
> rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
> <https://javaeefactory-rmannibucau.rhcloud.com>
>
> 2017-07-13 15:28 GMT+02:00 Mark Struberg <[email protected]>:
>
> > Sounds way more straight forward. But is probably a bigger change, isn't?
> >
>
> No, would be just a matter of creating a class with a list in it (guess we
> can), add an instance to AppContext (guess we can) and register at deploy
> time resource instances in this list (same time we register the id already)
> and use that to destroy the instances instead of lookups.
>
> Really sounds doable even on 1.x ;)
>
> What can wait tomee 8 is to do it for all instances including resource
> adapters, connectors, etc...
>
>
> > So probably do a clean rewrite in TomEE8?
> >
> > LieGrue,
> > strub
> >
> >
> > > Am 13.07.2017 um 13:14 schrieb Romain Manni-Bucau <
> [email protected]
> > >:
> > >
> > > Hi Jon
> > >
> > > Side note before digging: you can rewrite the test this way (i find it
> > > easier to enter in but surely personal):
> > > https://gist.github.com/rmannibucau/86152958d9c139a45d4d80adbcc2c653
> > >
> > > Now about the issue: if i get it right issue is we lookup the instance
> > and
> > > therefore unwrap the holder with predestroy info. So fix is just about
> > > reading the raw wrapper (we don't have references of references of
> > > references with resource so it is safe) and just destroy the holder.
> > >
> > > Personally I'm very tempted to go away from the JNDI tree for the
> storage
> > > of these metadata and just put them in the AppContext (resources list?)
> > to
> > > avoid to mess up wrappings/unwrapping like we do today and have a
> > straight
> > > implmentation. Then the JNDI interaction is a plain unbind but the app
> > > resource lifecycle management is not relying on jndi by itself (like
> > EJBs).
> > >
> > >
> > > Romain Manni-Bucau
> > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > <https://blog-rmannibucau.rhcloud.com> | Old Blog
> > > <http://rmannibucau.wordpress.com> | Github <https://github.com/
> > rmannibucau> |
> > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
> > > <https://javaeefactory-rmannibucau.rhcloud.com>
> > >
> > > 2017-07-13 12:58 GMT+02:00 Jonathan Gallimore <
> > [email protected]>
> > > :
> > >
> > >> Ooo, interesting. Thanks Svetlin! I'll add a test case for that as
> well
> > and
> > >> adjust.
> > >>
> > >> Cheers!
> > >>
> > >> Jon
> > >>
> > >> On Thu, Jul 13, 2017 at 11:54 AM, Svetlin Zarev <
> > >> [email protected]> wrote:
> > >>
> > >>> Hi,
> > >>>
> > >>> I'm not sure what will happen if the IvmContext is in read-only mode
> > >> (i.e.
> > >>> openejb.forceReadOnlyAppNamingContext=true). You may-need to make
> the
> > >>> context writable before unbinding.
> > >>>
> > >>> Svetlin
> > >>>
> > >>>
> > >>> 2017-07-13 13:46 GMT+03:00 Jonathan Gallimore <
> > >>> [email protected]>
> > >>> :
> > >>>
> > >>>> Hey folks
> > >>>>
> > >>>> I noticed an issue when creating a resource inside an application:
> > >>>>
> > >>>> package org.superbiz;
> > >>>>
> > >>>>
> > >>>> import javax.annotation.PostConstruct;
> > >>>> import javax.annotation.PreDestroy;
> > >>>> import java.util.logging.Logger;
> > >>>>
> > >>>> public class Startup {
> > >>>>
> > >>>>    private final Logger log = Logger.getLogger(Startup.
> > >>> class.getName());
> > >>>>
> > >>>>    @PostConstruct
> > >>>>    public void start() {
> > >>>>        log.info("*** " + getClass().getName() + " started ***");
> > >>>>    }
> > >>>>
> > >>>>    @PreDestroy
> > >>>>    public void stop() {
> > >>>>        log.info("*** " + getClass().getName() + " stopped ***");
> > >>>>    }
> > >>>>
> > >>>> }
> > >>>>
> > >>>> and using WEB-INF/resources.xml to create the resource:
> > >>>>
> > >>>> <resources>
> > >>>>    <Resource id="Startup" class-name="org.superbiz.Startup">
> > >>>>        # any properties you need can go here
> > >>>>    </Resource>
> > >>>> </resources>
> > >>>>
> > >>>> It looks like my @PostConstruct is called ok, but my @PreDestroy is
> > >> not.
> > >>> I
> > >>>> believe this works ok with resources defined in tomee.xml, but I'm
> > >> happy
> > >>> to
> > >>>> check.
> > >>>>
> > >>>> I dug a bit deeper, and wrote a test. This appears to be an issue on
> > >> both
> > >>>> master and 1.7.x. I have created two PRs, and would appreciate any
> > >>>> thoughts.
> > >>>>
> > >>>> https://github.com/apache/tomee/pull/91
> > >>>> https://github.com/apache/tomee/pull/92
> > >>>>
> > >>>> Many thanks
> > >>>>
> > >>>> Jon
> > >>>>
> > >>>
> > >>
> >
> >
>

Reply via email to