본문 바로가기

기술자료/Web

[Google Apps Engine] 프로젝트 생성하기.

원본글 : http://code.google.com/appengine/docs/java/gettingstarted/creating.html


App Engine Java 응용 프로그램은 Java 서블릿 표준을 이용하여 웹 서버 환경과 연동합니다.

컴파일 된 클래스, JAR, 정적 파일 및 설정 파일들을 포함한 응용 프로그램 파일들은

WAR 라는 자바 웹 응용 프로그램 표준 Layout을 이용하여 디렉터리 별로 정리되어 저장되게 됩니다.

이 WAR 디렉터리 구성은 다른 어떤 Java 웹 응용 프로그램 구성에서도 동일하게 적용됩니다.

( 애석하게도 SDK 에서는 이 WAR 저장 방식 파일에 대해서 지원되지 않습니다. )


프로젝트 디렉터리

현재 이 튜토리얼에서는 모든 프로젝트 파일들은 Guestbook/이라는 이름으로 된 단 하나의 디렉터리 안에 담겨 있습니다. src/ 라는 하위 디렉터리에는 Java 소스 코드들이 담겨 있으며, war/ 라는 하위 디렉터리에는 WAR 포맷에 맞게 구성된 응용 프로그램들이 담겨 있습니다.

Java 소스 파일들이 컴파일 되면 war/의 위치에 컴파일 된 파일들이 담기게 해야 합니다.


완전한 프로젝트 디렉터리는 다음과 같은 형태가 되어 있어야 합니다.

Guestbook/
  src/
    ...자바소스 파일들...
    META-INF/
      ...기타 설정 파일들...
  war/
    ...JSPs, 이미지, 데이터 파일...
    WEB-INF/
      ...응용 프로그램 설정 내용...
      lib/
        ...라이브러리 JAR들...
      classes/
        ...컴파일된 클래스들...

Eclipse 에서는 툴바에서 New Web Application Project 버튼()을 클릭하여 새로운 프로젝트를 생성하기만 하시면 됩니다. 새 프로젝트에 대한 설정 창에서 “Project Name”에는 Guestbook 을, “Package”에는 guestbook 을 넣어주시고 “Use Google Web Toolkit”의 체크를 풀어주시고, 대신 “Use Google App Engine”에 체크해주시기 바랍니다. 그러면 Eclipse의 Plugin에서 제공하는 마법사를 통해 위에서 언급한 디렉토리 구조를 구성하고 필요한 기본적인 파일들을 배치하게 됩니다.


SDK안에 포함된 새 프로젝트 템플릿을 직접 복사해서 구성하실 수도 있습니다.
이 템플릿은 appengine-java-sdk/demos/new_project_template/ 디렉터리에 위치해 있습니다.


서블릿 클래스

App Engine Java 응용 프로그램에서는 the Java Sevlet API를 이용하여 웹 서버와 직접적인 연결을 합니다. HTTP 서블릿은 응용 프로그램 클래스로 웹에서의 요청에 대한 응답 프로세스를 할 수 있습니다.
이런 요청 응답용 클래스는 javax.servlet.GenericServlet 클래스

또는 javax.servlet.http.HttpServlet 클래스를 상속 받은 클래스로 구성하게 됩니다.

예제로 구성된 방명록 프로젝트는 하나의 서블릿 클래스로 시작되어 있으며

단순한 서블릿을 사용하여 메시지를 출력하게 됩니다.


이 파일은 src/guestbook/ 디렉터리에 GuestbookServlet.java 파일로 다음과 같이 구성되어 있습니다.

package guestbook;

import java.io.IOException;
import javax.servlet.http.*;

public class GuestbookServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, world");
    }
}

web.xml 파일에 대해

웹서버에서 요청을 받았을 때, 서블릿 클래스에서는 “웹 응용 프로그램 배치 설명자(web application deployment descriptor)” 라고 불리는 구성 파일을 사용하여 요청된 서블릿 클래스을 선택하게 됩니다.

이 파일은 보통 web.xml 이라고 이름 지어지며, WAR 파일 안에 있는 war/WEB-INF/ 디렉토리에 담기게 됩니다. WEB-INF/ 와 web.xml은 서블릿 규칙에 따라 이름 지어지고 위치된 것입니다.

