Lernprogramm zum eingebetteten Webserver: So starten Sie den eingebetteten HTTP-Jersey-Server während des Starts der Java-Anwendung
Veröffentlicht: 2014-07-01 Vor einiger Zeit habe ich ein Tutorial zum Erstellen von RESTful-Diensten mit Java unter Verwendung von JAX-RS und Jersey geschrieben. Nach allen detaillierten Schritten müssen Sie Ihr Projekt auf Tomcat Web Server
bereitstellen und Sie sollten alles gut haben. Mit diesem Tutorial sollten Sie in der Lage sein, den RESTFul-Dienst in etwa 20 Minuten einfach zu erstellen.
Aber was ist, wenn Sie es in
~5 mins
tun? Außerdem ist es manchmal sehr schwierig, Tomcat für Ihre Webanwendung einzurichten.
Es gibt eine Reihe von Gründen:
- Möglicherweise müssen Sie Tomcat-Binärdateien in die Entwicklungsumgebung kopieren.
- Wenn Sie nicht alle Einstellungen richtig konfiguriert haben, funktioniert Ihre Tomcat-Anwendung möglicherweise nicht.
- Sie müssen Ihr Projekt als
.war
Projekt exportieren - Was ist, wenn Sie Ihre Anwendung nicht auf Tomcat bereitstellen und eine einfache .jar-Datei ausführen möchten?
- Mit .jar-Projekt – wie starten Sie den HTTP-Server? Akzeptiert Ihre Anwendung eingehende REST-Anrufe?
Extra: Wie füge ich CORS-Filter zu Ihrer Jersey-Webanwendung hinzu?
Sie müssen Ihrer Web-Jersey Cross-origin resource sharing
hinzufügen. Bitte folgen Sie dazu diesem Tutorial:
Was ist Cross-Origin Resource Sharing (CORS) – wie füge ich es zu meinem Java-Jersey-Webserver hinzu?
Nun, es gibt eine einfache Lösung. Es gibt eine Möglichkeit, einen sehr einfachen HTTP-Server (der nur GET/POST unterstützt) in Java zu erstellen, indem nur die Java SE-API verwendet wird, ohne Code schreiben zu müssen, um HTTP-Anforderungen manuell zu parsen und HTTP-Antworten manuell zu formatieren.
Mit com.sun.net.httpserver.HttpServer
sollten wir in der Lage sein, alles oben Genannte zu erreichen.
Lass uns anfangen:
Schritt 1:
Erstellen Sie ein neues Java-Projekt „ CrunchifyJerseyEmbeddedHTTPServer
“.
Schritt 2:
Konvertieren Sie es in Maven Project. Dies wird unser Leben für das Hinzufügen von Abhängigkeiten vereinfachen. Bitte folgen Sie diesem Tutorial, um ein vorhandenes Java-Projekt in ein Maven-Projekt zu konvertieren.
Schritt 3:
In diesem Projekt brauchen wir nur eine jersey-server
Abhängigkeit.
Schritt 4:
Erstellen Sie JerseyEmbeddedHTTPServerCrunchify.java
unter dem Paket 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 ; } } |

Schritt 5:
Erstellen Sie Ihre REST-API. Erstellen Sie die Java-Klasse CrunchifyAPI.java
unter demselben Paket „ 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" ; } } |
Schritt 6:
Und das ist es. Klicken Sie nun mit der rechten Maustaste auf JerseyEmbeddedHTTPServerCrunchify.java
und „ Run it as Java Application
ausführen“.
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 ! ! ! |
Schritt 7:
Ergebnis validieren. Besuchen Sie diese URL: http://localhost:8085/api
und Sie sollten das Ergebnis im Browser sehen.
Ich hoffe, Sie genießen dieses Tutorial. Müssen Sie einen Kommentar teilen?
Ich bin hier, um zuzuhören. Danke.