Exemple Google App Engine + JSF 2

Exemple Google App Engine + JSF 2

Dans ce didacticiel, nous vous montrerons comment développer et déployer une application Web JSF 2.0 dans un environnement Google App Engine (GAE).

Outils et technologies utilisés:

  1. JDK 1.6

  2. Eclipse 3.7 + Plugin Google pour Eclipse

  3. SDK Java de Google App Engine 1.6.3.1

  4. JSF 2.1.7

Note
Cet exemple va réutiliser ceJSF 2.0 hello world example, le modifier et le fusionner avec ceGAE + Java example.

1. Nouveau projet d'application Web

Dans Eclipse, créez un nouveau projet d'application Web, nommé «JSFGoogleAppEngine».

generate a new web application GAE project

«Google Plugin for Eclipse» générera un exemple de structure de projet GAE.

2. Dépendances JSF 2

Pour utiliser JSF 2 en GAE, vous avez besoin des bocaux suivants

  1. jsf-api-2.1.7.jar

  2. jsf-impl-2.1.7.jar

  3. el-ri-1.0.jar

Copiez-le et placez-le dans le dossier «war/WEB-INF/lib».

gae jsf2 dependency libraries

Faites un clic droit sur le dossier du projet, sélectionnez «Properties». Sélectionnez l'onglet «Java Build Path» → «Libraries», cliquez sur le bouton «Add Jars» et sélectionnez les bocaux ci-dessus.

gae jsf2 java build path

Note
Vous devez mettre ceel-ri-1.0.jar, sinon vous obtiendrez le message d'erreur -Unable to instantiate ExpressionFactory ‘com.sun.el.ExpressionFactoryImpl’.

3. JSF Managed bean

3.1 Delete plugin generated JSFGoogleAppEngineServlet.java, you don’t need this.

3.2 Create a managed bean.

Fichier: src / com / exemple / HelloBean.java

package com.example;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import java.io.Serializable;

@ManagedBean
@SessionScoped
public class HelloBean implements Serializable {

    private static final long serialVersionUID = 1L;

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

3.3 Create a new WebConfiguration.java.

JSF 2 utilise "javax.naming.InitialContext" qui n'est pas pris en charge dans GAE.

Pour résoudre ce problème, vous devez obtenir une copie du code source du JSF, cloner lesWebConfiguration.java, commenter les méthodes qui utilisent la classe «javax.naming.InitialContext», le mettre dans «src/com/sun/faces/comfig/WebConfiguration.java». Maintenant, votre classeWebConfiguration.java nouvellement créée surchargera lesWebConfiguration.java d'origine.

Note
Récupère lessource code of the WebConfiguration.java complets.

Je ne pense pas que l'équipe GAE inscrira sur la liste blanche ce pot, j'espère simplement que l'équipe de JSF pourra résoudre ce problème dans la prochaine version.

4. Pages JSF

4.1 Create hello.xhtml page, accept a user input and pass it to helloBean.

Fichier: war / hello.xhtml





    GAE + JSF


    

Google App Engine + JSF 2.0 example - hello.xhtml

4.2 Create welcome.xhtml page, display the user input from hellobean.

Fichier: war / welcome.xhtml





    GAE + JSF


    

Google App Engine + JSF 2.0 example - welcome.xhtml

Welcome #{helloBean.name}

4.3 Delete the plugin generated index.html file, you don’t need this.

5. web.xml

Mettez à jour web.xml, intégrez JSF 2.

Fichier: web.xml



    JavaServerFaces

    
    
        javax.faces.STATE_SAVING_METHOD
        client
    


    
    
        javax.faces.PROJECT_STAGE
        Development
    

    
    
        faces/hello.xhtml
    

    
    
        Faces Servlet
        javax.faces.webapp.FacesServlet
        1
    

    
    
        Faces Servlet
        /faces/*
    
    
        Faces Servlet
        *.jsf
    
    
        Faces Servlet
        *.faces
    
    
        Faces Servlet
        *.xhtml
    

Note
GAE ne prend pas en charge la gestion de l'état côté serveur, vous devez donc définir «javax.faces.STATE_SAVING_METHOD» sur «client», pour éviter ce «http: // www.example.com/google-app-engine/gae-jsf-view-hello-xhtml-could-not-be-restored/[View /hello.xhtml n'a pas pu être restauré] »message d'erreur dans l'environnement de production GAE.

6. Activer la session dans GAE

Mettez à jourappengine-web.xml, activez le support de session, JSF en a besoin.
_
Fichier: appengine-web.xml_


  
  1

    true

7. Structure du répertoire

Examinez la structure finale du répertoire.

final directory structure

8. Exécuter en local

Faites un clic droit sur le projet, exécutez en tant que «Application Web».

local output

Cliquez sur le bouton.

local output

10. Déployer sur GAE

Mettez à jour le fichierappengine-web.xml, ajoutez votre ID d'application App Engine.

Fichier: appengine-web.xml


  example-jsf2gae
  1

    true

Sélectionnez le projet, cliquez sur l'icône Google, «Deploy to App Engine».

deploy on GAE

gae production output

Télécharger le code source

En raison de la grande taille du fichier, tous les fichiers JSF et GAE sont exclus.

Télécharger -JSF2-GoogleAppEngine-Example.zip (42 KB)