Java 1構成サーバーのWebサービス

Javaはバックエンド作業の喜びです。優れたパフォーマンスを発揮するだけでなく、業界で長い間使用されており、実績のある信頼性の高いプラットフォームとしてマークされています。

これは完全にカスタマイズ可能であり、Javaをサーバー側言語と同じくらい効率的かつ強力にするのに役立ちます。利用可能なライブラリのほぼすべての組み合わせからアプリケーションを構築し、必要な機能のみを選択できます。

これには利点があります。これはまた、各プロジェクトに特定のレゴ建設任務を与えます。残念ながら、市販のレゴおもちゃのようには機能しません。好きな機能や必要な機能を使用するには、パッケージを選択する必要があります。これまでのところ、これはサーバーが正しく動作するために非常に詳細になっています。XML/ JSONパーサーを選択する必要があります。

最初のアプリケーションのステップバイステップガイドを提供するために、このシリーズでは、

プロジェクトを作成する

プロジェクトのビルドと依存関係のツールとして、Gradleを使用しますこれにより、プロジェクトに必要な依存関係を指定できます。Gradleを使用するプロジェクトの構造は次のとおりです。

src
- main
    - java
    - resources
- test
    - java
    - main
build.gradle
settings.gradle

srcディレクトリに、すべてのソースコードを配置します。Testing-test-**用のサブディレクトリと、アプリケーション-main用のサブディレクトリがあります。これら2つのディレクトリのそれぞれに、** javaという名前のJavaコードディレクトリとその他のファイルリソースリソースがあります。

build.gradleでは、すべてのプロジェクト構成を保存し、settings.gradleではプロジェクトを構成します。

これは、このシリーズで使用されるbuild.gradleです。

plugins {
    id 'java'
}

group 'JettyServer'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.28'
        compile 'org.eclipse.jetty:jetty-server:9.4.19.v20190610'
        compile 'org.eclipse.jetty:jetty-servlet:9.4.19.v20190610'
        compile 'org.glassfish.jersey.inject:jersey-hk2:2.28'
        compile 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.2'
        runtime 'org.glassfish.jaxb:jaxb-runtime:2.3.2'
    compile 'org.eclipse.jetty:jetty-servlets:9.4.19.v20190610'
    compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.28'
    compile 'org.hibernate:hibernate-core:5.4.4.Final'
    compile 'org.xerial:sqlite-jdbc:3.20.1'
    compile 'com.zsoltfabok:sqlite-dialect:1.0'
}

Javaでサーバーを作成する

Rails、Flask、Express.jsなど、他のWebテクノロジーを使用している方もいるでしょう。これらの言語では、サーバーの作成はほとんどユーザーから隠されています。オブジェクトを作成して初期化できます。そうしないと、すべてがすぐに使用可能になります。これは私たちのサーバーには当てはまりません。しかし、見てみましょう:

まず、ここでメインクラスとメインメソッドが必要です。すべての開始コードを配置します。

public class Main {
    public static void main(String[] args) throws Exception {

    }
}

最初に、すべてのスレッドを保持するキューが必要です。リクエストの処理に慣れます。設定が大きすぎるとすべてのシステムリソースを消費し、設定が小さすぎるとすべての負荷を処理できないことに注意してください。ここでは、容量は20から始め、2ずつ増やしてキューを80に制限します。このキューをスレッドプールに提供し、キューへのジョブの分散を処理します。

public static void main(String[] args) {
//Queue initialization
    BlockingQueue<Runnable> threadPoolQueue = new BlockingArrayQueue<>(20, 2, 80);
// Create ThreadPool for the server to use.
// default idle time as defined in the QueuedThreadPool.
    QueuedThreadPool threadPool = new QueuedThreadPool(20, 2, (int) TimeUnit.MINUTES.toMillis(1), threadPoolQueue);
  threadPool.setName("jetty-test-server");
  threadPool.setDaemon(true);
}

システムリソースを設定したので、サーバーを作成する必要があります。サーバークラスとサーバーコネクタクラスを作成します。コネクタはサーバーのネットワークを開きます。

// Instance of server object - adds the threadPool to use
Server server = new Server(threadPool);
// instance of server connector with server instance to handle connections for
ServerConnector connector = new ServerConnector(server);
// set port to use
connector.setPort(8080);
// add connector to server
server.setConnectors(new Connector[]{connector});

次に、RESTリソースのServletContextHandlerを追加します。コンテキストハンドラーは、要求ハンドラーメソッドを実行するための環境を提供します。これには、リクエスト、レスポンス、セッション、その他の重要なリソースが含まれます。

final ServletContextHandler servletContextHandler = new ServletContextHandler();
servletContextHandler.setContextPath("/");

ContextHandlerを設定します。次のステップは、ContextHandlerが動作するためのServletHolderを提供することです。ServletHolderは、パスを適切に処理するための状態管理に使用されます。これには、それ自体が単なるインスタンスサーブレットであるサーブレットコンテナが含まれています(サーバーが呼び出すことができるリソース)は、アプリケーションで使用するすべてのリソースで初期化されています。

// Holds all the resources we want to register (currently, there's nothing to do)
ResourceConfig resourceConfig = new ResourceConfig();
// handles state for servlets
final ServletHolder servletHolder = new ServletHolder(new ServletContainer(resourceConfig));
servletContextHandler.addServlet(servletHolder, "/*");

ServletContextHandlerを初期化したら、それをサーバーに提供して、リクエストを委任できるようにします。このために、ハンドラーリストとServletContextHandlerを使用してサーバーに渡します。

HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] {servletContextHandler});
server.setHandler(handlers);

私たちはすべて準備しました(Yaaaay:D)。サーバーを起動しましょう:

server.start();
server.join();

現在、ポート8080で実行されています。

から:https://dev.to//funcke/web-services-in-java-1-configure-the-server-1kh7

元の記事を公開0件 ・いい ね0件 訪問数400

おすすめ

転載: blog.csdn.net/cunxiedian8614/article/details/105690170