Here's something that will solve your problem, use AspectJ.
On Tue, May 11, 2010 at 2:51 AM, Mark Struberg <strub...@yahoo.de> wrote: > Oki let me rephrase: I'd like to know if the spec (or Gavin) intends to > define this behaviour or if it is 'intentionally left undefined'. > > LieGrue, > strub > > --- On Tue, 5/11/10, Gurkan Erdogdu <gurkanerdo...@yahoo.com> wrote: > >> From: Gurkan Erdogdu <gurkanerdo...@yahoo.com> >> Subject: Re: Need to switch to subclassing? >> To: dev@openwebbeans.apache.org >> Date: Tuesday, May 11, 2010, 6:47 AM >> >>>>Such things should >> work the same in Weld, CanDI, OWB and all other >> JSR-299 containers >> Mmmm, I am not the same. Java EE specifications do not >> explicitly define some behaviors. Containers could implement >> those areas with their own way but they are all required to >> pass the "Java EE TCK". Therefore, one behavior in one >> container may be differently functioned from other >> containers. This is mostly observed on container specific >> security managements. >> >> This is the main motivation behind the TCKs. >> >> >> Thanks; >> >> --Gurkan >> >> >> ________________________________ >> From: Mark Struberg <strub...@yahoo.de> >> To: dev@openwebbeans.apache.org >> Sent: Tue, May 11, 2010 9:22:11 AM >> Subject: Re: Need to switch to subclassing? >> >> I could not find this explicitly stated in the EJB spec >> neither - so maybe OpenEJB needs a fix too? :D >> >> Nah, just like to know what the 299 spec intends. Such >> things should work the same in Weld, CanDI, OWB and all >> other JSR-299 containers. I bet there are only very few >> developers (users!) out there which would find a bug caused >> by such a behaviour. >> >> So my main concern is not the behaviour itself, but that >> it's currently not really well defined how it should >> behave. >> >> I'll post this also on the weld list to get a feeling what >> they expect it to do. >> >> LieGrue, >> strub >> >> --- On Tue, 5/11/10, Gurkan Erdogdu <gurkanerdo...@yahoo.com> >> wrote: >> >> > From: Gurkan Erdogdu <gurkanerdo...@yahoo.com> >> > Subject: Re: Need to switch to subclassing? >> > To: dev@openwebbeans.apache.org >> > Date: Tuesday, May 11, 2010, 6:11 AM >> > This will also not work on EJB >> > containers. For example, in EJB Hello >> > >> > @Interceptors(MyInterceptor.class) >> > public Hello implemenet IHello{ >> > >> > public void method1(){ >> > >> method2(); >> > } >> > >> > public void method2(){ >> > >> ....... >> > } >> > } >> > >> > @Local >> > public interface IHello{ >> > public void method1(); >> > public void method2(); >> > } >> > >> > main(){ >> > IHello proxy = getting from >> intitial context >> > proxy.method1(); >> > } >> > >> > >> > Calling method2() from method1() does not trigger >> > interception. Interceptor is called ones when client >> calls >> > method1() on bean proxy. You could try it on OpenEJB >> for >> > example >> > >> > Thanks; >> > >> > Gurkan >> > >> > >> > >> > ________________________________ >> > From: Mark Struberg <strub...@yahoo.de> >> > To: dev@openwebbeans.apache.org >> > Sent: Tue, May 11, 2010 8:30:15 AM >> > Subject: Need to switch to subclassing? >> > >> > Hi! >> > >> > There is a subtle difference between implementing >> > interceptors via proxy or via subclasses. >> > >> > I have the following service which imports data from >> a >> > legacy system into my db. Since commits are very >> performance >> > intense, they should get imported in packages of 100. >> So >> > I'll get 100 'Employees' from my legacy system and >> then call >> > a @Transactional method to store them in my own >> database. >> > >> > public void ImportService() { >> > public void importEmployee() { >> > List<LegacyEmployee> >> les; >> > while ((les = >> > getNext100EmployeesFromLegacy()) != nul) { >> > >> importLegacyEmployees(le); >> > } >> > } >> > >> > �...@transactional >> > protected >> > importLegacyEmployees(List<LegacyEmployee> les) >> { >> > for (LegacyEmployee le: les) >> { >> > >> employeeService.store(le); >> > } >> > } >> > } >> > >> > This would actually _not_ when using proxies for the >> > interceptor handling, because calling a method on an >> own >> > class doesn't invoke the proxyhandler. >> > >> > So is this expected to work? >> > >> > Sure, I could easily move the importLegacyEmployees() >> to an >> > own service, but that would infringe classic OOP >> heavily >> > imo. >> > >> > Gurkan, what does the spec say here, I did find >> nothing. >> > The old spec explicitly mentioned that we need to use >> > subclassing, but I cannot find this anymore. >> > >> > LieGrue, >> > strub >> > >> > >> >> > > > >