Tutorial Server Web încorporat: Cum să porniți serverul Embedded HTTP Jersey în timpul pornirii aplicației Java
Publicat: 2014-07-01 Cu ceva timp în urmă, am scris un tutorial despre Cum să construiți un serviciu RESTful cu Java folosind JAX-RS și Jersey. După toți pașii detaliați, trebuie să vă implementați proiectul pe Tomcat Web Server
și ar trebui să fiți bine. Cu acest tutorial, ar trebui să puteți crea pur și simplu serviciu RESTFul în ~20 de minute.
Dar ce zici să faci în
~5 mins
? De asemenea, uneori este foarte dificil să configurați Tomcat pentru aplicația dvs. web.
Există un număr de motive:
- Poate fi necesar să copiați binarele Tomcat în mediul de dezvoltare.
- Dacă nu aveți toate configurațiile configurate corect, este posibil ca aplicația dvs. Tomcat să nu funcționeze.
- Trebuie să exportați proiectul ca proiect
.war
- Ce se întâmplă dacă nu doriți să implementați aplicația dvs. pe Tomcat și să rulați .jar simplu?
- Cu proiectul .jar – cum veți porni serverul http? Aplicația dvs. va accepta apeluri REST primite?
Extra: Cum să adăugați filtrul CORS la aplicația dvs. web Jersey?
Trebuie să adăugați Cross-origin resource sharing
la aplicația dvs. Web Jersey. Vă rugăm să urmați acest tutorial pentru același lucru:
Ce este Partajarea resurselor între origini (CORS) – Cum să o adaugi la serverul tău web Java Jersey?
Ei bine, există o soluție simplă. Există o modalitate de a crea un server HTTP foarte simplu (care acceptă numai GET/POST) în Java folosind doar API-ul Java SE, fără a scrie cod pentru a analiza manual cererile HTTP și a formata manual răspunsurile HTTP.
Folosind com.sun.net.httpserver.HttpServer
, ar trebui să putem realiza toate cele de mai sus.
Să începem:
Pasul 1:
Creați un nou proiect Java „ CrunchifyJerseyEmbeddedHTTPServer
”.
Pasul 2:
Convertiți-l în Maven Project. Acest lucru ne va simplifica viața pentru adăugarea de dependențe. Vă rugăm să urmați acest tutorial pentru a converti proiectul Java existent în proiectul Maven.
Pasul 3:
În acest proiect avem nevoie doar de o dependență jersey-server
.
Pasul 4:
Creați JerseyEmbeddedHTTPServerCrunchify.java
sub pachetul 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 ; } } |

Pasul 5:
Creați-vă API-ul REST. Creați clasa java CrunchifyAPI.java
sub același pachet „ 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" ; } } |
Pasul 6:
Si asta e. Acum faceți clic dreapta pe JerseyEmbeddedHTTPServerCrunchify.java
și „ 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 ! ! ! |
Pasul 7:
Validați rezultatul. Vizitați această adresă URL: http://localhost:8085/api
și ar trebui să vedeți rezultatul în browser.
Sper să vă placă acest tutorial. Trebuie să distribuiți vreun comentariu?
Sunt aici să ascult. Mulțumiri.