war/WEB-INF/ 디렉토리에 있는 web.xml 내용을 대략적으로 보면 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
    <servlet>
        <servlet-name>guestbook</servlet-name>
        <servlet-class>guestbook.GuestbookServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>guestbook</servlet-name>
        <url-pattern>/guestbook</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>/index.html</welcome-file>
    </welcome-file-list>
</web-app>


Eclipse에서 해당 XML을 열면 아래와 같이 보입니다.

이 web.xml 파일은 서블릿인 guestbook에 대한 선언을 담게 되며,

/guestbook 이라는 URL path와 연결되게 끔 구성하는 것을 보여주고 있습니다.

응용 프로그램의 WAR 안에 디렉토리 경로 상에서 없는 경로를 이용하여 서브릿과 연결하여,

외부에서는 전혀 다른 형태의 URL로 접근할 수 있도록 해줍니다.

하지만, 해당 하는 경로에 index.html 이 있다면, 서블릿 설정보다 index.html을 먼저 보여주게 됩니다.


appengin-web.xml 파일에 대해

App Engine은 추가적은 설정 파일이 하나 더 있습니다.

이 파일은 응용 프로그램을 어떻게 배포하고, 실행할지에 대해서 나타내는 설정 파일입니다.

반드시 이 파일은 web.xml 이 있는 WEB-INF/ 디렉토리 안에 위치해야 하며,

그 이름은 appengine-web.xml 이여야 합니다.

그 안에는 응용 프로그램의 등록 ID( Eclipse에서는 언제든지 채울 수 있도록 빈 ID를 생성하여 제공합니다. ), 정적 파일(이미지나 CSS 등등), 리소스 파일(JSP 파일이나, 기타 응용 프로그램 데이터)과 같이 명시적으로 나타낼 내용들을 담고 있습니다 .


war/WEB-INF/ 디렉터리 안에 있는 appengine-web.xml 이라는 파일은 다음과 같이 되어 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application></application>
    <version>1</version>
</appengine-web-app>

appengine-web.xml 에는 App Engine에 대해 설명하는 내용을 담고 있지만,

서블릿 표준에 포함되는 내용은 아닙니다.

SDK에 보시면 이 파일의 형식에 대해 명기되어 있는 XML 스키마 파일을

appengine-java-sdk/docs 안에서 찾을 수 있습니다.

이 파일에 대한 자세한 설명은 Configuring an App를 보시기 바랍니다.


프로젝트 실행하기.

App Engine SDK 에는 여러분이 만든 응용 프로그램을 테스트 할 수 있도록

제공되는 웹서버 응용 프로그램을 포함하고 있습니다.

이 서버는 sandbox 제약영역, 저장소, 기타 서비스 등

각종 App Engine 환경에서 제공되는 기본적인 기능들을 모두 제공합니다.


이 웹서버는 Eclipse의 Debugger로 간단하게 시작할 수 있습니다.

Run 메뉴 안에 있는 Debug As > Web Application을 선택하기만 하면 됩니다. 

디버그 관련된 설정 방법은 Google Plugin in Eclipse 사용하기를 참고하시기 바랍니다.



응용 프로그램 테스트 하기.

서버가 시작되면, 여러분의 브라우저를 이용하여 다음 URL을 입력해보시기 바랍니다.

http://localhost:8080/guestbook

(간혹 설정 상으로 http://localhost:9999/guestbook 일 수도 있습니다. 
  포트 번호는 각자 확인해보시기 바랍니다. )
서버에서 서블릿을 호출하면, 브라우저 상에 메시지를 출력할 것입니다.


다음은…

여기 까지 오셨다면 기본적인 App Engine 응용 프로그램을 성공적으로 제작하신 것입니다!.
이제 이 내용을 배포만 하시면 전세계의 모든 사용자들과 권리를 누리며 나누실 수 있습니다.
이 응용 프로그램은 모든 사용자에 대한 일반적인 인사 내용을 보여줍니다.


이제부터는 인사말을 커스터마이징 하여,

Google Account로 접속한 사용자들에 대한 별도의 인사말을 만들어보도록 하겠습니다.


다음은, User Service를 사용하기 에서 계속 됩니다.