Embedded Web Server Tutorial: วิธีเริ่ม Embedded HTTP Jersey server ระหว่าง Java Application Startup
เผยแพร่แล้ว: 2014-07-01 เมื่อก่อนฉันได้เขียนบทช่วยสอนเกี่ยวกับวิธีการสร้าง RESTful Service ด้วย Java โดยใช้ JAX-RS และ Jersey หลังจากขั้นตอนโดยละเอียดทั้งหมด คุณต้องปรับใช้โครงการของคุณกับ Tomcat Web Server
และคุณน่าจะทำได้ดี ด้วยบทช่วยสอนนั้น คุณจะสามารถสร้างบริการ RESTFul ได้ง่ายๆ ในเวลาประมาณ 20 นาที
แต่จะทำอย่างไรใน
~5 mins
? นอกจากนี้ บางครั้งก็เป็นเรื่องยากมากที่จะตั้งค่า Tomcat สำหรับเว็บแอปพลิเคชันของคุณ
มีหลายสาเหตุ:
- คุณอาจจำเป็นต้องคัดลอกไบนารีของ Tomcat ไปยังสภาพแวดล้อมการพัฒนา
- หากคุณไม่ได้ตั้งค่าทั้งหมดอย่างถูกต้อง แอปพลิเคชัน Tomcat ของคุณอาจไม่ทำงาน
- คุณต้องส่งออกโครงการของคุณเป็น
.war
โครงการ - จะเกิดอะไรขึ้นถ้าคุณไม่ต้องการที่จะปรับใช้แอปพลิเคชันของคุณบน Tomcat และเรียกใช้ .jar อย่างง่าย
- ด้วยโปรเจ็กต์ .jar คุณจะเริ่มเซิร์ฟเวอร์ http ได้อย่างไร ใบสมัครของคุณจะรับสายเรียกเข้า REST หรือไม่
พิเศษ: จะเพิ่ม CORS Filter ให้กับ Jersey Web Application ได้อย่างไร?
คุณต้องเพิ่ม Cross-origin resource sharing
ไปยังแอปพลิเคชัน Web Jersey โปรดปฏิบัติตามบทช่วยสอนนี้เช่นเดียวกัน:
Cross-Origin Resource Sharing (CORS) คืออะไร – จะเพิ่มลงใน Java Jersey Web Server ได้อย่างไร
มีวิธีแก้ปัญหาง่ายๆ มี วิธีสร้างเซิร์ฟเวอร์ HTTP พื้นฐาน (รองรับเฉพาะ GET/POST) ใน Java โดยใช้ Java SE API เพียงอย่างเดียว โดยไม่ต้องเขียนโค้ดเพื่อแยกวิเคราะห์คำขอ HTTP ด้วยตนเองและจัดรูปแบบการตอบกลับ HTTP ด้วยตนเอง
การใช้ com.sun.net.httpserver.HttpServer
เราควรจะสามารถทำได้ทั้งหมดข้างต้น
มาเริ่มกันเลย:
ขั้นตอนที่ 1:
สร้างโปรเจ็กต์ Java ใหม่ “ CrunchifyJerseyEmbeddedHTTPServer
“
ขั้นตอนที่ 2:
แปลงเป็นโครงการ Maven สิ่งนี้จะทำให้ชีวิตของเราง่ายขึ้นสำหรับการเพิ่มการพึ่งพา โปรดทำตามบทช่วยสอนนี้เพื่อแปลง Java Project ที่มีอยู่เป็น Maven Project
ขั้นตอนที่ 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 ของคุณ สร้างคลาส java CrunchifyAPI.java
ภายใต้แพ็คเกจเดียวกัน “ com.crunchify.tutorial
”
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
และคุณควรเห็นผลลัพธ์บนเบราว์เซอร์
หวังว่าคุณจะสนุกกับการกวดวิชานี้ ต้องการแบ่งปันความคิดเห็นใด ๆ
ฉันมาที่นี่เพื่อฟัง ขอบคุณ.