Пример Google App Engine + JSF 2

Пример Google App Engine + JSF 2

В этом руководстве мы покажем вам, как разрабатывать и развертывать веб-приложение JSF 2.0 в среде Google App Engine (GAE).

Используемые инструменты и технологии:

  1. JDK 1.6

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

  3. Google App Engine Java SDK 1.6.3.1

  4. JSF 2.1.7

Note
Этот пример будет повторно использовать этотJSF 2.0 hello world example, модифицировать его и объединить с этимGAE + Java example.

1. Новый проект веб-приложения

В Eclipse создайте новый проект веб-приложения с именем «JSFGoogleAppEngine».

generate a new web application GAE project

«Плагин Google для Eclipse» создаст образец структуры проекта GAE.

2. JSF 2 Зависимости

Чтобы использовать JSF 2 в GAE, вам нужны следующие фляги

  1. jsf-api-2.1.7.jar

  2. jsf-impl-2.1.7.jar

  3. el-ri-1.0.jar

Скопируйте и поместите в папку «war/WEB-INF/lib».

gae jsf2 dependency libraries

Щелкните правой кнопкой мыши папку проекта и выберите «Properties». Выберите «Java Build Path» → вкладку «Libraries», нажмите кнопку «Add Jars» и выберите указанные выше банки.

gae jsf2 java build path

Note
Вам нужно указать этотel-ri-1.0.jar, иначе вы получите сообщение об ошибке -Unable to instantiate ExpressionFactory ‘com.sun.el.ExpressionFactoryImpl’.

3. JSF Управляемый боб

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

3.2 Create a managed bean.

Файл: src / com / example / 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 использует «javax.naming.InitialContext», который не поддерживается в GAE.

Чтобы решить эту проблему, вам нужно получить копию исходного кода JSF, клонироватьWebConfiguration.java, комментировать методы, которые используют класс «javax.naming.InitialContext», поместить его в «src/com/sun/faces/comfig/WebConfiguration.java». Теперь ваш вновь созданный классWebConfiguration.java будет перегружать исходныйWebConfiguration.java.

Note
Получить полныйsource code of the WebConfiguration.java.

Я не думаю, что команда GAE внесет этот список в белый список, просто надеюсь, что команда JSF сможет это исправить в будущем выпуске.

4. JSF Pages

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

Файл: 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.

Файл: 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

Обновите web.xml, интегрируйте JSF 2.

Файл: 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 не поддерживает управление состоянием на стороне сервера, поэтому вам необходимо определить «javax.faces.STATE_SAVING_METHOD» до «client», чтобы избежать этого «http: // www.example.com/google-app-engine/gae-jsf-view-hello-xhtml-could-not-be-restored/[View /hello.xhtml не может быть восстановлен] »сообщение об ошибке в производственной среде GAE.

6. Включить сессию в GAE

Обновитеappengine-web.xml, включите поддержку сеанса, это необходимо JSF.
_
Файл: appengine-web.xml_


  
  1

    true

7. Структура каталогов

Просмотрите окончательную структуру каталогов.

final directory structure

8. Беги по местному

Щелкните правой кнопкой мыши по проекту, запустите как «Веб-приложение».

local output

Нажмите на кнопку.

local output

10. Развернуть на GAE

Обновите файлappengine-web.xml, добавьте свой идентификатор приложения App Engine.

Файл: appengine-web.xml


  example-jsf2gae
  1

    true

Выберите проект, щелкните значок Google, «Deploy to App Engine».

deploy on GAE

gae production output

Скачать исходный код

Из-за большого размера файла все банки JSF и GAE исключаются.

Скачать -JSF2-GoogleAppEngine-Example.zip (42 КБ)