You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openwebbeans.apache.org by Martin Koci <ma...@gmail.com> on 2011/07/23 16:49:09 UTC

JavassistProxyFactory and Bean.setHandler method

Hi,
 
if managed bean has own method setHandler ->
javassist.bytecode.DuplicateMemberException

this is probably limitation of javassist.util.proxy.ProxyObject which
has exactly this method. Unproxyable object with javassist = CDI spec
5.4.1. Unproxyable bean types + " has method named setHandler"

Regards,

Kočičák

javax.enterprise.inject.CreationException:
javassist.bytecode.DuplicateMemberException: duplicate method:
getHandler in cz.kociciak.test.Bean_$$_javassist_149
	at org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:200)
	at org.apache.webbeans.context.creational.BeanInstanceBag.create(BeanInstanceBag.java:80)
	at org.apache.webbeans.context.AbstractContext.getInstance(AbstractContext.java:225)
	at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:190)
	at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:135)
	at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:95)
	at cz.kociciak.test.Bean_$$_javassist_147.preRenderView(Bean_$$_javassist_147.java)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at de.odysseus.el.tree.impl.ast.AstProperty.invoke(AstProperty.java:198)
	at de.odysseus.el.tree.impl.ast.AstEval.invoke(AstEval.java:71)
	at de.odysseus.el.TreeMethodExpression.invoke(TreeMethodExpression.java:132)
	at org.apache.myfaces.view.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:83)
	at org.apache.myfaces.view.facelets.tag.jsf.core.EventHandler$Listener.processEvent(EventHandler.java:243)
	at javax.faces.component.UIComponent$EventListenerWrapper.processEvent(UIComponent.java:1324)
	at javax.faces.event.SystemEvent.processListener(SystemEvent.java:43)
	at org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2117)
	at org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:537)
	at org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:567)
	at javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:335)
	at javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:335)
	at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:77)
	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.BlockingFilter.doFilter(BlockingFilter.java:72)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at cz.aura.shared.web.httpfilters.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:102)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:662)



Re: JavassistProxyFactory and Bean.setHandler method

Posted by Martin Koci <ma...@gmail.com>.
Hi,

Mark Struberg píše v So 23. 07. 2011 v 16:24 +0100:
> Hi Kocicak!
> 
> You are catching lots of issues lately - txs 4 doing all the reporting!
> 
> Do you get this also for setHandler(String) ?
> The method from ProxyObject has a MethodHandler param. But of course the 
> ProxyObject#getHandler() is really a problem!

ahh, my bad, expcetion clearly says "getHandler" not "setHandler". Not
problem with setter here, only with getter, because method cannot differ
only in return type.

> 
> I'd say this is an issue we should report to the javassist team. It needs to get fixed over there!
> 
> Easiest would be to just rename those methods to setIntJavassistMethodHandler(MethodHandler) resp getIntJavassistMethodHAndler();
> 
> Are you going to report it or should I do it?

Please do so, you have  better knowledge of context.

Kočičák

> txs and LieGrue,
> strub 
> 
> --- On Sat, 7/23/11, Martin Koci <ma...@gmail.com> wrote:
> 
> > From: Martin Koci <ma...@gmail.com>
> > Subject: JavassistProxyFactory and Bean.setHandler method
> > To: dev@openwebbeans.apache.org
> > Date: Saturday, July 23, 2011, 2:49 PM
> > Hi,
> >  
> > if managed bean has own method setHandler ->
> > javassist.bytecode.DuplicateMemberException
> > 
> > this is probably limitation of
> > javassist.util.proxy.ProxyObject which
> > has exactly this method. Unproxyable object with javassist
> > = CDI spec
> > 5.4.1. Unproxyable bean types + " has method named
> > setHandler"
> > 
> > Regards,
> > 
> > Kočičák
> > 
> > javax.enterprise.inject.CreationException:
> > javassist.bytecode.DuplicateMemberException: duplicate
> > method:
> > getHandler in cz.kociciak.test.Bean_$$_javassist_149
> >     at
> > org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:200)
> >     at
> > org.apache.webbeans.context.creational.BeanInstanceBag.create(BeanInstanceBag.java:80)
> >     at
> > org.apache.webbeans.context.AbstractContext.getInstance(AbstractContext.java:225)
> >     at
> > org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:190)
> >     at
> > org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:135)
> >     at
> > org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:95)
> >     at
> > cz.kociciak.test.Bean_$$_javassist_147.preRenderView(Bean_$$_javassist_147.java)
> >     at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >     at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >     at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >     at
> > java.lang.reflect.Method.invoke(Method.java:597)
> >     at
> > de.odysseus.el.tree.impl.ast.AstProperty.invoke(AstProperty.java:198)
> >     at
> > de.odysseus.el.tree.impl.ast.AstEval.invoke(AstEval.java:71)
> >     at
> > de.odysseus.el.TreeMethodExpression.invoke(TreeMethodExpression.java:132)
> >     at
> > org.apache.myfaces.view.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:83)
> >     at
> > org.apache.myfaces.view.facelets.tag.jsf.core.EventHandler$Listener.processEvent(EventHandler.java:243)
> >     at
> > javax.faces.component.UIComponent$EventListenerWrapper.processEvent(UIComponent.java:1324)
> >     at
> > javax.faces.event.SystemEvent.processListener(SystemEvent.java:43)
> >     at
> > org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2117)
> >     at
> > org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:537)
> >     at
> > org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:567)
> >     at
> > javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:335)
> >     at
> > javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:335)
> >     at
> > org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:77)
> >     at
> > org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
> >     at
> > javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> >     at
> > org.apache.myfaces.webapp.filter.BlockingFilter.doFilter(BlockingFilter.java:72)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> >     at
> > cz.aura.shared.web.httpfilters.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:102)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> >     at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> >     at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> >     at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> >     at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> >     at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> >     at
> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> >     at
> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
> >     at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
> >     at
> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
> >     at
> > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> >     at
> > java.lang.Thread.run(Thread.java:662)
> > 
> > 
> > 
> 



