Well, problem solved. GAE just does not like when you leave too much
magic on Spring. I wanted to setup everything using Spring instead of
the PMF.java file described in GAE docs. So now I use the PMF.java
instead and retrieve the PM from it using Spring and the error is
gone.

This is the non-working PMF.java replacement, in case anyone cares:

        <bean id="persistenceManagerFactory" class="javax.jdo.JDOHelper"
                factory-method="getPersistenceManagerFactory" lazy-init="true">

                <constructor-arg value="transactions-optional" />
        </bean>

        <bean id="persistenceManager" factory-
bean="persistenceManagerFactory"
                factory-method="getPersistenceManager" scope="request" destroy-
method="close">

                <aop:scoped-proxy />
        </bean>

This is good, because you don't have to have a single line of Java
code to produce a PM.

Daniel

On May 21, 5:59 pm, "Daniel Kvasnicka jr."
<daniel.kvasnicka...@gmail.com> wrote:
> Dear all,
>
> I'm working on an app (JSF 2.0, Spring 3.0.2) and when I deploy it to
> GAE, it dies on first request with this:
>
> java.lang.IllegalArgumentException: Cannot find class
> [javax.naming.Context]
>         at
> org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:
> 294)
>         at org.springframework.core.LocalVariableTableParameterNameDiscoverer
> $LocalVariableTableVisitor.resolveMember(LocalVariableTableParameterNameDis 
> coverer.java:
> 229)
>         at org.springframework.core.LocalVariableTableParameterNameDiscoverer
> $LocalVariableTableVisitor.visitEnd(LocalVariableTableParameterNameDiscover 
> er.java:
> 219)
>         at org.springframework.asm.ClassReader.accept(Unknown Source)
>         at org.springframework.asm.ClassReader.accept(Unknown Source)
>         at
> org.springframework.core.LocalVariableTableParameterNameDiscoverer.inspectC 
> lass(LocalVariableTableParameterNameDiscoverer.java:
> 114)
>         at
> org.springframework.core.LocalVariableTableParameterNameDiscoverer.getParam 
> eterNames(LocalVariableTableParameterNameDiscoverer.java:
> 71)
>         at
> org.springframework.beans.factory.support.ConstructorResolver.instantiateUs 
> ingFactoryMethod(ConstructorResolver.java:
> 447)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor 
> y.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:
> 973)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor 
> y.createBeanInstance(AbstractAutowireCapableBeanFactory.java:
> 879)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor 
> y.doCreateBean(AbstractAutowireCapableBeanFactory.java:
> 485)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor 
> y.createBean(AbstractAutowireCapableBeanFactory.java:
> 456)
>         at org.springframework.beans.factory.support.AbstractBeanFactory
> $1.getObject(AbstractBeanFactory.java:291)
>         at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getS 
> ingleton(DefaultSingletonBeanRegistry.java:
> 222)
>         at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abs 
> tractBeanFactory.java:
> 288)
>         at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abstr 
> actBeanFactory.java:
> 190)
>         at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preIns 
> tantiateSingletons(DefaultListableBeanFactory.java:
> 563)
>         at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFa 
> ctoryInitialization(AbstractApplicationContext.java:
> 872)
>         at
> org.springframework.context.support.AbstractApplicationContext.refresh(Abst 
> ractApplicationContext.java:
> 423)
>         at
> org.springframework.web.context.ContextLoader.createWebApplicationContext(C 
> ontextLoader.java:
> 276)
>         at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(Con 
> textLoader.java:
> 197)
>         at
> org.springframework.web.context.ContextLoaderListener.contextInitialized(Co 
> ntextLoaderListener.java:
> 47)
>         at
> org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:
> 548)
>         at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
>         at
> org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:
> 1250)
>         at
> org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:
> 517)
>         at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:
> 467)
>         at
> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
> 50)
>         at
> com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppV 
> ersionHandlerMap.java:
> 191)
>         at
> com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVers 
> ionHandlerMap.java:
> 168)
>         at
> com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceReques 
> t(JettyServletEngineAdapter.java:
> 123)
>         at
> com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
> 250)
>         at com.google.apphosting.base.RuntimePb$EvaluationRuntime
> $6.handleBlockingRequest(RuntimePb.java:5838)
>         at com.google.apphosting.base.RuntimePb$EvaluationRuntime
> $6.handleBlockingRequest(RuntimePb.java:5836)
>         at
> com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingAp 
> plicationHandler.java:
> 24)
>         at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
> 398)
>         at com.google.net.rpc.impl.Server$2.run(Server.java:852)
>         at
> com.google.tracing.LocalTraceSpanRunnable.run(LocalTraceSpanRunnable.java:
> 56)
>         at
> com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan(LocalTraceSpa 
> nBuilder.java:
> 576)
>         at com.google.net.rpc.impl.Server.startRpc(Server.java:807)
>         at com.google.net.rpc.impl.Server.processRequest(Server.java:369)
>         at
> com.google.net.rpc.impl.ServerConnection.messageReceived(ServerConnection.j 
> ava:
> 442)
>         at
> com.google.net.rpc.impl.RpcConnection.parseMessages(RpcConnection.java:
> 319)
>         at
> com.google.net.rpc.impl.RpcConnection.dataReceived(RpcConnection.java:
> 290)
>         at com.google.net.async.Connection.handleReadEvent(Connection.java:
> 474)
>         at
> com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.j 
> ava:
> 831)
>         at
> com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:
> 207)
>         at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:
> 103)
>         at
> com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:
> 251)
>         at com.google.apphosting.runtime.JavaRuntime
> $RpcRunnable.run(JavaRuntime.java:413)
>         at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.ClassNotFoundException: javax.naming.Context
>         at
> com.google.apphosting.runtime.security.UserClassLoader.loadClass(UserClassL 
> oader.java:
> 445)
>         at java.lang.ClassLoader.loadClass(Unknown Source)
>         at org.springframework.util.ClassUtils.forName(ClassUtils.java:258)
>         at
> org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:
> 291)
>         ... 50 more
>
> Anybody has encountered this already? I know JNDI is not allowed on
> GAE, but can Spring be made to not to use it?
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Google App Engine for Java" group.
> To post to this group, send email to google-appengine-j...@googlegroups.com.
> To unsubscribe from this group, send email to 
> google-appengine-java+unsubscr...@googlegroups.com.
> For more options, visit this group 
> athttp://groups.google.com/group/google-appengine-java?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to