내장 웹 서버 자습서: Java 응용 프로그램 시작 중에 내장 HTTP Jersey 서버를 시작하는 방법
게시 됨: 2014-07-01 언젠가 JAX-RS 및 Jersey를 사용하여 Java로 RESTful 서비스를 빌드하는 방법에 대한 자습서를 작성했습니다. 모든 세부 단계가 끝나면 프로젝트를 Tomcat Web Server
에 배포해야 하며 모든 것이 잘 될 것입니다. 이 튜토리얼을 사용하면 ~20분 안에 RESTFul 서비스를 간단하게 생성할 수 있습니다.
하지만
~5 mins
안에 하는 것은 어떻습니까? 또한 때때로 웹 애플리케이션용으로 Tomcat을 설정하는 것이 매우 어렵습니다.
여러 가지 이유가 있습니다.
- Tomcat 바이너리를 개발 환경에 복사해야 할 수도 있습니다.
- 모든 설정이 올바르게 구성되지 않은 경우 Tomcat 응용 프로그램이 작동하지 않을 수 있습니다.
- 프로젝트를
.war
프로젝트로 내보내야 합니다. - Tomcat에 애플리케이션을 배포하고 간단한 .jar을 실행하지 않으려면 어떻게 해야 합니까?
- .jar 프로젝트를 사용하여 - http 서버를 어떻게 시작하시겠습니까? 애플리케이션이 수신 REST 호출을 수락합니까?
추가: Jersey 웹 애플리케이션에 CORS 필터를 추가하는 방법은 무엇입니까?
Web Jersey 애플리케이션에 Cross-origin resource sharing
를 추가해야 합니다. 동일한 방법으로 이 튜토리얼을 따르십시오.
CORS(Cross-Origin Resource Sharing)란 무엇입니까? Java Jersey 웹 서버에 추가하는 방법은 무엇입니까?
음, 간단한 해결책이 있습니다. HTTP 요청을 수동으로 구문 분석하고 HTTP 응답을 수동으로 형식화하는 코드를 작성하지 않고 Java SE API만 사용하여 Java에서 매우 기본적인 HTTP 서버(GET/POST만 지원)를 생성하는 방법이 있습니다.
com.sun.net.httpserver.HttpServer
를 사용하여 위의 모든 것을 달성할 수 있어야 합니다.
시작하자:
1 단계:
새 Java 프로젝트 " CrunchifyJerseyEmbeddedHTTPServer
"를 만듭니다.
2 단계:
Maven 프로젝트로 변환합니다. 이것은 의존성을 추가하기 위한 우리의 삶을 단순화할 것입니다. 이 튜토리얼을 따라 기존 Java 프로젝트를 Maven 프로젝트로 변환하십시오.
3단계:
이 프로젝트에서는 jersey-server
종속성이 하나만 필요합니다.
4단계:
JerseyEmbeddedHTTPServerCrunchify.java
패키지 아래에 com.crunchify.tutorial
를 생성합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
package com . crunchify . tutorial ; import java . io . IOException ; import java . net . InetAddress ; import java . net . URI ; import java . net . UnknownHostException ; import javax . ws . rs . core . UriBuilder ; import com . sun . jersey . api . container . httpserver . HttpServerFactory ; import com . sun . jersey . api . core . PackagesResourceConfig ; import com . sun . jersey . api . core . ResourceConfig ; import com . sun . net . httpserver . HttpServer ; /** * @author Crunchify.com * */ @SuppressWarnings ( "restriction" ) public class JerseyEmbeddedHTTPServerCrunchify { public static void main ( String [ ] args ) throws IOException { System . out . println ( "Starting Crunchify's Embedded Jersey HTTPServer...\n" ) ; HttpServer crunchifyHTTPServer = createHttpServer ( ) ; crunchifyHTTPServer . start ( ) ; System . out . println ( String . format ( "\nJersey Application Server started with WADL available at " + "%sapplication.wadl\n" , getCrunchifyURI ( ) ) ) ; System . out . println ( "Started Crunchify's Embedded Jersey HTTPServer Successfully !!!" ) ; } private static HttpServer createHttpServer ( ) throws IOException { ResourceConfig crunchifyResourceConfig = new PackagesResourceConfig ( "com.crunchify.tutorial" ) ; // This tutorial required and then enable below line: https://crunchify.com/?p=6360 //crunchifyResourceConfig.getContainerResponseFilters().add(CrunchifyCORSFilter.class); return HttpServerFactory . create ( getCrunchifyURI ( ) , crunchifyResourceConfig ) ; } private static URI getCrunchifyURI ( ) { return UriBuilder . fromUri ( "http://" + crunchifyGetHostName ( ) + "/" ) . port ( 8085 ) . build ( ) ; } private static String crunchifyGetHostName ( ) { String hostName = "localhost" ; try { hostName = InetAddress . getLocalHost ( ) . getCanonicalHostName ( ) ; } catch ( UnknownHostException e ) { e . printStackTrace ( ) ; } return hostName ; } } |

5단계:
REST API를 만듭니다. 동일한 패키지 " com.crunchify.tutorial
" 아래에 Java 클래스 CrunchifyAPI.java
를 만듭니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package com . crunchify . tutorial ; import javax . ws . rs . GET ; import javax . ws . rs . Path ; import javax . ws . rs . Produces ; import javax . ws . rs . core . MediaType ; @Path ( "api" ) public class CrunchifyAPI { @GET @Produces ( MediaType . TEXT_PLAIN ) public String get ( ) { return "\n This is Crunchify REST API via HTTPServer" ; } } |
6단계:
그리고 그게 다야. 이제 JerseyEmbeddedHTTPServerCrunchify.java
를 마우스 오른쪽 버튼으로 클릭하고 " Run it as Java Application
"합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Starting Crunchify 's Embedded Jersey HTTPServer... Jun 30, 2014 3:45:26 PM com.sun.jersey.api.core.PackagesResourceConfig init INFO: Scanning for root resource and provider classes in the packages: com.crunchify.tutorial Jun 30, 2014 3:45:26 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses INFO: Root resource classes found: class com.crunchify.tutorial.CrunchifyAPI Jun 30, 2014 3:45:26 PM com.sun.jersey.api.core.ScanningResourceConfig init INFO: No provider classes found. Jun 30, 2014 3:45:27 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFO: Initiating Jersey application, version ' Jersey : 1.18.1 02 / 19 / 2014 03 : 28 AM ' Jersey Application Server started with WADL available at http://localhost:8085/application.wadl Started Crunchify' s Embedded Jersey HTTPServer Successfully ! ! ! |
7단계:
결과를 확인합니다. 이 URL을 방문하십시오: http://localhost:8085/api
그리고 브라우저에 결과가 표시되어야 합니다.
이 튜토리얼을 즐기시기 바랍니다. 의견을 공유해야 합니까?
들으러 왔습니다. 감사 해요.