Should implementorClass point to interface or to the implementation? In CXF
FAQ "Spring Related" example ( http://cxf.apache.org/faq.html )
implementation is used, while I see Hamlet is referring to the interface as
implementorClass.

Regards,
Stevo.

On Mon, Sep 28, 2009 at 3:38 PM, Daniel Kulp <[email protected]> wrote:

>
> On Mon September 28 2009 9:26:19 am HamletDRC wrote:
> > Can someone confirm that Spring AOP before advice /should/ work with CXF?
> >
> > This is supported, correct?
>
> Yes.   This definitely SHOULD work and we've had several reports of people
> using it, especially for things like spring security and such.   Not sure
> what
> would be going on.
>
> Dan
>
>
> >
> > --
> > Hamlet
> >
> > HamletDRC wrote:
> > > Does anyone have any ideas about why my Spring AOP example doesn't work
> > > with CXF? I've tried quite a few different approaches, this one seems
> the
> > > simplest, but none worked.
> > >
> > > 1. I defined a service interface
> > > 2. I defined a service implementation
> > > 3. I defined a class to provide before method advice
> > > 4. I declared the service in my cxf.xml
> > > 5. I declared the aspect pointcut
> > > 6. I ran tomcat and got this error: java.lang.IllegalStateException:
> > > Post-processor tried to replace bean instance of type
> > > [vue.tcsm.services.SystemParameterService] with (proxy) object of type
> > > [$Proxy42] - not supported for aspect-configured classes!
> > >
> > >
> > > 1. Service interface is simple:
> > > @WebService(serviceName = "SystemParameterService")
> > > public interface ISystemParameterService {
> > >     @WebMethod()
> > >     SystemParameterListDTO
> > > getSystemParameter(@WebParam()SystemParameterListDTO requests);
> > > }
> > >
> > > 2. Implementation is simple:
> > >
> > > @WebService(endpointInterface =
> > > "vue.tcsm.services.ISystemParameterService")
> > > public class SystemParameterService implements ISystemParameterService
> {
> > >   ...
> > > }
> > >
> > > 3. Defined aop Pojo:
> > >
> > > public class ProxyExample {
> > >     public void beforeMethod() {
> > >             System.out.println("Before method call");
> > >     }
> > >
> > > 4. I declared the service in my cxf.xml
> > >
> > >     <jaxws:endpoint id="systemParameter"
> > >
> implementor="#systemParameterService"
> > >
> implementorClass="vue.tcsm.services.ISystemParameterService"
> > >                                     address="/SystemParameterService">
> > >     </jaxws:endpoint>
> > >     <bean id="systemParameterService"
> > > class="vue.tcsm.services.SystemParameterService"/>
> > >     <bean id="profiler" class="vue.tcsm.interceptors.ProxyExample"/>
> > >
> > >
> > > 5. I declared the aspect pointcut
> > >
> > >     <aop:config>
> > >             <aop:aspect ref="profiler">
> > >                     <aop:pointcut id="aopbeforeMethod"
> > >                                               expression="execution(*
> > > vue.tcsm.services.ISystemParameterService.*(..))"/>
> > >                     <aop:before pointcut-ref="aopbeforeMethod"
> > >                                        method="beforeMethod"/>
> > >             </aop:aspect>
> > >     </aop:config>
> > >
> > >
> > > Any ideas on what could be wrong?
> >
> > -----
> > --
> > Hamlet D'Arcy
> >
>
> --
> Daniel Kulp
> [email protected]
> http://www.dankulp.com/blog
>

Reply via email to