Google App Engine - Java 개발 환경 설정 문서 원본 보기
←
Google App Engine - Java 개발 환경 설정
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
[[Google App Engine]]의 Java 개발 환경 설정 방법을 정리 합니다. ==GAE for Java 개발 환경== Google App Engine(GAE) for Java 개발 환경은 2009년 4월 Java 개발자에게 공개 되었다. 여기서는 Eclipse를 활용하여 GAE for Java 개발 환경을 구성하고 간단한 GAE Application을 작성해 배포해 보자. ===GAE에 회원 가입=== *Google App Engine에서 가입 한다. :*[https://appengine.google.com/ GAE 사이트]에 접속 한다. :*Google 계정으로 GAE에 가입 한다. ::*Google 계정이 있더라도 GAE에서 사용할 수 있도록 가입 절차를 수행 하여야 한다. ===GAE에서 Application 생성=== *GAE로 로그인한 후 "Create an Application" 버튼을 누른다. [[그림:GAE install 002.png|600px]] *"Country and Carrier"를 "Other(Not Listed)"를 선택 한다. :*"Mobile Number"에 자신의 핸드폰 전화 번호를 입력 한다. (예, +82 10 xxxx xxxx) :*"Send" 버튼을 누른다. [[그림:GAE install 003.png|600px]] *"Enter Account Code"에 핸드폰으로 전송되어 온 인증 코드를 입력하고 "Send"를 누른다. [[그림:GAE install 004.png|600px]] *"Application Identifier"에 자신의 애플리케이션을 구분을 구분자를 입력 한다. ::*새로 생성되는 애플리케이션은 여기에 입력한 이름의 URL을 가진다. (예, smartyandroid.appspot.com) ::*위 URL을 향후 자신의 도메인에 있는 URL로 변경할 수 있다. :*"Application Title"에 자신의 애플리케이션 제목을 입력 한다. :*"I accept these terms."를 체크하고 "Create Application"을 누른다. [[그림:GAE install 005.png|600px]] *[https://appengine.google.com/ GAE 사이트]에 로그인하면 아래와 같이 등록된 애플리케이션을 확인할 수 있다. [[그림:GAE install 006.png|600px]] *[https://appengine.google.com/ GAE 사이트]에서 애플리케이션을 선택하면 아래와 같은 관리 화면이 표시 된다. [[그림:GAE install 007.png|600px]] ===Eclipse 개발 환경 설정=== *Google Plugin for Eclipse 설치 :*Eclipse 3.5에서 "Help -> Install New Software..." 메뉴를 선택 한다. :*"Work with:"에 http://dl.google.com/eclipse/plugin/3.5 주소를 입력하고 엔터키를 누른다. :*목록에 표시되는 것을 모두 선택하고 설치를 진행 한다. [[그림:GAE install 001.png|600px]] :*Google Plugin for Eclipse 설치 확인, 메뉴 아이콘에서 확인 ::*파란 g 아이콘 : App Engine for Java 프로젝트 작성 마법사 ::*빨간 G 아이콘 : GWT 프로젝트 컴파일 ::*소형 제트기 : App Engine 프로젝트 deploy ::[[그림:GAE_install_008.png]] :*"Window -> Preferences -> Google -> App Engine" 메뉴가 생성됨 :*참조: [http://code.google.com/intl/ko-KR/eclipse/docs/download.html Google Plugin for Eclipse 설치 가이드] ===GAE Application 개발=== *Eclipse에서 Application 생성 :*파란 g 아이콘(App Engine for Java 프로젝트 작성 마법사)을 눌러 GAE Application을 생성 한다. ::*Project name : GAE 프로젝트의 이름을 입력 한다. ::*Package : 사용할 패키지명을 입력 한다. [[그림:GAE install 009.png]] *GAE Application의 컴파일 환경 조정 :*Google App Engine은 JDK 1.5 버전 이상을 지원 합니다. 컴파일 오류가 발생할 경우 아래와 같이 작업 합니다. :*좌측의 "Package Explorer"에서 방금 생성한 GAE Application을 선택하여 오른쪽 마우스를 누른다. :*"Properties ->Java Compiler"를 선택 한다. :*"Enable project specific settings"을 체크 한다. :*"Compiler compliance level"에서 "1.5" 또는 "1.6"을 선택 한다. [[그림:GAE install 010.png]] *GAE Application의 컴파일 :*"빨간 G 아이콘"을 눌러 GAE Application을 컴파일 한다. *Eclipse에서 Application을 GAE로 deploy :*소형 제트기 아이콘(App Engine 프로젝트 deploy)을 누른다. :*GAE에 deploy하기 위해 접속 Email과 Password를 입력한다. [[그림:GAE install 011.png]] :*GAE에서 등록한 "Application Identifier"를 등록 한다. ::*"App Engine project setting..."을 클릭 한다. ::*"Application ID"에 GAE에서 등록한 "Application Identifier"를 등록 하고 "OK" 버튼을 누른다. [[그림:GAE install 012.png]] :*"Deploy" 버튼을 누르면 GAE Application이 컴파일 되고 deploy 된다. [[그림:GAE install 013.png]] *GAE Application 확인 :*http://smartyandroid.appspot.com/ 에 접속하여 서비스를 확인 한다. [[그림:GAE install 014.png]] ===JSP 사용 환경 설정=== *오류 메시지 :*Your Web Application Project must be configured to use a JDK in order to use JSPs. :*원인 : JSP를 사용하기 위해서는 JDK에 포함되어 있는 javac를 사용할 수 있어야 한다. 그러므로 JRE 대신에 JDK를 사용하도록 변경 하여야 한다. *조치 방법 :*"Window -> Preferences -> Java -> Installed JREs" 메뉴를 선택 한다. :*등록된 JRE를 선택하고 "Edit..." 버튼을 누른다. :*JRE 폴더를 JDK 폴더로 변경 한다. ===Eclipse에서 GAE 실행=== *오른쪽 마우스를 누른다. *"Run As -> Web Application"메뉴를 선택 한다. *http://localhost:8888/ 로 접속하여 사용 한다. *http://localhost:8888/_ah/admin 로 관리자 콘솔에 접속할 수 있다. ===개발 환경에서 GAE 실행=== 위 "Eclipse에서 GAE 실행"을 권장 합니다. <br> GAE for Java 애플리케이션 개발을 위해서 매번 GAE로 deploy하여 테스트 하는 것은 여러가지 면에서 불편하다. GAE for Java를 위한 개발 환경을 로컬 환경에서 구현해 보자.<br> Google App Engine의 Google Plugin for Eclipse를 설치하면, Eclipse 설치 디렉토리 아래 $ECLIPSE_HOME/plugins/com.google.appengine.eclipse.sdkbundle.[버전]/appengine-java-sdk-[버전]/ 폴더에 appengine-java-sdk가 설치 된다. (예, D:/appl/eclipse/plugins/com.google.appengine.eclipse.sdkbundle.1.3.3_1.3.3.v201004231111/appengine-java-sdk-1.3.3.1) appengine-java-sdk 아래 bin/dev_appserver.cmd 에 애플리케이션의 war 폴더 위치를 전달하여 실행하면 GAE 개발 서비가 실행 된다.<br> *개발 서버 실행 및 종료 :*아래와 같은 내용으로 runDemo.cmd 파일을 생성 한다. ::*appengine-java-sdk 아래의 bin/dev_appserver.cmd를 실행하고 인수로 실행하고자 하는 애플리케이션의 war 폴더를 전달한다. set APPENGINE_HOME=D:/appl/eclipse/plugins/com.google.appengine.eclipse.sdkbundle.1.3.3_1.3.3.v201004231111/appengine-java-sdk-1.3.3.1 set APPLICATION_HOME=C:/www_project/eclipseWorkspace/SmartyAndroid %APPENGINE_HOME%/bin/dev_appserver.cmd %APPLICATION_HOME%/war :*runDemo.cmd 파일을 실행 한다. :*종료를 원할 경우 Ctrl_C 를 누른다. *브라우저에서 개발 서버 접속 :*http://localhost:8080/ 으로 접속한다. *참고 문헌 :*[http://code.google.com/intl/ko-KR/appengine/docs/java/tools/devserver.html The Java Development Server] ==GAE/J 개발 환경 설정== [[Google App Engine]] for Java에서 Java에서 많이 사용하는 [[Spring]] framework를 설정하는 방법을 정리 합니다. ===GAE/J 개발 환경 개요=== {|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- |width="25%" valign="top" align="center" style="background-color:green; color:white;"|Browse |width="25%" valign="top" align="center" style="background-color:green; color:white;"|View |width="25%" valign="top" align="center" style="background-color:green; color:white;"|Control |width="25%" valign="top" align="center" style="background-color:green; color:white;"|Model |- |valign="top"| *[[HTML|HTML 4.01]] ([http://www.w3.org/TR/REC-html40/ 사이트]) *[[jQuery|jQuery 1.4.2]] ([http://jquery.com/ 사이트]) *[[FreeMarker]] ([http://freemarker.org/ 사이트]) |valign="top"| *[[DWR]] ([http://directwebremoting.org/ 사이트]) :*[[DWR#JSON_Simple|JSON Simple]] ([http://code.google.com/p/json-simple/ 사이트]) *[[Sitemesh]] ([http://www.opensymphony.com/sitemesh/ 사이트]) *[[Struts|Struts2]] ([http://struts.apache.org/ 사이트]) :*Resource Bundle (다국어 지원) |valign="top"| *Logging :*[http://commons.apache.org/ Commons-logging 1.0.4] *File IO :*[http://commons.apache.org/ Commons-io 1.3.2] :*[http://commons.apache.org/ Commons-fileupload 1.2.1] *[[Spring|Spring 3.0.4]] ([http://www.springsource.org/ 사이트]) :*DI, AOP |valign="top"| *[[Google App Engine]] ([http://code.google.com/intl/en/appengine/ 사이트]) :*[http://code.google.com/intl/de/appengine/docs/java/memcache/ Memcache] :*[http://code.google.com/intl/de/appengine/docs/java/blobstore/ Blobstore] :*[http://code.google.com/intl/de/appengine/docs/java/gettingstarted/usingdatastore.html JDO 2.3] :*[http://code.google.com/intl/en/appengine/docs/java/datastore/ Google Bigtable] |- |valign="top"| *[[HTML5]], [[CSS3]] *[http://jqueryui.com/ jQuery UI] *JSP + Tag Library *[[Velocity]] ([http://velocity.apache.org/ 사이트]) :*[http://commons.apache.org/ commons-beanutils 1.8.3] :*[http://commons.apache.org/ commons-collections 3.2.1] :*[http://commons.apache.org/ commons-digester 2.0] :*[http://commons.apache.org/ commons-lang 2.5] |valign="top"| |valign="top"| |valign="top"| *[[iBatis]] ([http://ibatis.apache.org/ 사이트]) *[[Hibernate]] |} *[http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1 Google App Engine for Java] : GAE와 호환되는 라이브러리를 설명 한다. ===appengine-web.xml=== *세션 사용 허용 :*[[FreeMarker]]와 [[Velocity]]에서 사용함 <sessions-enabled>true</sessions-enabled> *로깅 설정 파일 위치 <system-properties> <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> </system-properties> ===HTML=== *[[HTML|HTML 4.01]] <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="JavaScript"> <meta http-equiv="Content-Style-Type" content="text/css"> </head> </html> *[[HTML5]] <!DOCTYPE html> <html lang="ko"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="JavaScript"> <meta http-equiv="Content-Style-Type" content="text/css"> </head> </html> *JSP <%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="c" uri="/WEB-INF/tld/c.tld"%> <%@ taglib prefix="fmt" uri="/WEB-INF/tld/fmt.tld"%> <%@ taglib prefix="fn" uri="/WEB-INF/tld/fn.tld"%> <%@ taglib prefix="sql" uri="/WEB-INF/tld/sql.tld"%> ===jQuery=== *[[jQuery]] <script type="text/JavaScript" src="/js/jquery-1.4.2.js"></script> ===SiteMesh=== *[[Sitemesh#설치 가이드|SiteMesh 2.4.2]] 참조 :*sitemesh-2.4.2.jar :*sitemesh-decorator.tld, sitemesh-page.tld ===Freemarker=== *freemarker-2.3.16.jar <servlet> <servlet-name>freemarker</servlet-name> <servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class> <init-param> <param-name>TemplatePath</param-name> <param-value>/</param-value> </init-param> <init-param> <param-name>default_encoding</param-name> <param-value>UTF-8</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>freemarker</servlet-name> <url-pattern>*.ftl</url-pattern> </servlet-mapping> *freemarker.core.TextBlock.java 재생성 *Freemarker에서 JSP TagLibrary 사용 방법 :*struts2-core-2.2.1.jar 파일의 압축을 풀어 /META-INF/struts-tags.tld 파일을 /WEB-INF/tld/struts-tags.tld 로 복사 한다. <#assign s=JspTaglibs["/WEB-INF/tld/struts-tags.tld"] /> <#assign c=JspTaglibs["/WEB-INF/tld/c.tld"] /> <#assign fmt=JspTaglibs["/WEB-INF/tld/fmt.tld"] /> <#assign fn=JspTaglibs["/WEB-INF/tld/fn.tld"] /> <#assign sql=JspTaglibs["/WEB-INF/tld/sql.tld"] /> ===Velocity=== *velocity-1.6.4.jar, velocity-tools-2.0.jar <servlet> <servlet-name>velocity</servlet-name> <servlet-class>com.opensymphony.module.sitemesh.velocity.VelocityDecoratorServlet</servlet-class> <init-param> <param-name>TemplatePath</param-name> <param-value>/</param-value> </init-param> <init-param> <param-name>default_encoding</param-name> <param-value>UTF-8</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> */WEB-INF/velocity.properties ===Struts2=== *[[Struts#GAE용 Struts 환경 설정|GAE용 Struts 환경 설정]] 참조 *참고 문헌 :*[http://whyjava.wordpress.com/2009/08/30/creating-struts2-application-on-google-app-engine-gae/ Creating Struts2 application on Google App Engine (GAE)] :*[http://whyjava.wordpress.com/2009/10/04/file-upload-on-google-app-engine-using-struts2/ File Upload on Google App Engine using struts2] ===Apache Common=== *commons-logging-1.0.4.jar *commons-fileupload-1.2.1.jar *commons-io-1.3.2.jar *commons-beanutils-1.8.3.jar *commons-collections-3.2.1.jar *commons-digester-2.0.jar *commons-lang-2.5.jar ===JSON Simple=== *json_simple-1.1.jar ===Spring=== */WEB-INF/web.xml <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/spring-common.xml, /WEB-INF/classes/spring-qrcode.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> ===DWR=== *dwr.jar */WEB-INF/web.xml <servlet> <servlet-name>dwr</servlet-name> <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> *Spring 설정 <dwr:configuration> <dwr:convert type="exception" class="java.lang.Exception"></dwr:convert> <dwr:convert type="bean" class="java.lang.StackTraceElement"></dwr:convert> </dwr:configuration> <bean id="sampleDwrService" class="com.jopenbusiness.gae.qrcode.service.SampleDwrService" scope="prototype"> <dwr:remote javascript="SampleDwrService"></dwr:remote> </bean> *HTML에서 사용 방법 <script type="text/javascript" src="/dwr/engine.js"> </script> <script type="text/javascript" src="/dwr/util.js"> </script> <script type="text/javascript"> function errorHandler (errorString, exception) { var msg = ""; if ((errorString) && (errorString != "") && (0 < errorString.length)){ msg = errorString; } else { msg = "DWR error occurs."; } window.alert(msg); } dwr.engine.setErrorHandler(errorHandler); <script type="text/javascript" src="/dwr/interface/SampleDwrService.js"> </script> <script type="text/javascript"> function sampleCallback(result) { var data; var rtstr = []; window.alert(result); eval("data = " + result); rtstr.push("code : [" + data.code + "]"); rtstr.push("msg : [" + data.msg + "]"); rtstr.push("type : [" + data.type + "]"); rtstr.push("html : [" + data.html + "]"); window.alert(rtstr.join(", ")); } function testDWR() { SampleDwrService.hello("ghkim", sampleCallback); } </script> *Java 프로그램 package com.jopenbusiness.gae.qrcode.service; public class SampleDwrService { public String hello(String name) { return "Hello, " + name; } } ===PHP 개발 환경=== *Java 기반의 PHP 인터프리터인 [http://www.caucho.com/resin-3.0/quercus/ Quercus]을 사용하여 PHP 개발 환경을 구성 한다. *참고 문헌 :*[http://www.ibm.com/developerworks/kr/library/wa-quercus/index.html Java 기반 PHP 프레임워크 Quercus 소개, 2009.10] :*[http://techblog.aasisvinayak.com/deploy-php-applications-in-google-app-engine/ Deploy PHP applications in Google App Engine] ===RESTfull=== *REST (REspresentational State Transfer) :*URI를 통해 Resource를 요청하고 이를 통해 표현 상태의 변경을 유발하는 통신 Architecture :*REST 방식의 웹서비스는 세션을 사용하지 않습니다. :*RESTfull : REST 개변에 충실하게 구현된 웹 Application과 구조 :{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- |width="20%" align="center" valign="middle" style="background-color:#eee;"|Resource |width="20%" align="center" valign="middle" style="background-color:#eee;"|GET<br>조회 |width="20%" align="center" valign="middle" style="background-color:#eee;"|PUT<br>수정 |width="20%" align="center" valign="middle" style="background-color:#eee;"|POST<br>등록 |width="20%" align="center" valign="middle" style="background-color:#eee;"|DELETE<br>삭제 |- |align="center" valign="middle"|Collection URI<br>http://localhost/resources |align="center" valign="middle"|자료 목록 반환 |align="center" valign="middle"|전체 자료 수정 |align="center" valign="middle"|새로운 자료 생성 |align="center" valign="middle"|전체 자료 삭제 |- |align="center" valign="middle"|Element URI<br>http://localhost/resources/123 |align="center" valign="middle"|지정한 자료 반환 |align="center" valign="middle"|지정한 자료 수정/생성 |align="center" valign="middle"|새로운 자료 생성 |align="center" valign="middle"|지정한 자료 삭제 |} *JAX-RS :*JSR-311, Java Annotation API :*Java API for RESTfull Web Services (2007 ~) :*구현체 ::*[http://www.restlet.org/ Restlet] : [http://namoda.springnote.com/pages/5013839 RESTful, 2010.1] ::*[https://jersey.dev.java.net/ Jersey] ::*[http://cxf.apache.org/ Apache CXF] ::*[http://www.jboss.org/resteasy RESTEasy] *JAX-RS Annotations :*@Path : 리소스에 대한 접근 경로 :*@GET, @POST, @PUT, @DELETE : Http Request Method :*@Produces : 반환하는 데이터의 미디어 타입 (XML, JSON) :*@Consumes : 요청 데이터의 미디어 타입 :*URI matrix parameter ::*@QueryParam : http://localhost/member?no=12&name=kim ::*@MatrixParam : http://localhost/member;no=12;name=kim ::*@PathParam : http://localhost/member/no/12/name/kim :*Parameter type ::*public static valueOf(String), public static fromString(String) ::*List<T>, Set<T>, SortedSet<T> *JAX-RS Sample :*http://localhost/widgets?offers=4735 @Path("widgets") @Produces("application/xml") public class WidgetsResource { @GET @Path("offers") public WidgetList getDiscounted() { } //--- Sub-resource Method, 요청을 직접 처리 @GET @Path("offers/{id}") @Consumes("application/json") public Widget findWidget(@QueryParam("id") String id) { } @GET @Produces("text/html") public String getAsHtml() { } //--- Sub-resource Locator, 요청을 처리할 객체를 반환 //--- @GET과 같은 Request Method 지정 어노테이션을 반드시 생략할 것 @Path("offers/{id}") public WidgetResource findWidget(@QueryParam("id") String id) { return new WidgetResource(id); } } public class WidgetResource { public WidgetResource(String id) { } @Get public Widget getDetails() { } } *Restlet 설정 :*GAE/J(Google App Engine for Java)에 restlet 환경을 설정해 보자. :*[http://www.restlet.org/downloads/ 다운로드 사이트]에서 restlet-1.1.10.zip 파일을 다운로드 한다. :*restlet-1.1.10.zip 파일의 압축을 풀어 lib 디렉토리에 있는 jar 파일을 GAE/J 애플리케이션의 /war/WEB-INF/lib 디렉토리로 복사 한다. *참고 문헌 :*[http://code.google.com/p/implementing-rest/ Implementing-REST] : RESTful 형태의 API 를 구축할때 필요한 정보를 한데 모은 사이트 :*[http://benelog.springnote.com/pages/675123 REST, 2010.4] :*[http://www.ibm.com/developerworks/kr/library/tutorial/j-rest/index.html RESTful한 웹 서비스 만들기, 2008.9] :*[[Android#RESTfull|Android에서 RESTfull]] :*[http://blog.naver.com/PostView.nhn?blogId=agapeuni&logNo=60121208317&viewDate=¤tPage=1&listtype=0 RESTful 웹서비스에 대해 알아보자, 2011.1] :*[http://lyb1495.tistory.com/77 Jersey와 Spring으로 RESTful 웹 서비스 구축하기, 2011.2] ==참고 문헌== *[http://www.ibm.com/developerworks/kr/views/java/libraryview.jsp?sort_by=Date&show_abstract=true&show_all=false&search_flag=&topic_by=%EB%AA%A8%EB%93%A0+%EC%A3%BC%EC%A0%9C+%EB%B0%8F+%EA%B4%80%EB%A0%A8+%EC%A0%9C%ED%92%88&type_by=%EB%AA%A8%EB%93%A0+%EC%A2%85%EB%A5%98&search_by=Google+App+Engine+for+Java&%EA%B0%80%EA%B8%B0.x=10&%EA%B0%80%EA%B8%B0.y=6 Google App Engine for Java] : IBM에서 만든 한글 파일 *[http://hind.pe.kr/tag/1347 Google App Engine by Java, 하인드/하인도/인도짱 의 홈페이지] *http://code.google.com/intl/ko-KR/appengine/docs/java/gettingstarted/ *[http://www.google.co.kr/url?sa=t&source=web&ct=res&cd=9&ved=0CDgQFjAI&url=http%3A%2F%2Fwww.uet.edu.pk%2FConferences%2Ficosst2009%2Fpresentations_2009%2FOSSW_Presentations%2F2_Developing_Java_Based_Web_Applications_in_Google_App_OSSW_ICOSST_2009.pdf&ei=PWO0S5mxHIH-6QP1uoxr&usg=AFQjCNFi3lMioC2_RNxPFb52wiQUvu6Ung&sig2=xMCjYSl31wdiKIt4v3BRiQ Developing Java Based Web Applications in Google App Engine] : PDF 파일 *[http://code.google.com/intl/ko-KR/eclipse/docs/download.html Google Plugin for Eclipse 설치 가이드] *[http://www.google.co.kr/url?sa=t&source=web&ct=res&cd=3&ved=0CBIQFjAC&url=http%3A%2F%2Fwww.cheat-sheets.org%2Fsaved-copy%2Frc079-010d-google-app-engine-4.pdf&ei=tbC5S4jDBo2A7QPphYyGCA&usg=AFQjCNF1NS623k6yv63XydruMqmPUwkS0Q&sig2=63z6cNuInvRVbuYZ88WTMA Google App Engine for Java, PDF 파일] *다운로드 :*[http://www.google.co.kr/url?sa=t&source=web&ct=res&cd=2&ved=0CA4QFjAB&url=http%3A%2F%2Fwww.cheat-sheets.org%2Fsaved-copy%2Frc079-010d-google-app-engine-4.pdf&ei=TxjFS-7UH43Y7AOA2cXyDg&usg=AFQjCNF1NS623k6yv63XydruMqmPUwkS0Q&sig2=2HbD28EROaE2mNA_OeOZCA Google App Engine for Java] *[http://code.google.com/p/blobdb/ BlobDB] [[Category:Google]] [[Category:Cloud]] [[Category:Java]]
Google App Engine - Java 개발 환경 설정
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보