البرنامج التعليمي لخادم الويب المضمن: كيفية بدء تشغيل خادم HTTP Jersey المضمن أثناء بدء تشغيل تطبيق Java
نشرت: 2014-07-01 لقد كتبت في وقت ما درسًا تعليميًا حول كيفية إنشاء خدمة RESTful باستخدام Java باستخدام JAX-RS و Jersey. بعد كل الخطوات التفصيلية ، يجب عليك نشر مشروعك على Tomcat Web Server
ويجب أن تكون جيدًا. باستخدام هذا البرنامج التعليمي ، يجب أن تكون قادرًا ببساطة على إنشاء خدمة RESTFul في حوالي 20 دقيقة.
ولكن ماذا عن القيام بذلك في
~5 mins
؟ أحيانًا يكون من الصعب جدًا أيضًا إعداد Tomcat لتطبيق الويب الخاص بك.
هناك عدد من الأسباب:
- قد تحتاج إلى نسخ ثنائيات Tomcat إلى بيئة التطوير.
- إذا لم يتم تكوين كل الإعدادات بشكل صحيح ، فقد لا يعمل تطبيق Tomcat الخاص بك.
- يجب عليك تصدير مشروعك كمشروع
.war
- ماذا لو كنت لا تريد نشر تطبيقك على Tomcat وتشغيل .jar بسيط؟
- مع مشروع .jar - كيف ستبدأ خادم HTTP؟ هل سيقبل تطبيقك مكالمة REST الواردة؟
نشاط إضافي: كيف تضيف عامل تصفية CORS إلى تطبيق ويب جيرسي الخاص بك؟
يجب عليك إضافة Cross-origin resource sharing
إلى تطبيق Web Jersey الخاص بك. يرجى اتباع هذا البرنامج التعليمي لنفسه:
ما المقصود بمشاركة الموارد متعددة الأصول (CORS) - كيف تضيفها إلى خادم الويب الخاص بجافا جيرسي؟
حسنًا ، هناك حل بسيط. هناك طريقة لإنشاء خادم HTTP أساسي جدًا (يدعم فقط GET / POST) في Java باستخدام Java SE API فقط ، دون كتابة رمز لتحليل طلبات HTTP يدويًا وتنسيق استجابات HTTP يدويًا.
باستخدام com.sun.net.httpserver.HttpServer
، يجب أن نكون قادرين على تحقيق كل ما سبق.
هيا بنا نبدأ:
الخطوة 1:
قم بإنشاء مشروع جافا جديد " CrunchifyJerseyEmbeddedHTTPServer
".
الخطوة 2:
قم بتحويله إلى مشروع Maven. هذا سوف يبسط حياتنا لإضافة التبعيات. يرجى اتباع هذا البرنامج التعليمي لتحويل مشروع Java الحالي إلى Maven Project.
الخطوه 3:
في هذا المشروع ، نحتاج فقط إلى تبعية jersey-server
واحدة.
الخطوة الرابعة:
قم 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 ; } } |

الخطوة الخامسة:
قم بإنشاء REST API الخاص بك. قم بإنشاء فئة جافا 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" ; } } |
الخطوة السادسة:
وهذا كل شيء. الآن انقر بزر الماوس الأيمن على 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 ! ! ! |
الخطوة السابعة:
نتيجة التحقق من الصحة. قم بزيارة هذا الرابط: http://localhost:8085/api
وسترى النتيجة على المتصفح.
أتمنى أن تستمتع بهذا البرنامج التعليمي. بحاجة إلى مشاركة أي تعليق؟
أنا هنا لأستمع. شكرا.