본문 바로가기
Programming/Google

[Google App Engine] Maven 프로젝트로 생성하기 + 스프링 + Jackson

by NAMP 2014. 12. 25.

[Google App Engine] Maven 프로젝트로 생성하기 + 스프링 + Jackson

New Maven Project 생성

이클립스 maven 플러그인을 설치합니다.

http://download.eclipse.org/technology/m2e/releases

New Maven Project 에서 Configure 버튼을 클릭하여 새로운 카탈로그를 추가합니다.

http://repo1.maven.org/maven2/archetype-catalog.xml





검색창에서 maven을 입력하여 검색합니다.



Configure를 선택합니다.


Add Remote Catalog를 선택하여 추가합니다.



appengine으로 필터링 하시고, appengine-skeleton-archetype를 선택하고 완료를 누르면 뼈대가 완성됩니다.



application-id에 appspot.com에서 생성한 어플리케이션아이디를 입력합니다. 나중에 변경하셔도 됩니다.

뼈대가 완성이 되면

pom.xml파일에 Plugin execution not covered by lifecycle configuration 에러가 발생하지만, 그냥 무시하고 진행합니다. 에러나는 부분인 <phase>compile</phase>이곳을 주석처리하면 에러는 사라집니다.

maven → build 를 선택합니다.



DevAppServer 는 로컬에서 실행해보는 것이며, UpdateApplication은 구글 클라우드 서버에 업로드 하는 것입니다. 위의 화면은 메이븐 프로젝트를 여러개 생성하였기에 여러개의 메이븐 빌드정보가 있는 것입니다.

[INFO] 정보: Module instance default is running at http://localhost:8080/
[INFO] 정보: The admin console is running at http://localhost:8080/_ah/admin
[INFO] 정보: Dev App Server is now running

정상적으로 실행이 되면 위와 같은 메시지가 보이게 됩니다.



pom.xml

Spring

dependencies에 스프링과 JSON 사용을 위한 Jackson 을 추가합니다.

<!-- Spring 3 dependencies -->
          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-core</artifactId>
               <version>${spring.version}</version>
          </dependency>

          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-web</artifactId>
               <version>${spring.version}</version>
          </dependency>

          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-webmvc</artifactId>
               <version>${spring.version}</version>
          </dependency>

          <!-- Jackson JSON Mapper -->
          <dependency>
               <groupId>org.codehaus.jackson</groupId>
               <artifactId>jackson-mapper-asl</artifactId>
               <version>${jackson.version}</version>
          </dependency>

properties 에도 내용을 추가합니다.

     <properties>
          <appengine.app.version>1</appengine.app.version>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <spring.version>3.2.2.RELEASE</spring.version>
          <jackson.version>1.9.10</jackson.version>
          <jdk.version>1.7</jdk.version>
     </properties>

web.xml 작성


<web-app id="WebApp_ID" version="2.4"
     xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

     <display-name>Spring Web MVC Application</display-name>

     <servlet>
          <servlet-name>mvc-dispatcher</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <load-on-startup>1</load-on-startup>
     </servlet>

     <servlet-mapping>
          <servlet-name>mvc-dispatcher</servlet-name>
          <url-pattern>/</url-pattern>
     </servlet-mapping>

     <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
     </context-param>

     <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>

</web-app>

Error 406

스프링에서 json 반환시 406 에러가 생긴다면 다음을 확인해봐야 합니다.

  • jackson 라이브러리가 classpath에 추가되어 있는가
  • <mvc:annotation-driven /> 이 추가되어 있는가
  • getter 함수가 존재하는가

Upload

프로젝트 루트폴더에서 커맨드창을 실행합니다.

mvn appengine:update 를 입력하여 진행합니다.




Please enter code: 부분에, 웹 브라우저에서 나오게 될 코드 값을 입력합니다.




동의를 누르고 진행하면, 코드가 나옵니다.

웹 브라우저가 열리고, 코드가 나오면, 커맨드창에 해당 코드를 입력하여 진행합니다.




위의 화면은 app_id값을 변경하지 않고 진행하여, 해당 app_id 가 없다는 오류입니다.

어플리케이션 아이디 설정

appengine-web.xml 파일에서 설정합니다. <application> 태그 부분에 생성한 어플리케이션 정보를 입력합니다.






사용자 정보는 사용자/[계정] 폴더에 .appcfg_oauth2_tokens_java 파일명으로 저장됩니다. 처음에 입력한 코드에 따라서 사용자가 결정되기 때문에, 다른 사용자의 정보를 이용하기 위해서는 해당 파일을 변경해야 합니다.

Ref


'Programming > Google' 카테고리의 다른 글

[GAE] memcache Undefined variable error - python  (0) 2016.07.01
[GAE] Static 파일 설정  (0) 2015.12.02
[GAE] 파일 업로드  (0) 2015.11.30
[GAE] 포트 사용중인 프로세스 종료  (0) 2015.11.30
Google App Engine - INDEXES  (0) 2014.10.27

댓글