在 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。
我构建了一个简单的 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。