1 Reply Latest reply on Nov 22, 2007 8:49 PM by lucluc

    CLUSTER wide EJBException: Invalid (i.e. remote) invocation

    lucluc

      Seam 2.0.0.GA
      JBoss 4.2.2.GA
      Win xp

      Hi,
      I managed to run a cluster with 2 nodes using:
      - Apache (mod_jk) as load balancer
      - Tomcat and JBoss in bundle.

      All goes very well if I use session context Java beans which replicate their state in cluster. By the way: GREAT WORK!

      The problems arise when I try to use session EJB3 (both stateful and stateless) instead of Java beans.
      I got the following exception

      javax.ejb.EJBException: Invalid (i.e. remote) invocation of local interface (null container)

      because the proxy uses the remote interface to call the bean.
      I've declared bean interfaces as local in components.xml. So the exception.

      I think that the problem is load balancing.
      If an Ejb client uses its proxy to do balancing it obviously needs to call remote interfaces.
      But when I delegate load balancing to external, when the Tomcat instance is called then next jboss bean calls should always be local, as declared in components.xml and for performance reasons.
      I'm no able to manage the whole system to do that.
      Is it possible? I think so.

      I'd like to use Ejb3 for performance reason. I read that that they are more optimized than pojo bean. Is this still true?
      What about the passivation of Java beans? Do they scale well when server load increase? Passivation is an Ejb feature. I don't know if java beans have passivation too.



      Here is my stack trace

      type Exception report

      message

      description The server encountered an internal error () that prevented it from fulfilling this request.

      exception

      javax.servlet.ServletException: /workspace.xhtml: Error reading 'progr' on type org.javassist.tmp.java.lang.Object_$$_javassist_0
      javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
      org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
      cbi.filters.compression.GZIPFilter.doFilter(GZIPFilter.java:19)
      org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

      root cause

      javax.el.ELException: /workspace.xhtml: Error reading 'progr' on type org.javassist.tmp.java.lang.Object_$$_javassist_0
      com.sun.facelets.compiler.TextInstruction.write(TextInstruction.java:48)
      com.sun.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:39)
      com.sun.facelets.compiler.UILeaf.encodeAll(UILeaf.java:149)
      javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
      com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
      com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
      com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
      com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
      javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
      org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
      cbi.filters.compression.GZIPFilter.doFilter(GZIPFilter.java:19)
      org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

      root cause

      javax.ejb.EJBException: Invalid (i.e. remote) invocation of local interface (null container) for jboss.j2ee:ear=CBI_FE.ear,jar=CBI_FE.jar,name=WorkspaceActionBean,service=EJB3,VMID=f0ed2a6d7fb07688:7df1788e:1164e177b30:-7ffc
      org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:116)
      $Proxy347.getProgr(Unknown Source)
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      java.lang.reflect.Method.invoke(Method.java:585)
      org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
      org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
      org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:76)
      org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
      org.jboss.seam.security.SecurityInterceptor.aroundInvoke(SecurityInterceptor.java:40)
      org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      org.jboss.seam.ejb.RemoveInterceptor.aroundInvoke(RemoveInterceptor.java:41)
      org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      org.jboss.seam.core.SynchronizationInterceptor.aroundInvoke(SynchronizationInterceptor.java:32)
      org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:106)
      org.jboss.seam.intercept.ClientSideInterceptor.invoke(ClientSideInterceptor.java:54)
      org.javassist.tmp.java.lang.Object_$$_javassist_0.getProgr(Object_$$_javassist_0.java)
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      java.lang.reflect.Method.invoke(Method.java:585)
      javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
      javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
      com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
      org.jboss.el.parser.AstPropertySuffix.getValue(AstPropertySuffix.java:53)
      org.jboss.el.parser.AstValue.getValue(AstValue.java:67)
      org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
      com.sun.facelets.el.ELText$ELTextVariable.writeText(ELText.java:184)
      com.sun.facelets.el.ELText$ELTextComposite.writeText(ELText.java:108)
      com.sun.facelets.compiler.TextInstruction.write(TextInstruction.java:45)
      com.sun.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:39)
      com.sun.facelets.compiler.UILeaf.encodeAll(UILeaf.java:149)
      javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
      com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
      com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
      com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
      com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
      javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
      org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
      org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
      cbi.filters.compression.GZIPFilter.doFilter(GZIPFilter.java:19)
      org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

      note The full stack trace of the root cause is available in the JBossWeb/2.0.1.GA logs.