[
https://jira.jboss.org/browse/JBSEAM-4727?page=com.atlassian.jira.plugin....
]
Martin Höller updated JBSEAM-4727:
----------------------------------
Attachment: seambug.tar.gz
Attached sample to reproduce the problem.
DuplicateMemberException with Sessionbean components
----------------------------------------------------
Key: JBSEAM-4727
URL:
https://jira.jboss.org/browse/JBSEAM-4727
Project: Seam
Issue Type: Bug
Affects Versions: 2.2.1.CR2
Environment: Tested with Seam 2.2.1.CR2 on Linux with JBoss AS 5.1.0.GA.
Reporter: Martin Höller
Attachments: seambug.tar.gz
Under some circumstances a session bean that is made to a seam component throws
DuplicateMemberExceptions on instantiation.
The stacktrace is as follows:
org.jboss.seam.InstantiationException: Could not instantiate Seam component: myBean
at org.jboss.seam.Component.newInstance(Component.java:2170)
at org.jboss.seam.Component.getInstance(Component.java:2024)
at org.jboss.seam.Component.getInstance(Component.java:1986)
at org.jboss.seam.Component.getInstance(Component.java:1980)
at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55)
at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50)
at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:148)
at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:51)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
at
com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
at org.jboss.el.parser.AstValue.getValue(AstValue.java:63)
at
org.jboss.el.parser.AstDeferredExpression.getValue(AstDeferredExpression.java:26)
at
org.jboss.el.parser.AstCompositeExpression.getValue(AstCompositeExpression.java:31)
at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
at javax.faces.component.UIOutput.getValue(UIOutput.java:184)
at
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
at
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284)
at
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:594)
at
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
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:235)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:905)
at
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:592)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:2036)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.RuntimeException: duplicate method: iterator in
org.javassist.tmp.java.lang.Object_$$_javassist_seam_2
at org.jboss.seam.util.ProxyFactory.createClass3(ProxyFactory.java:355)
at org.jboss.seam.util.ProxyFactory.createClass2(ProxyFactory.java:325)
at org.jboss.seam.util.ProxyFactory.createClass(ProxyFactory.java:284)
at org.jboss.seam.Component.createProxyFactory(Component.java:2452)
at org.jboss.seam.Component.getProxyFactory(Component.java:1516)
at org.jboss.seam.Component.wrap(Component.java:1507)
at org.jboss.seam.Component.instantiateSessionBean(Component.java:1404)
at org.jboss.seam.Component.instantiate(Component.java:1367)
at org.jboss.seam.Component.newInstance(Component.java:2148)
... 61 more
Caused by: javassist.bytecode.DuplicateMemberException: duplicate method: iterator in
org.javassist.tmp.java.lang.Object_$$_javassist_seam_2
at javassist.bytecode.ClassFile.testExistingMethod(ClassFile.java:593)
at javassist.bytecode.ClassFile.addMethod(ClassFile.java:577)
at org.jboss.seam.util.ProxyFactory.override(ProxyFactory.java:672)
at org.jboss.seam.util.ProxyFactory.overrideMethods(ProxyFactory.java:646)
at org.jboss.seam.util.ProxyFactory.make(ProxyFactory.java:566)
at org.jboss.seam.util.ProxyFactory.createClass3(ProxyFactory.java:346)
... 69 more
The circumstances that trigger this bug seam to be as follos:
* A seam component that is a session bean has two implement some interfaces
* Two of the implemented interfaces have to override a method from a common
super-interface while changing the return type
I'll attch a demo-project that illustrates the problem. For this, I took the
interface java.lang.Iterable which defines the method iterator() which returns
java.util.Iterator. I created two interfaces each extending Iterable and overriding
interator() with a modified return type (MyIterator). My component then implements both
interfaces which triggers the bug.
I hope I made myself clear enough. If not, please ask for details.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira