[seam-issues] [JBoss JIRA] Created: (JBSEAM-4727) DuplicateMemberException with Sessionbean components

Martin Höller (JIRA) jira-events at lists.jboss.org
Mon Nov 22 12:52:53 EST 2010


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

       



More information about the seam-issues mailing list