Sounds way more straight forward. But is probably a bigger change, isn't? 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 >>>> >>> >>
