Sorry for the delay.... I've had a go at updating these 2 PRs to capture the PostConstruct/PreDestroy methods on ResourceInfo. Any feedback is most welcome.
https://github.com/apache/tomee/pull/91 https://github.com/apache/tomee/pull/92 Thanks for all the feedback so far. Jon On Thu, Jul 13, 2017 at 4:34 PM, Jonathan Gallimore < jonathan.gallim...@gmail.com> wrote: > 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 <rmannibu...@gmail.com > > 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 <strub...@yahoo.de.invalid>: >> >> > 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 < >> rmannibu...@gmail.com >> > >: >> > > >> > > 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 < >> > jonathan.gallim...@gmail.com> >> > > : >> > > >> > >> 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 < >> > >> svetlin.angelov.za...@gmail.com> 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 < >> > >>> jonathan.gallim...@gmail.com> >> > >>> : >> > >>> >> > >>>> 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 >> > >>>> >> > >>> >> > >> >> > >> > >> > >