open:maven-spring-jackson

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

https://www.eclipse.org/downloads/ 에서 다운받아서, 설치를 진행합니다.

Eclipse Marketplace에서 검색하여 설치합니다.
검색창에 appengine을 입력하여 검색합니다.
Google Plugin for Eclipse 4.3을 설치합니다.
Install 버튼을 클릭하여 설치를 진행합니다.

에디터 화면의 색을 변경합니다. 기호에 따라 설치하시면 됩니다.

Eclipse MARS 로 진행할 경우, maven 이 포함되어 있으므로 아래 내용을 필요 없습니다.

이클립스 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를 선택하여 추가합니다.

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

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

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-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>

스프링에서 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

  • open/maven-spring-jackson.txt
  • 마지막으로 수정됨: 2020/06/02 09:25
  • 저자 127.0.0.1