Maven 프로젝트 생성 및 JAX-RS (Java API for RESTful Services) 코딩

Slides:



Advertisements
Similar presentations
CI(Continuous Integration) 이학성. C ontinuous I ntegration? 2 지속적으로 품질관리 를 적용하는 과정 개발자가 기존 코드의 수정 작업 을 시작할 때, 코드 베이스의복사본을 받아서 작업을 시작하면서 코드의 변경.
Advertisements

ⓒ 2015 NHN Entertainment Corp. Django 로 만드는 초간단 블로그 시스템운영팀 김영태 개발환경 구축.
KUMHO SOFTWARE DEVELOPMENT 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램 2.4 자바 응용 프로그램 2.5 자바 애플릿 프로그램 2. 자바 환경과 자바 프로그램.
4장4장 AIX product offerings –AIX, LPPs(Licensed program products), AIX documentation, Expansion Pack, Bonus Pack Web, AIX Toolbox for Linux Packaging definitions.
7 월 12 일 실습 StockQuoteClient.java MarketClient.java.
Android 프로그램개발 환경. 학습 목표 ■ 교육 목표  JDK 설치  JDK 환경 설정  Eclipse 설치  Android SDK 설치  ADT Plug-in 설치  Android Virtual Device(AVD) 설치  Android 예제 프로그램.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
기초C언어 제1주 실습 강의 소개, C언어 개요, Cygwin/Eclipse 사용 컴퓨터시뮬레이션학과 2016년 봄학기
Term Project iTUTOR를 이용한 PIC 동작 검증 보고서와 모든 소스코드 압축하여 제출
자바 언어의 이해 Understanding of Java Programming
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Power Java 제3장 이클립스 사용하기.
Power Java 제3장 이클립스 사용하기.
4강. Servlet 맛보기 Servlet 문서 작성 하기 web.xml에 서블릿 맵핑 어노테이션을 이용한 서블릿 맵핑
SSL - VPN 사용자 가이드 - IT 지원실 네트워크 운영팀 -.
Sep Youn-Hee Han 웹서비스 컴퓨팅 수업을 위한 코딩 환경 준비 Sep Youn-Hee Han
Spring 4 기반의 RESTful Web Service 구현
Power Java 제2장 자바 개발 도구.
CUDA Setting : Install & Compile
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
J2ME Install 부산대학교 인공지능 연구실.
Power Java 제4장 자바 프로그래밍 기초.
임베디드 프로그래밍 Lecture #
컴퓨터응용과학부 Java Enterprize(DB) 제 13 주
Java 기초 (Java JDK 설치 및 환경설정)
Java IT응용시스템공학과 김형진 교수 2장. 자바의 환경 public class SumTest {
컴퓨터응용과학부 Java Enterprize(DB) 제 12 주
Visual Basic .NET 처음 사용하기.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
1. C++ 시작하기.
소프트웨어 분석과 설계 Struts2 & JBOSS 설치하기
WinCE Device Driver 실습 #3
전자정부 프레임워크 설치 매뉴얼 6조 08 이대우 08 홍정무 11 강성민 11 김혜지.
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
UNIT 02 JDK & Tools 설치 로봇 SW 컨텐츠 교육원 조용수.
2장 JSP 개발 환경 설정 이장에서 배울 내용 : JSP 페이지를 작성하기 위한 개발환경을 설정하고, 웹 어플리케이션 개발을 위해 반드시 이해하여야 할 웹 어플리케이션 폴더 구조에 대해 학습한다. 또한 요청된 JSP 페이지가 어떠한 처리과정을 거쳐 응답이 이루어지는가에.
Android studio로 Application 만들기.
Eclipse 플러그인을 활용한 자바/JSP 개발.
3강. JSP 맛보기 JSP 문서 작성 하기 JSP 아키텍처 Lecturer Kim Myoung-Ho Nickname 블스
[INA470] Java Programming Youn-Hee Han
Java 2장. 자바의 환경 public class SumTest {
개발 환경 세팅.
2018년 11월 05일 박성진 Web & Internet [08] 레이아웃 P1 2018년 11월 05일 박성진
IPython Notebook + Spark + TensorFlow on MacOS
실용주의 개발 프로세스 및 개발 환경 박재성 2008년 4월 26일.
소프트웨어공학 윤일노 STARuml Guide 소프트웨어공학 윤일노
MVC 모델을 이용한 웹 애플리케이션 작성 웹 애플리케이션 개발 순서를 알아본다 웹 애플리케이션의 실행 순서를 이해한다.
제목소개 1. 안드로이드소개 2. 패킷캡쳐를 위한 환경 소개 3. ndk 소개 4. lipcap 5. 6.도식화 그림
BERT Install Guide 숭실대학교 test.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
[INA470] Java Programming Youn-Hee Han
Eclipse CDT에서 프로젝트를 Export 하고 Import 하는 방법
자바 5.0 프로그래밍.
Internet Computing KUT Youn-Hee Han
Internet Computing KUT Youn-Hee Han
컴퓨터 개론 및 실습 1주차 2015년 03월 05일.
7주차 실습 FPGA 보드 사용법.
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
Cold Spring Harbor Laboratory Press 저널 이용 매뉴얼
IP-255S 설치 교육자료 101/102에 대한 설명을 시작 하겠습니다.
STS 또는 Eclipse 에서 프로젝트를 Export 하고 Import 하는 방법
Introduction to JSP & Servlet
암호학 응용 Applied cryptography
Tensorboard in Windows
슬라이드 쇼의 설정 슬라이드 쇼의 실행 파일과 폴더의 관리 글꼴을 포함해서 저장 웹 페이지로 게시 압축 파일
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
JAVA 프로그래밍 16장 JNLP.
J2SE 설치 부산대학교 인공지능 연구실.
Presentation transcript:

Maven 프로젝트 생성 및 JAX-RS (Java API for RESTful Services) 코딩 Sep. 2015 Youn-Hee Han http://link.koreatech.ac.kr

Maven 101 Maven Apache Software Foundation에서 개발되고 있는 소프트웨어 프로젝트 관리툴 프로젝트 빌드, 테스트, 토큐멘테이션, 성과물의 배치등, 프로젝트의 라이프사이클 전체를 관리 Project Object Model (POM) 프로젝트에 관련한 여러가지 정보를 pom.xml에 집약하여, 이곳에 기재된 정보를 기반으로 전체 프로젝트를 관리

Maven 101 Maven Archetype Maven 프로젝트 템플릿 마련되어 있는 archetype 목록 https://maven.apache.org/archetypes/index.html

Maven Plugins Maven Archetype Plugin Maven Archetype 템플릿으로 부터 Maven 프로젝트를 생성하기 위한 도구 현재 3가지의 plugin goal (타겟 액션)을 지니고 있음 archetype:generate Maven 프로젝트를 생성할 때 가장 일반적으로 많이 사용하는 archetype plugin goal Default Archetype: maven-archetype-quickstart

Maven Plugins Maven Exec Plugin Maven 프로젝트로 만든 Java 프로그램을 실행하기 위한 도구 현재 2가지의 plugin goal (타겟 액션)을 지니고 있음 exec:java http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/

Maven 프로젝트 생성 전형적인 Maven 프로젝트 생성 [note] git/github와 연동시키려면 [내문서 폴더]/git 폴더 아래에서 위 명령어 실행  [내문서 폴더]/git/myapp 폴더 생성됨 groupId 프로젝트를 만드는 그룹, 조직, 회사 등을 나타내는 유일한 이름, 보통 자바 패키지처럼 URI를 거꾸로 써서 나타낸다. artifactId 아티팩트(artifact). 즉, 프로젝트를 나타내는 유일한 이름, group 내 다른 아티팩트와 이름이 같아서는 안된다. package 프로젝트의 최상위 패키지 version 프로젝트의 현재 버전 mvn archetype:generate -DgroupId=koreatech.link -DartifactId=myapp -Dpackage=link.rest -Dversion=1.0

Maven 프로젝트 생성 전형적인 Maven 프로젝트 빌드 및 패키징 Maven이 생성한 모든 산출물 삭제 (초기화) 컴파일 mvn clean 컴파일 mvn compile 테스트 mvn test 실행 exec 플러그인 사용 mvn exec:java -Dexec.mainClass="link.rest.App"

Maven 프로젝트 생성 전형적인 Maven 프로젝트 빌드 및 패키징 패키징을 위한 pom.xml 수정 패키징 및 패키징 활용 mvn package java -jar ./target/myapp-1.0.jar <project …> … <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <configuration> <archive> <manifest> <mainClass>link.rest.App</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>

JAX-RS 101 JAX-RS (https://jax-rs-spec.java.net) JAX-RS Tutorial Java API for RESTful Services JSR (Java Specification Requests) 339 https://jcp.org/en/jsr/detail?id=339 JAX-RS Specification https://java.net/projects/jax-rs-spec/sources/spec/show JAX-RS Tutorial http://www.mkyong.com/tutorials/jax-rs-tutorials/ Popular JAX-RS implementation Jersey RESTEasy Spring 4.0

Jersey 101 Jersey (https://jersey.java.net) A Java library to simplify development of RESTful Web services and their clients in Java a standard and portable JAX-RS API has been designed Jersey provides it’s own API that extend the JAX-RS toolkit with additional features and utilities to further simplify RESTful service and client development.

JAX-RS 서비스 만들기 JAX-RS Maven 프로젝트 생성 https://jersey.java.net/documentation/latest/getting-started.html intellij 에서 프로젝트화 하여 소스 살펴 보기 mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false -DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example -DarchetypeVersion=2.21

JAX-RS 서비스 만들기 Maven이 생성한 모든 산출물 삭제 (초기화) 컴파일 초기화 및 테스트 mvn clean mvn compile 초기화 및 테스트 mvn clean test

JAX-RS 서비스 만들기 Main 수행 새 콘솔창에서 curl 명령어를 사용한 Client 수행 exec 플러그인 사용 mvn exec:java -Dexec.mainClass="com.example.Main" 새 콘솔창에서 curl 명령어를 사용한 Client 수행 curl http://localhost:8080/myapp/myresource curl -i http://localhost:8080/myapp/myresource curl -v http://localhost:8080/myapp/myresource 브라우저를 사용한 Client 수행 http://localhost:8080/myapp/myresource 웹 서비스 설명: http://localhost:8080/myapp/application.wadl

JAX-RS 서비스 만들기 IntelliJ에서 수행 Project structures  source folders & test source filders Run/Debug Configuration

JAX-RS 서비스 Client 만들기 새로운 Maven 프로젝트 만들기 pom.xml 에 jersey-client 의존성 추가하기 [note] intellij에서 아래 화면이 나오면 “Enable Auto-Import” 클릭 mvn archetype:generate -DgroupId=koreatech.link -DartifactId=rest_client -Dpackage=link.rest -Dversion=1.0 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> <version>2.21</version> </dependencies> [참고] https://jersey.java.net/documentation/latest/modules-and-dependencies.html#client-jdk

JAX-RS 서비스 Client 만들기 Main 메소드 구현 Run/Debug Configuration package link.rest; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; public class App { public static void main(String[] args) { Client client = ClientBuilder.newClient(); WebTarget target = client.target("http://localhost:8080/myapp").path("myresource"); Response response = target.request(MediaType.TEXT_PLAIN).get(); System.out.println("Output from Server .... \n"); System.out.println(response.readEntity(String.class)); }