組み込みWebサーバーチュートリアル:Javaアプリケーションの起動中に組み込みHTTPジャージーサーバーを起動する方法
公開: 2014-07-01 しばらく前に、JAX-RSとJerseyを使用してJavaでRESTfulサービスを構築する方法に関するチュートリアルを書きました。 すべての詳細な手順を実行した後、プロジェクトをTomcat Web Server
にデプロイする必要があります。これで、問題はありません。 このチュートリアルを使用すると、約20分でRESTFulサービスを簡単に作成できるはずです。
しかし、
~5 mins
でそれを行うのはどうですか? また、Webアプリケーション用にTomcatをセットアップするのが非常に難しい場合もあります。
いくつかの理由があります:
- Tomcatバイナリを開発環境にコピーする必要がある場合があります。
- すべてのセットアップが正しく構成されていない場合、Tomcatアプリケーションが機能しない可能性があります。
- プロジェクトを
.war
プロジェクトとしてエクスポートする必要があります - アプリケーションをTomcatにデプロイして、単純な.jarを実行したくない場合はどうなりますか?
- .jarプロジェクトを使用– httpサーバーをどのように起動しますか? アプリケーションは着信REST呼び出しを受け入れますか?
追加:Jersey WebアプリケーションにCORSフィルターを追加するにはどうすればよいですか?
WebジャージーアプリケーションにCross-origin resource sharing
を追加する必要があります。 同じことについては、このチュートリアルに従ってください。
クロスオリジンリソースシェアリング(CORS)とは– Java Jersey Webサーバーに追加する方法は?
さて、簡単な解決策があります。 HTTPリクエストを手動で解析してHTTPレスポンスを手動でフォーマットするコードを記述せずに、Java SE APIのみを使用してJavaで非常に基本的なHTTPサーバー(GET / POSTのみをサポート)を作成する方法があります。
com.sun.net.httpserver.HttpServer
を使用すると、上記のすべてを達成できるはずです。
始めましょう:
ステップ1:
新しいJavaプロジェクト「 CrunchifyJerseyEmbeddedHTTPServer
」を作成します。
ステップ2:
Mavenプロジェクトに変換します。 これにより、依存関係を追加するための生活が簡素化されます。 このチュートリアルに従って、既存のJavaプロジェクトをMavenプロジェクトに変換してください。
ステップ3:
このプロジェクトでは、 jersey-server
依存関係を1つにする必要があります。
ステップ4:
com.crunchify.tutorial
パッケージの下にJerseyEmbeddedHTTPServerCrunchify.java
を作成します。
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:
RESTAPIを作成します。 同じパッケージ「 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
、ブラウザに結果が表示されます。
このチュートリアルをお楽しみください。 コメントを共有する必要がありますか?
私は聞くためにここにいます。 ありがとう。