Re: [aspectwerkz-user] help with aspect not weaved

Alexandre Vasseur <[email protected]> Thu, 23 Jun 2005 18:01:51 +0200
Newsgroups gmane.comp.java.aspectwerkz.user
Message-ID <[email protected]>
I suspect the class cast is about the perClass aspect.
Can you try with a singleton (just remove deployment-model=..)
Which AW version is that ?

On 6/23/05, [email protected] <[email protected]> wrote:
> Hi,
> 
> Perhaps I will need a little bit of help with this. I'm getting the following exception:
> 
> java.lang.ClassCastException    at net.appl.jrisk.security.JRiskSecurity_1__2130939767_1948679980___AW_JoinPoint.invoke(Unknown Source)         at net.appl.jrisk.security.JRiskSecurity.login(JRiskSecurity.java)      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 
> The advised method's signature is:
> 
> public static SecurityContext JRiskSecurity.login(String, String) throws SecurityException
> { ... }
> 
> And the advice looks like this:
> 
> public Object decorate(JoinPoint joinPoint) throws Throwable
> {
>    return null;
> }
> 
> I have only one aspect applied and only to that method:
> 
> <aspectwerkz>
>   <system id="testenv">
>     <pointcut name="helper" expression="execution(* net.appl.jrisk.security.JRiskSecurity.login(String,String))"/>
>     <aspect class="test.com.ubs.firc.support.aspect.GenericMethodDecorator" deployment-model="perClass">
>       <advice name="decorate" type="around" bind-to="helper"/>
>     </aspect>
>   </system>
> </aspectwerkz>
> 
> It looks like JoinPoint.proceed() is called after the return from my advice. I hope the call is made in order to handle other potential advices and not calling the real method. Anyway, why would it throw a ClassCastException?
> 
> Thanks again,
> Boris
> 
> |-----Original Message-----
> |From: Alexandre Vasseur [mailto:[email protected]]
> |Sent: Thursday, June 23, 2005 10:33 AM
> |To: Iordanov, Borislav
> |Cc: [email protected]
> |Subject: Re: [aspectwerkz-user] help with aspect not weaved
> |
> |
> |Great !
> |I actually got screwed my self for some ours by this XML one so it is
> |fixed in the CVS hence will be checked in the next versions.
> |Alex
> |
> |On 6/23/05, [email protected]
> |<[email protected]> wrote:
> |> Hi,
> |>
> |> Tracing helped, but it took a while :( The error in that
> |trace that led me to the source cause of the problem was a
> |"Class not found" thrown from org.objectweb.asm.ClassReader.
> |Because I get so many of those and, as you explained at some
> |point, they can be safely ignored, I didn't pay much attention.
> |>
> |> However, it turned out it wasn't able to load the aspect
> |class itself simply because it wasn't specified in the XML.  I had:
> |>
> |> <aspect
> |name="test.com.ubs.firc.support.aspect.GenericMethodDecorator"
> |>      deployment-model="perInstance">
> |>
> |> instead of
> |>
> |> <aspect
> |class="test.com.ubs.firc.support.aspect.GenericMethodDecorator"
> |>    deployment-model="perInstance">
> |>
> |> as you can see below ;)
> |>
> |> Anyway, very stupid mistake, but I had to go from line to
> |line in the callstack of the exception to figure it out. I
> |would suggest to add more explicit and user-friendly config
> |file validation for the next release (like "class attribute is
> |mandatory for aspect tag" ;).
> |>
> |> I have some more problems now, but I'll see if I can sort
> |them out by myself first...
> |>
> |> Thanks a lot!
> |> Boris
> |>
> |> |-----Original Message-----
> |> |From: Alexandre Vasseur [mailto:[email protected]]
> |> |Sent: Thursday, June 23, 2005 3:38 AM
> |> |To: [email protected]
> |> |Subject: Re: [aspectwerkz-user] help with aspect not weaved
> |> |
> |> |
> |> |HI
> |> |The following may help (I assume you are using 2.0)
> |> |
> |> |Use -Daspectwerkz.transform.details=true
> |> |to see if the pointcut captures what it should.
> |> |
> |> |Use -Daspectwerkz.transform.verbose=true (or -verbose:class) to see
> |> |when the ejbPrioEJBHelper class gets weaved and loaded (I
> |am assuming
> |> |you are using load time weaving).
> |> |
> |> |I don' t understand what you mean by
> |> |"all Aspects.aspectOf methods throw an exception saying that
> |> |no aspect is found"
> |> |Could you provide more details ?
> |> |
> |> |Also I see you are using "perInstance" with a call pointcut. I would
> |> |say this is a flaw that we unfortunately provide. You
> |should consider
> |> |using a perTarget(...some pointcut....) where some pointcut captures
> |> |the creation of the ejbPrionEJBHelper instances.
> |> |perInstance is likely to be perInstance from the caller
> |point of view
> |> |and you seem to wish the callee in this case.
> |> |
> |> |Alex
> |> |
> |> |
> |> |On 6/22/05, [email protected]
> |> |<[email protected]> wrote:
> |> |> Hi,
> |> |>
> |> |> I have the following aspect:
> |> |>
> |> |>     <aspect
> |> |name="test.com.ubs.firc.support.aspect.GenericMethodDecorator"
> |> |deployment-model="perInstance">
> |> |>       <pointcut name="helper" expression="call(*
> |> |com.ubs.firc.credit..ejbPrionEJBHelper.*(..))"/>
> |> |>       <advice name="decorate" type="around" bind-to="helper"/>
> |> |>     </aspect>
> |> |>
> |> |> in my aop.xml. Basically, I want to put an around advice
> |> |around all methods of the class 'ejbPrionEJBHelper'. The
> |> |aspect is not applied as all Aspects.aspectOf methods throw an
> |> |exception saying that no aspect is found. I put the verbose
> |> |mode to trace all AspectWerkz activity, and I see things like
> |> |this in the console:
> |> |>
> |> |>
> |> |sun.misc.Launcher$AppClassLoader@1813fac@25247660:com.ubs.firc.
> |> |credit.jrisk2003_2.external.valuation.ExternalValuationDebug[main]
> |> |>
> |> |sun.misc.Launcher$AppClassLoader@1813fac@25247660:org.gjt.sp.je
> |> |dit.OperatingSystem[main]
> |> |>
> |> |sun.misc.Launcher$AppClassLoader@1813fac@25247660:org.gjt.sp.je
> |> |dit.MiscUtilities[main]
> |> |>
> |> |sun.misc.Launcher$AppClassLoader@1813fac@25247660:org.gjt.sp.je
> |> |dit.io.VFSManager[main]
> |> |>
> |> |sun.misc.Launcher$AppClassLoader@1813fac@25247660:org.gjt.sp.je
> |> |dit.JARClassLoader[main]
> |> |>
> |> |sun.misc.Launcher$AppClassLoader@1813fac@25247660:org.gjt.sp.je
> |> |dit.io.VFS[main]
> |> |>
> |> |sun.misc.Launcher$AppClassLoader@1813fac@25247660:org.gjt.sp.je
> |> |dit.io.FileVFS[main]
> |> |>
> |> |> etc...
> |> |>
> |> |> However, there's no trace of loading of my class of interest
> |> |'ejbPrionEJBHelper'. Does that mean that AspectWerkz simply
> |> |never intersepts the loading of that class (I'm sure it
> |> |eventually gets loaded because I instantiated it)?  I also
> |> |tried putting the full package name instead of the '..'
> |> |construct. This is not running in an EJB container, nevermind
> |> |the name of ejbPrionEJBHelper - it's a simple helper class
> |> |that doesn't use J2EE API.
> |> |>
> |> |> Any idea how I could debug this problem?
> |> |>
> |> |> Thanks,
> |> |> Boris
> |> |>
> |> |> Visit our website at http://www.ubs.com
> |> |>
> |> |> This message contains confidential information and is
> |intended only
> |> |> for the individual named.  If you are not the named addressee you
> |> |> should not disseminate, distribute or copy this e-mail.  Please
> |> |> notify the sender immediately by e-mail if you have received this
> |> |> e-mail by mistake and delete this e-mail from your system.
> |> |>
> |> |> E-mail transmission cannot be guaranteed to be secure or
> |error-free
> |> |> as information could be intercepted, corrupted, lost, destroyed,
> |> |> arrive late or incomplete, or contain viruses.  The
> |sender therefore
> |> |> does not accept liability for any errors or omissions in
> |the contents
> |> |> of this message which arise as a result of e-mail
> |transmission.  If
> |> |> verification is required please request a hard-copy version.  This
> |> |> message is provided for informational purposes and should not be
> |> |> construed as a solicitation or offer to buy or sell any
> |securities or
> |> |> related financial instruments.
> |> |>
> |> |>
> |> |
> |>
> |> Visit our website at http://www.ubs.com
> |>
> |> This message contains confidential information and is intended only
> |> for the individual named.  If you are not the named addressee you
> |> should not disseminate, distribute or copy this e-mail.  Please
> |> notify the sender immediately by e-mail if you have received this
> |> e-mail by mistake and delete this e-mail from your system.
> |>
> |> E-mail transmission cannot be guaranteed to be secure or error-free
> |> as information could be intercepted, corrupted, lost, destroyed,
> |> arrive late or incomplete, or contain viruses.  The sender therefore
> |> does not accept liability for any errors or omissions in the contents
> |> of this message which arise as a result of e-mail transmission.  If
> |> verification is required please request a hard-copy version.  This
> |> message is provided for informational purposes and should not be
> |> construed as a solicitation or offer to buy or sell any securities or
> |> related financial instruments.
> |>
> |>
> |
> 
> Visit our website at http://www.ubs.com
> 
> This message contains confidential information and is intended only
> for the individual named.  If you are not the named addressee you
> should not disseminate, distribute or copy this e-mail.  Please
> notify the sender immediately by e-mail if you have received this
> e-mail by mistake and delete this e-mail from your system.
> 
> E-mail transmission cannot be guaranteed to be secure or error-free
> as information could be intercepted, corrupted, lost, destroyed,
> arrive late or incomplete, or contain viruses.  The sender therefore
> does not accept liability for any errors or omissions in the contents
> of this message which arise as a result of e-mail transmission.  If
> verification is required please request a hard-copy version.  This
> message is provided for informational purposes and should not be
> construed as a solicitation or offer to buy or sell any securities or
> related financial instruments.
> 
>