Struts 2 на GAE - ошибка: результат "null" не найден
проблема
Разработка Struts2 на Google App Engine, в следующей среде.
-
Struts 2.3.1.2
-
JDK 1.6
-
Eclipse 3.7 + плагин Google для Eclipse
-
Google App Engine Java SDK 1.6.3.1
Просто запустил простой пример Struts2 hello world, когда при доступе к классу действия выдается ошибка «Ошибка: результат« ноль »не найден» как в локальной разработке, так и в реальной рабочей среде GAE.
Решение
OGNL выполняет некоторую проверку безопасности, которая не поддерживается в GAE. Чтобы сделатьStruts 2 works on GAE environment, вам нужно создать слушателя вweb.xml
и установить для диспетчера безопасности OGNL значение null.
OgnlRuntime.setSecurityManager(null);
Полный пример.
package com.example.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import ognl.OgnlRuntime; public class Struts2ListenerOnGAE implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener { public void contextInitialized(ServletContextEvent sce) { OgnlRuntime.setSecurityManager(null); } @Override public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub } @Override public void sessionCreated(HttpSessionEvent arg0) { // TODO Auto-generated method stub } @Override public void sessionDestroyed(HttpSessionEvent arg0) { // TODO Auto-generated method stub } @Override public void attributeAdded(HttpSessionBindingEvent arg0) { // TODO Auto-generated method stub } @Override public void attributeRemoved(HttpSessionBindingEvent arg0) { // TODO Auto-generated method stub } @Override public void attributeReplaced(HttpSessionBindingEvent arg0) { // TODO Auto-generated method stub } }
Файл: web.xml
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* com.example.listener.Struts2ListenerOnGAE