Re: JavassistProxyFactory and Bean.setHandler method

Posted by Mark Struberg <st...@yahoo.de>.
Hi Kocicak!

You are catching lots of issues lately - txs 4 doing all the reporting!

Do you get this also for setHandler(String) ?
The method from ProxyObject has a MethodHandler param. But of course the 
ProxyObject#getHandler() is really a problem!

I'd say this is an issue we should report to the javassist team. It needs to get fixed over there!

Easiest would be to just rename those methods to setIntJavassistMethodHandler(MethodHandler) resp getIntJavassistMethodHAndler();

Are you going to report it or should I do it?

txs and LieGrue,
strub 

--- On Sat, 7/23/11, Martin Koci <ma...@gmail.com> wrote:

> From: Martin Koci <ma...@gmail.com>
> Subject: JavassistProxyFactory and Bean.setHandler method
> To: dev@openwebbeans.apache.org
> Date: Saturday, July 23, 2011, 2:49 PM
> Hi,
>  
> if managed bean has own method setHandler ->
> javassist.bytecode.DuplicateMemberException
> 
> this is probably limitation of
> javassist.util.proxy.ProxyObject which
> has exactly this method. Unproxyable object with javassist
> = CDI spec
> 5.4.1. Unproxyable bean types + " has method named
> setHandler"
> 
> Regards,
> 
> Kočičák
> 
> javax.enterprise.inject.CreationException:
> javassist.bytecode.DuplicateMemberException: duplicate
> method:
> getHandler in cz.kociciak.test.Bean_$$_javassist_149
>     at
> org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:200)
>     at
> org.apache.webbeans.context.creational.BeanInstanceBag.create(BeanInstanceBag.java:80)
>     at
> org.apache.webbeans.context.AbstractContext.getInstance(AbstractContext.java:225)
>     at
> org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:190)
>     at
> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:135)
>     at
> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:95)
>     at
> cz.kociciak.test.Bean_$$_javassist_147.preRenderView(Bean_$$_javassist_147.java)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at
> java.lang.reflect.Method.invoke(Method.java:597)
>     at
> de.odysseus.el.tree.impl.ast.AstProperty.invoke(AstProperty.java:198)
>     at
> de.odysseus.el.tree.impl.ast.AstEval.invoke(AstEval.java:71)
>     at
> de.odysseus.el.TreeMethodExpression.invoke(TreeMethodExpression.java:132)
>     at
> org.apache.myfaces.view.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:83)
>     at
> org.apache.myfaces.view.facelets.tag.jsf.core.EventHandler$Listener.processEvent(EventHandler.java:243)
>     at
> javax.faces.component.UIComponent$EventListenerWrapper.processEvent(UIComponent.java:1324)
>     at
> javax.faces.event.SystemEvent.processListener(SystemEvent.java:43)
>     at
> org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2117)
>     at
> org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:537)
>     at
> org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:567)
>     at
> javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:335)
>     at
> javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:335)
>     at
> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:77)
>     at
> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
>     at
> javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.apache.myfaces.webapp.filter.BlockingFilter.doFilter(BlockingFilter.java:72)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> cz.aura.shared.web.httpfilters.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:102)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>     at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>     at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>     at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>     at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>     at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
>     at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
>     at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
>     at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
>     at
> java.lang.Thread.run(Thread.java:662)
> 
> 
>