【问题标题】:Adding and configuring guice in a large web app on GAE在 GAE 上的大型 Web 应用程序中添加和配置 guice
【发布时间】:2011-06-23 05:43:15
【问题描述】:

我达到了 web.xml 中可以拥有的最大 url 模式,我期待 guice 提供一种解决方法。如果我能让它工作,一切都会好起来的。我要做的就是设置一个服务器,以便我可以将 url-patterns 重新路由到新的 serv 这是我的 web.xml 的相关部分的样子:

    <filter>
        <filter-name>guiceFilter</filter-name>
        <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
    </filter>
  <filter-mapping>
    <filter-name>guiceFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>com.google.truxmap.server.guice.MyGuiceServletContextListener</listener-class>
  </listener>

以及我收到的错误的堆栈跟踪:

Failed startup of context com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext@1435ec9{/,/base/data/home/apps/foodtrucksmap/5.348199425225253754}
com.google.inject.CreationException: Guice creation errors:

1) An exception was caught and reported. Message: Unable to get members for class com.google.inject.AbstractModule
  at com.google.inject.InjectorShell$Builder.build(InjectorShell.java:135)
Caused by: java.lang.SecurityException: Unable to get members for class com.google.inject.AbstractModule
    at com.google.appengine.runtime.Request.process-47bc6af27ac147aa(Request.java)
    at java.lang.Class.getDeclaredMethods(Class.java:252)
    at com.google.inject.internal.ProviderMethodsModule.getProviderMethods(ProviderMethodsModule.java:78)
    at com.google.inject.internal.ProviderMethodsModule.configure(ProviderMethodsModule.java:70)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:232)
    at com.google.inject.spi.Elements.getElements(Elements.java:101)
    at com.google.inject.InjectorShell$Builder.build(InjectorShell.java:135)
    at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:102)
    at com.google.inject.Guice.createInjector(Guice.java:92)
    at com.google.inject.Guice.createInjector(Guice.java:69)
    at com.google.inject.Guice.createInjector(Guice.java:59)
    at com.google.truxmap.server.guice.MyGuiceServletContextListener.getInjector(MyGuiceServletContextListener.java:14)
    at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:43)
    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.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:24)
    at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:435)
    at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:572)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:448)
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:688)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:446)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    ... 30 more
Caused by: java.lang.NoClassDefFoundError: [Lorg/aopalliance/intercept/MethodInterceptor;
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2444)
    ... 30 more
Caused by: java.lang.ClassNotFoundException: org.aopalliance.intercept.MethodInterceptor
    at com.google.appengine.runtime.Request.process-47bc6af27ac147aa(Request.java)
    ... 30 more

非常感谢您的帮助!

【问题讨论】:

    标签: google-app-engine guice web.xml


    【解决方案1】:

    看来您只需要解决对 aopalliance 库的依赖即可。将 aopalliance.jar 放入您的 WEB-INF/lib 文件夹中。

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 1970-01-01
      • 2011-08-10
      • 2012-09-25
      • 2017-10-18
      • 1970-01-01
      • 2011-07-29
      • 2012-06-17
      • 1970-01-01
      相关资源
      最近更新 更多