Struts 2 sur GAE - Erreur: résultat "null" introuvable

Struts 2 sur GAE - Erreur: résultat «nul» introuvable

Problème

Développement de Struts2 sur Google App Engine, dans l'environnement suivant.

  1. Struts 2.3.1.2

  2. JDK 1.6

  3. Eclipse 3.7 + Plugin Google pour Eclipse

  4. SDK Java de Google App Engine 1.6.3.1

Je viens de commencer un exemple simple de Struts2 hello world, lorsque vous accédez à la classe d'action, cliquez sur l'erreur «Erreur: résultat« nul »introuvable», à la fois dans le développement local et dans l'environnement GAE de production réelle.

struts2 on gae - result null error

Solution

OGNL effectue une vérification de sécurité, qui n'est pas prise en charge dans GAE. Pour créerStruts 2 works on GAE environment, vous devez créer un écouteur dansweb.xml et définir le gestionnaire de sécurité OGNL sur null.

OgnlRuntime.setSecurityManager(null);

Exemple complet.

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

    }

}

Fichier: web.xml




    
       struts2
       
             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
           
    

    
        struts2
        /*
    

    
        com.example.listener.Struts2ListenerOnGAE