在 Google App Engine 中收到 Spring RequestMappingHandlerMapping 错误

Receiving a Spring RequestMappingHandlerMapping error in Google App Engine

我构建了一个简单的 Spring MVC 应用程序,它可以在我的本地计算机上完美运行。然而,将其上传到 Google App Engine 后,我收到了 HTTP 500 错误。

查看日志我收到此 INFO 消息:

org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions: Loading XML bean definitions from ServletContext resource [/WEB-INF/enterprise-servlet.xml]

这是正常的,因为我在本地 运行 应用程序时收到此 INFO 消息。 Spring 然后将映射 url 到方法上,例如来自我本地机器的日志消息:

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.register Mapped "{[/listStaff],methods=[GET],produces=[application/json || application/xml]}" onto public java.util.List<org.andrewvincent.model.Staff> org.andrewvincent.controller.Controller.listStaffXML()

但是,当我从应用引擎查看日志时,收到以下错误:

org.springframework.web.context.support.XmlWebApplicationContext refresh: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping': Invocation of init method failed; nested exception is java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.sun.reflect.annotation")

我想这就是我收到 500 错误代码的原因,因为 url 没有映射到方法上,但我无法弄清楚为什么我不在本地时会收到此错误。

以下是我的企业-servlet.xml:

<beans xmlns:context="http://www.springframework.org/schema/context"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xmlns="http://www.springframework.org/schema/beans"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context-4.0.xsd 
   http://www.springframework.org/schema/mvc
   http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven/>

    <bean id="controllerBean" class="org.andrewvincent.controller.Controller"></bean>
    <bean id="plainControllerBean"
      class="org.andrewvincent.controller.PlainTextController"></bean>

    <mvc:resources mapping="/resources/**" location="/resources/"/>

    <mvc:default-servlet-handler/>
</beans>

如果有人能帮助我,我将不胜感激。

这是已知的bug

您使用的是 4.2.4 吗?如果是这样,您应该降级到 4.2.3。