1 2 Previous Next 21 Replies Latest reply on Feb 8, 2007 8:25 PM by raghinii

    Issues moving from Seam 1.1.0 to Seam 1.1.5

      Hello,

      I have an EAR Deployment that uses the following API's:

      * Seam 1.1.0 (would like to use 1.1.5)
      * MyFaces 1.1.4 (no - ICEFaces is not )
      * Tomahawk 1.1.3 (an option for this project)
      * Facelets 1.1.11

      The MyFaces jars are package at the EAR level. The project contains an EJB jar, a webapp war, jBPM, etc...

      The application (EAR) is deployed in JBoss 4.0.4. with EJB RC8

      I tried simply dropping the Seam 1.1.5 jars into my project and bringing up the application. The application starts to work, however, a few clicks into the application, I consistently get the following exception:

      2007-02-01 09:37:27,005 DEBUG [org.jboss.seam.Component] instantiating Seam component: org.jboss.seam.core.interpolator
      2007-02-01 09:37:27,005 DEBUG [org.jboss.seam.Component] initializing new instance of: org.jboss.seam.core.interpolator
      2007-02-01 09:37:27,005 DEBUG [org.jboss.seam.Component] done initializing: org.jboss.seam.core.interpolator
      2007-02-01 09:37:27,005 DEBUG [com.evergreen.accesscontrol.ApplicationConverter] getAsString Class: class java.lang.Long
      2007-02-01 09:37:27,005 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preRemoveVariable.org.jboss.seam.outermostExceptionInterceptor
      2007-02-01 09:37:27,005 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postRemoveVariable.org.jboss.seam.outermostExceptionInterceptor
      2007-02-01 09:37:27,052 ERROR [STDERR] Feb 1, 2007 9:37:27 AM com.sun.facelets.FaceletViewHandler handleRenderException
      SEVERE: Error Rendering View[/user_access_request_select_applications.xhtml]
      javax.faces.FacesException: java.io.NotSerializableException: java.lang.ThreadLocal
       at org.apache.myfaces.shared_impl.util.StateUtils.getAsByteArray(StateUtils.java:190)
       at org.apache.myfaces.shared_impl.util.StateUtils.construct(StateUtils.java:150)
       at org.apache.myfaces.renderkit.html.HtmlResponseStateManager.writeState(HtmlResponseStateManager.java:102)
       at org.apache.myfaces.application.jsp.JspStateManagerImpl.writeState(JspStateManagerImpl.java:430)
       at org.jboss.seam.jsf.SeamStateManager.writeState(SeamStateManager.java:66)
       at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:606)
       at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:97)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at com.evergreen.filter.RequestDumper.doFilter(RequestDumper.java:78)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:46)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:32)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
       at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
       at com.evergreen.fastpass.catalina.CASSSOAuthenticatorValve.invoke(CASSSOAuthenticatorValve.java:373)
       at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
       at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
       at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
       at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
       at java.lang.Thread.run(Thread.java:595)
      Caused by: java.io.NotSerializableException: java.lang.ThreadLocal
       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081)
       at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
       at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
       at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
       at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
       at java.util.ArrayList.writeObject(ArrayList.java:569)
       at sun.reflect.GeneratedMethodAccessor302.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
       at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
       at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
       at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
       at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
       at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
       at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
       at java.util.HashMap.writeObject(HashMap.java:1039)
       at sun.reflect.GeneratedMethodAccessor275.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
       at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
       at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
       at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
       at java.util.HashMap.writeObject(HashMap.java:1039)
       at sun.reflect.GeneratedMethodAccessor275.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
       at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
       at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
       at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251)
       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
       at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251)
       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
       at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251)
       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
       at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
       at org.apache.myfaces.shared_impl.util.StateUtils.getAsByteArray(StateUtils.java:180)
       ... 41 more
      2007-02-01 09:37:27,068 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: accessRequestType
      2007-02-01 09:37:27,068 DEBUG [org.jboss.seam.contexts.Contexts] found in session context: accessRequestType
      2007-02-01 09:37:27,068 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to Seam component
      2007-02-01 09:37:27,083 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: evergreenUser
      


      If I revert to the Seam 1.1.0 jars, this problem goes away. Any thoughts about this? I've checked the classes used to compose the page - they're all marked Serializable...

      Thanks,
      Brad Smith

        • 1. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5
          pmuir
          • 2. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5

            Thanks for the pointer - I saw this same problem with 1.1.1 but I just fell back to 1.1.0 also. It would be nice to make another release with this fix in short order (please?).

            Thanks,
            Brad Smith

            • 3. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5
              gavin.king

              Eeek. This issue is already fixed in CVS. I might have to do a patch release.

              • 4. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5 (still)

                I have found an additional problem with Seam 1.1.6(?) in CVS before you do a release...

                I downloaded the CVS.20070206 bundle from the Nightly builds directory. When I deployed my application using the CVS.20070206 I am still having problems with the same page, same setup described previously. Here is the stack trace I am getting:

                2007-02-07 08:49:56,313 ERROR [org.jboss.seam.servlet.SeamExceptionFilter] uncaught exception
                javax.servlet.ServletException: Error calling action method of component with id _id15:_id40
                 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:97)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at com.evergreen.filter.RequestDumper.doFilter(RequestDumper.java:78)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:43)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:29)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
                 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
                 at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
                 at com.evergreen.fastpass.catalina.CASSSOAuthenticatorValve.invoke(CASSSOAuthenticatorValve.java:373)
                 at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
                 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
                 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
                 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
                 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
                 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
                 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
                 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
                 at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
                 at java.lang.Thread.run(Thread.java:595)
                2007-02-07 08:49:56,313 ERROR [org.jboss.seam.servlet.SeamExceptionFilter] exception root cause
                javax.faces.FacesException: Error calling action method of component with id _id15:_id40
                 at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
                 at javax.faces.component.UICommand.broadcast(UICommand.java:106)
                 at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
                 at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
                 at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
                 at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
                 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:97)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at com.evergreen.filter.RequestDumper.doFilter(RequestDumper.java:78)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:43)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:29)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
                 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
                 at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
                 at com.evergreen.fastpass.catalina.CASSSOAuthenticatorValve.invoke(CASSSOAuthenticatorValve.java:373)
                 at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
                 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
                 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
                 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
                 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
                 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
                 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
                 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
                 at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
                 at java.lang.Thread.run(Thread.java:595)
                Caused by: javax.faces.el.EvaluationException: /user_access_search_form.xhtml @76,81 action="#{queryEPeople.findUserByUserid}": javax.ejb.EJBTransactionRolledbackException: java.lang.IllegalArgumentException: can't parse argument number userid=A428302
                 at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:73)
                 at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)
                 ... 40 more
                Caused by: javax.ejb.EJBTransactionRolledbackException: java.lang.IllegalArgumentException: can't parse argument number userid=A428302
                 at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:93)
                 at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
                 at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:201)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
                 at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
                 at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:81)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
                 at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
                 at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
                 at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
                 at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:188)
                 at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98)
                 at $Proxy211.findUserByUserid(Unknown Source)
                 at com.evergreen.accesscontrol.QueryEPeople$$FastClassByCGLIB$$71205117.invoke(<generated>)
                 at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
                 at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:45)
                 at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:74)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:55)
                 at org.jboss.seam.interceptors.RemoveInterceptor.removeIfNecessary(RemoveInterceptor.java:40)
                 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:585)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
                 at org.jboss.seam.interceptors.SynchronizationInterceptor.serialize(SynchronizationInterceptor.java:31)
                 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:585)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
                 at org.jboss.seam.intercept.RootInterceptor.createSeamInvocationContext(RootInterceptor.java:144)
                 at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:129)
                 at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:102)
                 at org.jboss.seam.intercept.ClientSideInterceptor.interceptInvocation(ClientSideInterceptor.java:83)
                 at org.jboss.seam.intercept.ClientSideInterceptor.intercept(ClientSideInterceptor.java:52)
                 at org.jboss.seam.intercept.Proxy$$EnhancerByCGLIB$$307c8c38.findUserByUserid(<generated>)
                 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:585)
                 at com.sun.el.parser.AstValue.invoke(AstValue.java:151)
                 at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
                 at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
                 at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:69)
                 ... 41 more
                Caused by: java.lang.IllegalArgumentException: can't parse argument number userid=A428302
                 at java.text.MessageFormat.makeFormat(MessageFormat.java:1330)
                 at java.text.MessageFormat.applyPattern(MessageFormat.java:450)
                 at java.text.MessageFormat.<init>(MessageFormat.java:368)
                 at org.jboss.seam.core.Interpolator.interpolateExpressions(Interpolator.java:138)
                 at org.jboss.seam.core.Interpolator.interpolate(Interpolator.java:67)
                 at org.jboss.seam.log.LogImpl.interpolate(LogImpl.java:136)
                 at org.jboss.seam.log.LogImpl.info(LogImpl.java:79)
                 at com.evergreen.accesscontrol.impl.QueryEPeopleBean.findUserByUserid(QueryEPeopleBean.java:114)
                 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:585)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
                 at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
                 at org.jboss.seam.intercept.EJBInvocationContext.proceed(EJBInvocationContext.java:37)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:55)
                 at org.jboss.seam.interceptors.BijectionInterceptor.bijectNonreentrantComponent(BijectionInterceptor.java:79)
                 at org.jboss.seam.interceptors.BijectionInterceptor.bijectComponent(BijectionInterceptor.java:58)
                 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:585)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
                 at org.jboss.seam.interceptors.OutcomeInterceptor.interceptOutcome(OutcomeInterceptor.java:21)
                 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:585)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
                 at org.jboss.seam.interceptors.ConversationInterceptor.endOrBeginLongRunningConversation(ConversationInterceptor.java:52)
                 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:585)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
                 at org.jboss.seam.interceptors.BusinessProcessInterceptor.manageBusinessProcessContext(BusinessProcessInterceptor.java:51)
                 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:585)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
                 at org.jboss.seam.interceptors.ConversationalInterceptor.checkConversationForConversationalBean(ConversationalInterceptor.java:83)
                 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:585)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
                 at org.jboss.seam.interceptors.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:27)
                 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:585)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
                 at org.jboss.seam.intercept.RootInterceptor.createSeamInvocationContext(RootInterceptor.java:144)
                 at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:129)
                 at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:102)
                 at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:50)
                 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:585)
                 at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118)
                 at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
                 at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:57)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
                 at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
                 at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
                 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
                 at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
                 ... 91 more
                
                


                Just to be clear.... all I have to do to fix this bug is redeploy using Seam 1.1.0 GA.

                Help?

                Thanks,
                Brad Smith

                • 5. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5

                  Can you show the log message that is causing this problem?

                  • 6. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5

                     

                    log.info("findUserByUserid() : found users -> " + evergreenUsers);
                    


                    here is the whole method:

                     public String findUserByUserid() {
                     log.info("findUserByUserid() : anumber = " + evergreenUser.getAnumber());
                     log.info("findUserByUserid() : lastqry = " + lastQueryText);
                    
                     if (evergreenUser.getAnumber().trim().length() < 5) {
                     facesMessages.add("anumber", "You must enter at least the first 5 characters of the employee id");
                     return "";
                     }
                    
                     if (!this.lastQueryText.equalsIgnoreCase(evergreenUser.getAnumber())) {
                    
                     this.lastQueryText = evergreenUser.getAnumber();
                     QueryEPeopleUtil util = new QueryEPeopleUtil(this.lastQueryText);
                     boolean pattern = util.isQueryValidUid() & util.getQuery().length() < 7;
                     this.evergreenUsers = util.findUsersForUid(pattern);
                     if (util.getMessage() != null) {
                     this.facesMessages.add("anumber", util.getMessage());
                     }
                     log.info("findUserByUserid() : found users -> " + evergreenUsers);
                     }
                     return "search_results";
                     }
                    


                    Thanks

                    • 7. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5

                      Ok, I fixed the interpolator so that it won't throw an exception when an improperly formatted message comes in. Just so you know, though, you really should be constructing log messages more like


                      log.info("Here's my potentially dangerous value: #0", myValue);
                      


                      instead of

                      log.info("Here's my potentially dangerous value: " + myValue);
                      


                      • 8. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5

                        Thanks for making the fix - I'll try it out when the next CVS bundle appears on the nightly builds server.

                        I disagree with your suggestion about how I should log a message. As far as I'm concerned, when I ask a logger to log a message, whether it's a single string, concatenation of strings, an invokation of an object's toString() method, etc., that's exactly what I mean - print the resultant strings to the logging device. When I construct logging messages, I do not at all regard my message the same way I would a localized message with parameters.

                        Anyway, thanks again,
                        Brad Smith

                        PS: after I post this, I am going to try reverting to commons-logging - the old fashioned way. It just never occured to me that at org.jboss.seam.log.LogImpl.interpolate(...) would be the culprit. My guess is good old fashioned logging will work fine.

                        • 9. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5

                          I don't understand your objection. The logger does not log text strings, it logs messages with embedded expressions. Those expressions are evaluated. Your log message contained an invalid expression. This shouldn't throw an error, which is fixed. However, messages shouldn't contain invalid expressions. The fix is very simple - pass raw text data as arguments to the message, that the message itself.

                          • 10. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5

                            er... "rather than as the message itself"

                            • 11. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5

                              don't understand my objection? That's simple to understand....

                              I've been using Log4j or commons logging to log messages for years. I started using the @Logger Log log with Seam and used it the same way I've been logging for years - everything's been fine until I a.) first tried the 1.1.5 release, and then b.) tried the CVS version of 1.1.5+ release. The price I paid for trying is that suddenly the logging system surprised me with error/exception we've been discussing - a completely unexpected problem.

                              Since I have a deadline for the project I am on, it looks to me like the safe path is to use Commons logging directly - that's fine.

                              • 12. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5
                                smokingapipe

                                Call me old fashioned but I'm in the camp that says that the logging system should be brain-dead-simple and should never cause errors and should always work. It exists to debug and diagnose other problems. I shouldn't have to debug and diagnose it.

                                Now, what's happening here is we need TWO different views of logging: One is "software diagnostic" logging, so I can trace when certain pieces of code trigger and send myself messages. The other level is "application monitoring" logging, where the application itself generates messages that are relevant to application users.

                                Let's take an MTA as an example. A "software diagnostic" level might be something like, "fatal error: attempting to free() a null pointer". That tells me, I've made a software mistake, in the logic. A "application monitoring" message would be, "mail delivered successfully to..." or perhaps, "unable to bind to port 25; check to see if some other process is binding to that port." Do you see the difference?

                                What has happened unfortunately is that the Java community has not understood the difference. We have these sophisticated logging frameworks that do a lot of things, but as we can see in this thread, they aren't bulletproof and they can and do cause their own problems. This makes them bad for the software level logging I'm talking about. Software level logging should focus on working 100% of the time. That's why I always use java.util.logging for this, because it has no external jar dependencies, meaning that no matter what is going on with jars and classloaders, it will still always work. That's how a software logging tool should be.

                                For the application-level logging, external dependencies are fine. In my current Seam application, I actually have a logging MDB that various components use to send messages that users can then view through the web page. That's cool but it's high level and fragile; it stops working if I make a config mistake, or have the wrong jar, or messages aren't working for whatever reason.

                                • 13. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5

                                  Ok, let's take a step back. You are making a big deal out of a misunderstanding of what seam is doing combined with a bug in seam.

                                  Seam log messages are structured messages. You can:

                                  1 - log contextual state using expressions, without needing to inject values and invoke methods.
                                  2 - log formatted data easily
                                  3 - eliminate overhead from message creation (string buffer builders, etc...) when the message is not logged - without needing to uglify your code with isLogged() tests.

                                  For that you only have pay one small price - your log messages need to be a format string, like a printf. You wouldn't printf("this is the message " + someOtherData), would you? You would printf("this is the message %s", someOtherData) because if someOtherData had format codes, it would get messed up.

                                  That's all that is happening here. You are using a raw text string as a message string. If you want to log a raw string, call log("#0", yourRawTextString). There's no magic here. There's nothing scandalous or shocking here. It's simply a format string.

                                  You happened to not run into this before because of a bug in Seam 1.1 that didn't interpolate correctly when no parameters were passed in. This happened to be magnified by a recent change I made that caused an exception to be thrown when called with a bad format string. I fixed that issue so that it won't complain loudly when the user has an error in his format string.

                                  I really don't know what to say. If you'd like a logging method that doesn't use a format string, open a JIRA issue. I don't think I see a need to explode the API further, but its worth consideration.

                                  • 14. Re: Issues moving from Seam 1.1.0 to Seam 1.1.5

                                    I'll stick with commons logging for logging.

                                    But one idea occurs to me, you might want to change:

                                    
                                    @Logger
                                    private Log log;
                                    
                                    


                                    to

                                    
                                    @Printer
                                    private Printf printf
                                    
                                    


                                    since it sounds like your true goal is to emulate printf with the @Logger stuff.

                                    (have a laugh)



                                    1 2 Previous Next