1 2 Previous Next 26 Replies Latest reply on Feb 5, 2010 6:15 PM by alin.heyoulin.qq.com Go to original post
      • 15. Re: google app engine and weld
        cremersstijn

        do you know how i can get the full stack trace in google app engine?

        • 16. Re: google app engine and weld
          pmuir

          If that is what you get in the logs, I guess you can't. In this case, you can make a small app which just shows this problem (no extra stuff in there please ;-) and then create a JIRA issue for us to take a look.

          • 17. Re: google app engine and weld
            dan.j.allen

            Shane has put together a tutorial (part 1) documenting how to create a Google App Engine account and deploy an application using CDI 1.0 (Weld Servlet) and JSF 2.0 (Mojarra).

            • 18. Re: google app engine and weld
              alin.heyoulin.qq.com
              
              I try the latest weld core. When applied interceptor gae throw
              
              java.lang.NoClassDefFoundError: sun.reflect.ReflectionFactory is a restricted class. Please see the Google  App Engine developer's guide for more details.
                   at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
                   at org.jboss.interceptor.proxy.InterceptorProxyCreatorImpl.createProxyInstance(InterceptorProxyCreatorImpl.java:68)
                   at org.jboss.weld.bean.ManagedBean.applyInterceptors(ManagedBean.java:583)
                   at org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget.produce(ManagedBean.java:249)
                   at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:329)
                   at org.jboss.weld.context.DependentContext.get(DependentContext.java:62)
                   at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:788)
                   at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:814)
                   at org.granite.tide.cdi.CDIServiceContext.findComponent(CDIServiceContext.java:186)
                   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 com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
                   at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:304)
                   at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)
                   at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:163)
                   at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:298)
                   at org.jboss.weld.bean.proxy.ClientProxyMethodHandler.invoke(ClientProxyMethodHandler.java:112)
                   at org.jboss.weld.util.CleanableMethodHandler.invoke(CleanableMethodHandler.java:43)
                   at org.granite.tide.cdi.CDIServiceContext_$$_javassist_12.findComponent(CDIServiceContext_$$_javassist_12.java)
                   at org.granite.tide.TideServiceInvoker.adjustInvokee(TideServiceInvoker.java:172)
                   at org.granite.messaging.service.ServiceInvoker.invoke(ServiceInvoker.java:96)
                   at org.granite.messaging.amf.process.AMF3MessageProcessor.processRemotingMessage(AMF3MessageProcessor.java:136)
                   at org.granite.messaging.amf.process.AMF3MessageProcessor.process(AMF3MessageProcessor.java:59)
                   at org.granite.messaging.amf.process.AMF0MessageProcessor.process(AMF0MessageProcessor.java:78)
                   at org.granite.messaging.webapp.AMFMessageServlet.doPost(AMFMessageServlet.java:59)
                   at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
                   at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
                   at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
                   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
                   at org.granite.messaging.webapp.AMFMessageFilter.doFilter(AMFMessageFilter.java:117)
                   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
                   at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:51)
                   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
                   at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
                   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
                   at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:121)
                   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
                   at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
                   at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
                   at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
                   at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
                   at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
                   at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
                   at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
                   at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:352)
                   at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
                   at org.mortbay.jetty.Server.handle(Server.java:313)
                   at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
                   at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
                   at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
                   at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
                   at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
                   at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
                   at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
              
              
              
              
              It's jboss-interceptor-1.0.0-CR11
              
              


              • 19. Re: google app engine and weld
                dan.j.allen

                Please provide a snippet of sample code for others to test. It may come down to the need to file a JIRA.

                • 20. Re: google app engine and weld
                  pmuir

                  Please report this one in https://jira.jboss.org/jira/browse/JBINTER :-)

                  • 21. Re: google app engine and weld
                    alin.heyoulin.qq.com
                    And very simple jsf2 example throw
                    
                    
                    HTTP ERROR: 500
                    java.lang.RuntimeException: by java.lang.NoClassDefFoundError: javassist/util/proxy/ProxyObject
                    RequestURI=/helloworld.jsf
                    
                    Caused by:
                    com.google.common.collect.ComputationException: java.lang.RuntimeException: by java.lang.NoClassDefFoundError: javassist/util/proxy/ProxyObject
                            at com.google.common.collect.MapMaker$StrategyImpl.compute(MapMaker.java:602)
                            at com.google.common.collect.MapMaker$StrategyImpl.compute(MapMaker.java:462)
                            at com.google.common.collect.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2045)
                            at org.jboss.weld.bean.proxy.ClientProxyProvider.getClientProxy(ClientProxyProvider.java:117)
                            at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:779)
                            at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:814)
                            at org.jboss.weld.bean.builtin.InstanceImpl.get(InstanceImpl.java:75)
                            at org.jboss.weld.conversation.ServletConversationManager.getBeanStore(ServletConversationManager.java:56)
                            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 com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
                            at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:304)
                            at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)
                            at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:163)
                            at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:298)
                            at org.jboss.weld.bean.proxy.ClientProxyMethodHandler.invoke(ClientProxyMethodHandler.java:112)
                            at org.jboss.weld.util.CleanableMethodHandler.invoke(CleanableMethodHandler.java:43)
                            at org.jboss.weld.conversation.ServletConversationManager_$$_javassist_5.getBeanStore(ServletConversationManager_$$_javassist_5.java)
                            at org.jboss.weld.jsf.WeldPhaseListener.initiateSessionAndConversation(WeldPhaseListener.java:173)
                            at org.jboss.weld.jsf.WeldPhaseListener.beforeRestoreView(WeldPhaseListener.java:118)
                            at org.jboss.weld.jsf.WeldPhaseListener.beforePhase(WeldPhaseListener.java:87)
                            at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:224)
                            at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:95)
                            at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:105)
                            at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
                            at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
                            at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
                            at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
                            at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:51)
                            at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
                            at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
                            at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
                            at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:121)
                            at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
                            at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
                            at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
                            at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
                            at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
                            at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
                            at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
                            at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
                            at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:352)
                            at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
                            at org.mortbay.jetty.Server.handle(Server.java:313)
                            at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
                            at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
                            at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
                            at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
                            at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
                            at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
                            at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
                    
                    
                    
                    
                    Correct this just add a patch to org.jboss.weld.util.Proxies.java
                    
                    public ProxyFactory createProxyFactory()
                          {
                              ProxyFactory.classLoaderProvider = new ProxyFactory.ClassLoaderProvider() {
                                      public ClassLoader get(ProxyFactory pf) {
                                          return Thread.currentThread().getContextClassLoader();
                                      }
                                  };
                             ProxyFactory proxyFactory = new ProxyFactory();
                             Class<?> superClass = getSuperClass();
                             if(superClass != null && superClass != Object.class)
                             {
                                proxyFactory.setSuperclass(superClass);
                             }
                             proxyFactory.setInterfaces(getInterfaces());
                             return proxyFactory;
                          }
                    
                    
                    But sun.reflect.ReflectionFactory is a restricted class error can not be soved still.
                    


                    • 22. Re: google app engine and weld
                      alin.heyoulin.qq.com

                      Above issue is relative to http://www.seamframework.org/Community/JavassistClassDefFoundError
                      Is it weld bug or javasist bug?


                      I don't like put javasist.jar in tomcat server lib.


                      • 23. Re: google app engine and weld
                        pmuir

                        I just fixed the TCCL issue with Javassist last night for Servlet containers (nb we don't want to force this onto all containers!).

                        • 24. Re: google app engine and weld
                          alin.heyoulin.qq.com
                          
                          I think gae should do
                          
                          catch (NoClassDefFoundError e)
                                {
                                    // Support GAE
                                    log.warn("@Resource injection not available in simple beans");
                                   // Make Javassist always use the TCCL to load classes
                                   ProxyFactory.classLoaderProvider = new ClassLoaderProvider()
                                   {
                                      
                                      public ClassLoader get(ProxyFactory pf)
                                      {
                                         return Thread.currentThread().getContextClassLoader();
                                      }
                                      
                                   };
                                }
                          
                          


                          • 25. Re: google app engine and weld
                            pmuir

                            Please look at my fix :-)

                            • 26. Re: google app engine and weld
                              alin.heyoulin.qq.com

                              Sorry,i now update the latest vision :-)

                              1 2 Previous Next