Struts 2 на GAE - Ошибка: результат "null" не найден

Struts 2 на GAE - ошибка: результат "null" не найден

проблема

Разработка Struts2 на Google App Engine, в следующей среде.

  1. Struts 2.3.1.2

  2. JDK 1.6

  3. Eclipse 3.7 + плагин Google для Eclipse

  4. Google App Engine Java SDK 1.6.3.1

Просто запустил простой пример Struts2 hello world, когда при доступе к классу действия выдается ошибка «Ошибка: результат« ноль »не найден» как в локальной разработке, так и в реальной рабочей среде GAE.

struts2 on gae - result null error

Решение

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