Ikai, I have posted the same issue on the Spring Roo forums. Below is the reply I got from them.
With the Roo 1.1 M3 release we have changed the way we map the Spring DispatcherServlet following Spring Framework improvements. We are also using a new MVC resources handler (configured in webmvc-config.xml) which allows serving of static resources. Both of these changes allow us to remove the need for URL rewriting (which was present in previous versions of Roo) while still offering clean RESTful URLs. As you have seen this causes some issues on GAE which we are currently following up with Google. The main issue for Roo scaffolded MVC applications is however the need for JSP 2.1 which GAE currently does not support (see https://jira.springframework.org/browse/ROO-1006 for details). When I review the ROO-1006 issue it is stating that I need to have jsp 2.1. See below Currently GAE raises a compilation exception of the Roo generated jspx files in a GAE environment. The problem is the use of jasper- runtime-5.0.28.jar in the current version of GAE alongside geronimo- jsp_2.1_spec-1.0.1.jar. This means that GAE have an API which allows JSP 2.1 and an implementation of Jasper which only supports JSP 2.0. Spring Roo generated MVC apps use a number of JSP 2.1 features (mostly EL related) which are supported by all current Web containers but not GAE. (see http://code.google.com/p/googleappengine/issues/detail?id=1506) As such GAE deployments are currently not supported by Roo generated Spring MVC applications. However, we are in contact with Google to resolve this issue as soon as possible. As a workaround Roo could ship a custom tag library (potentially with reduced functionality) to support JSP 2.0 EL. Another issue which needs to be resolved is the full support of the default GAE data store. This will require changes outlined in ROO-611 to fully support references between domain objects. So question is when will issue http://code.google.com/p/googleappengine/issues/detail?id=1506 be fixed? I'm guessing that this might be because of the version of Jetty GAE for java is running on. Any why to get the time line for something like this? Also when I run mvn gwt:run locally it works fine. Thanks Zach On Sep 2, 1:45 pm, "Ikai L (Google)" <[email protected]> wrote: > I'm not a Spring Roo expert, but this seems to offer a clue: > > java.lang.IllegalStateException: Unable to locate the default servlet > for serving static content. Please set the 'defaultServletName' > property explicitly. > > Does that property mean anything to you? > > > > > > On Wed, Sep 1, 2010 at 8:11 PM, zachariahyoung <[email protected]> wrote: > > I'm working on trying to get Spring Roo 1.1.0.M3 with Google Web > > Toolkit 2.1.0.M3 working in Google App Engine for Java 1.3.7. I have > > even had a hard time getting some of the samples to work. I was hope > > someone could help me with the follow error and direct me on how I > > need to fix it. > > > Error from GAE. > > > Uncaught exception from servlet > > javax.servlet.UnavailableException: > > org.springframework.beans.factory.BeanCreationException: Error > > creating bean with name > > > 'org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler# > > 0': > > Initialization of bean failed; nested exception is > > java.lang.IllegalStateException: Unable to locate the default servlet > > for serving static content. Please set the 'defaultServletName' > > property explicitly. > > at > > org.mortbay.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java: > > 415) > > at > > org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java: > > 458) > > at > > org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java: > > 263) > > at > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: > > 50) > > at > > org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java: > > 685) > > at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) > > 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: > > 251) > > at com.google.apphosting.base.RuntimePb$EvaluationRuntime > > $6.handleBlockingRequest(RuntimePb.java:6784) > > at com.google.apphosting.base.RuntimePb$EvaluationRuntime > > $6.handleBlockingRequest(RuntimePb.java:6782) > > 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:418) > > at java.lang.Thread.run(Thread.java:636) > > > -- > > 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 > > [email protected]. > > To unsubscribe from this group, send email to > > [email protected]<google-appengine-java%2B > > [email protected]> > > . > > For more options, visit this group at > >http://groups.google.com/group/google-appengine-java?hl=en. > > -- > Ikai Lan > Developer Programs Engineer, Google App Engine > Blog:http://googleappengine.blogspot.com > Twitter:http://twitter.com/app_engine > Reddit:http://www.reddit.com/r/appengine -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
