Tuesday, October 1, 2013

Here Be Dragons: Apache DeltaSpike on Google App Engine

I recently tried using Apache DeltaSpike, CDI extensions that are the official successor to Seam. On the Google App Engine.

Unfortunately, as of this writing (and version .4 of DeltaSpike) the library triggers the infamous Restricted Class error:

[INFO] Oct 01, 2013 11:59:04 PM com.sun.faces.config.ConfigureListener contextInitialized
[INFO] SEVERE: Critical error during deployment: 
[INFO] com.sun.faces.config.ConfigurationException: Factory 'javax.faces.context.FacesContextFactory' was not configured properly.
[INFO]  at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:330)
[INFO]  at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:236)
[INFO]  at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:435)
[INFO]  at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:214)
[INFO]  at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
[INFO]  at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
[INFO]  at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
[INFO]  at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
[INFO]  at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
[INFO]  at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
[INFO]  at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
[INFO]  at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
[INFO]  at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
[INFO]  at org.mortbay.jetty.Server.doStart(Server.java:224)
[INFO]  at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
[INFO]  at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:249)
[INFO]  at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:306)
[INFO]  at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
[INFO]  at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:79)
[INFO]  at com.google.appengine.tools.development.Modules.startup(Modules.java:88)
[INFO]  at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:240)
[INFO]  at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:399)
[INFO]  at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
[INFO]  at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:334)
[INFO]  at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:310)
[INFO] Caused by: javax.faces.FacesException: org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeFacesContextFactory
[INFO]  at javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:710)
[INFO]  at javax.faces.FactoryFinder.getImplementationInstance(FactoryFinder.java:572)
[INFO]  at javax.faces.FactoryFinder.access$500(FactoryFinder.java:140)
[INFO]  at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1120)
[INFO]  at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:379)
[INFO]  at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:328)
[INFO]  ... 24 more
[INFO] Caused by: java.lang.reflect.InvocationTargetException
[INFO]  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[INFO]  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
[INFO]  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[INFO]  at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
[INFO]  at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:127)
[INFO]  at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:135)
[INFO]  at javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:690)
[INFO]  ... 29 more
[INFO] Caused by: java.util.ServiceConfigurationError: org.apache.deltaspike.core.spi.config.ConfigSourceProvider: Provider org.apache.deltaspike.core.impl.config.DefaultConfigSourceProvider could not be instantiated: java.lang.NoClassDefFoundError: javax.naming.InitialContext is a restricted class. Please see the Google  App Engine developer's guide for more details.
[INFO]  at java.util.ServiceLoader.fail(ServiceLoader.java:224)
[INFO]  at java.util.ServiceLoader.access$100(ServiceLoader.java:181)
[INFO]  at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:370)
[INFO]  at java.util.ServiceLoader$1.next(ServiceLoader.java:438)
[INFO]  at org.apache.deltaspike.core.util.ServiceUtils.loadServiceImplementations(ServiceUtils.java:55)
[INFO]  at org.apache.deltaspike.core.api.config.ConfigResolver.resolveConfigSources(ConfigResolver.java:224)
[INFO]  at org.apache.deltaspike.core.api.config.ConfigResolver.getConfigSources(ConfigResolver.java:203)
[INFO]  at org.apache.deltaspike.core.api.config.ConfigResolver.getAllPropertyValues(ConfigResolver.java:160)
[INFO]  at org.apache.deltaspike.core.util.ClassDeactivationUtils.initConfiguredClassDeactivators(ClassDeactivationUtils.java:152)
[INFO]  at org.apache.deltaspike.core.util.ClassDeactivationUtils.getClassDeactivators(ClassDeactivationUtils.java:143)
[INFO]  at org.apache.deltaspike.core.util.ClassDeactivationUtils.initDeactivatableCacheFor(ClassDeactivationUtils.java:88)
[INFO]  at org.apache.deltaspike.core.util.ClassDeactivationUtils.isActivated(ClassDeactivationUtils.java:73)
[INFO]  at org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeFacesContextFactory.<init>(DeltaSpikeFacesContextFactory.java:42)
[INFO]  ... 36 more
[INFO] Caused by: java.lang.NoClassDefFoundError: javax.naming.InitialContext is a restricted class. Please see the Google  App Engine developer's guide for more details.
[INFO]  at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
[INFO]  at org.apache.deltaspike.core.impl.util.JndiUtils.<clinit>(JndiUtils.java:51)
[INFO]  at java.lang.Class.forName0(Native Method)
[INFO]  at java.lang.Class.forName(Class.java:186)
[INFO]  at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
[INFO]  at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:64)
[INFO]  at org.apache.deltaspike.core.impl.config.LocalJndiConfigSource.getPropertyValue(LocalJndiConfigSource.java:53)
[INFO]  at org.apache.deltaspike.core.impl.config.BaseConfigSource.initOrdinal(BaseConfigSource.java:54)
[INFO]  at org.apache.deltaspike.core.impl.config.LocalJndiConfigSource.<init>(LocalJndiConfigSource.java:39)
[INFO]  at org.apache.deltaspike.core.impl.config.DefaultConfigSourceProvider.<init>(DefaultConfigSourceProvider.java:49)
[INFO]  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[INFO]  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
[INFO]  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[INFO]  at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
[INFO]  at java.lang.Class.newInstance0(Class.java:372)
[INFO]  at java.lang.Class.newInstance(Class.java:325)
[INFO]  at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:362)
[INFO]  ... 46 more

No comments:

Post a Comment