too bad you catch this after all the work is done already and I just wait for all mirrors to pick up the owb-1.1.5 release to write the announcement ;)
LieGrue, strub >________________________________ > From: Romain Manni-Bucau <rmannibu...@gmail.com> >To: dev@openwebbeans.apache.org; Mark Struberg <strub...@yahoo.de> >Sent: Wednesday, August 15, 2012 6:33 PM >Subject: Re: OWB and finalize filtering > > >well in openejb we use a newer version (to be compatible with some other lib) >so we have the issue, we can still fork all handlers but... > >- Romain > > > >2012/8/15 Mark Struberg <strub...@yahoo.de> > >Hmm, maybe that's the reason why I saw mem leaks after updating to a newer >javassist version? >> >>For now I think it's good for just remaining with the old javassist version >>and get rid of javassist in the next OWB release completely ;) >> >>LieGrue, >>strub >> >> >> >> >>----- Original Message ----- >>> From: Romain Manni-Bucau <rmannibu...@gmail.com> >>> To: dev@openwebbeans.apache.org >>> Cc: >>> Sent: Wednesday, August 15, 2012 4:31 PM >>> Subject: OWB and finalize filtering >>> >>> Hi, >>> >>> with javassist it is important to filter finalize method (it is a jira if i >>> remember) however i don't get the way we do it: >>> >>> if (method.getName() == FINALIZE && // Method.getName() is >>> defined to return .intern() in the VM spec. >>> method.getParameterTypes().length == 0 && >>> method.getReturnType() == Void.TYPE) >>> { >>> // we should NOT invoke the bean's finalize() from proxied >>> // finalize() method since JVM will invoke it directly. >>> // OWB-366 >>> return null; >>> } >>> >>> using javassist 3.15 i got weird stuff. It looked finalize() was redirected >>> to _d2finalize (not sure why). >>> >>> i updated locally OWB to use on the ProxyFactory (in JavassistProxyFactory): >>> >>> fact.setFilter(new MethodFilter() { // TODO if relevant: create >>> FinalizerMethodFilter singleton + intern usage for method name >>> public boolean isHandled(Method method) >>> { >>> return !(method.getName().equals("finalize") >>> && >>> method.getParameterTypes().length == 0 && >>> method.getReturnType() == Void.TYPE); >>> } >>> }); >>> >>> >>> and i didn't see the errors anymore :) >>> >>> now the question ;): any reason we are not filtering this way? >>> >>> btw i could dump bytecode before/after if needed >>> >>> - Romain >>> >> > > >