1概要

このチュートリアルでは、Apache

Meecrowave

フレームワークの基本機能について説明します。

  • Meecrowaveは、Apache ** の軽量のマイクロサービスフレームワークで、CDI、JAX-RS、およびJSON APIと非常によく連携しています。セットアップとデプロイは非常に簡単です。また、Tomcat、Glassfish、Wildflyなどの重いアプリケーションサーバーを展開する手間も省けます。


2 Mavenの依存関係

Meecrowaveを使用するには、__pom.xmlで依存関係を定義しましょう。

<dependency>
    <groupId>org.apache.meecrowave</groupId>
    <artifactId>meecrowave-core</artifactId>
    <version>1.2.1</version>
</dependency>


3シンプルサーバの起動

Meecrowaveサーバーを起動するために必要なことは、

__ main


methodを書き、**


Meecrowave


instanceを作成し、メインの


bake()

__methodを呼び出すことです。

public static void main(String[]args) {
    try (Meecrowave meecrowave = new Meecrowave()) {
        meecrowave.bake().await();
    }
}

アプリケーションを配布パッケージとしてパッケージ化する場合、この主な方法は必要ありません。これについては後のセクションで説明します。 IDEからアプリケーションをテストするときにメインクラスが役立ちます。

利点として、IDEで開発しながら、メインクラスを使用してアプリケーションを実行すると、コードの変更が自動的に再ロードされるため、サーバーを再起動してテストする手間が省けます。

Java 9を使用している場合は、必ずjavax

__。xml.bind

__モジュールをVMに追加してください。

--add-module javax.xml.bind

この方法でサーバを作成すると、デフォルト設定で起動されます。


Meecrowave.Builder

クラス____を使用してプログラムでデフォルト設定を更新することができます

Meecrowave.Builder builder = new Meecrowave.Builder();
builder.setHttpPort(8080);
builder.setScanningPackageIncludes("com.baeldung.meecrowave");
builder.setJaxrsMapping("/api/** ");
builder.setJsonpPrettify(true);

そしてサーバをベイク処理している間、この

__builder

__instanceを使用してください。

try (Meecrowave meecrowave = new Meecrowave(builder)) {
    meecrowave.bake().await();
}

より多くの設定可能なプロパティがありますhttp://openwebbeans.apache.org/meecrowave/meecrowave-core/configuration.html[ここ]。


4 RESTエンドポイント

サーバーの準備が整ったら、次にRESTエンドポイントをいくつか作成しましょう。

@RequestScoped
@Path("article")
public class ArticleEndpoints {

    @GET
    public Response getArticle() {
        return Response.ok().entity(new Article("name", "author")).build();
    }

    @POST
    public Response createArticle(Article article) {
        return Response.status(Status.CREATED).entity(article).build();
    }
}

RESTエンドポイントを作成するには、主に

JAX-RSアノテーションを使用しています

。 JAX-RSの詳細については、https://www.baeldung.com/jax-rs-spec-and-implementations.[here]を参照してください。

次のセクションでは、これらのエンドポイントをテストする方法について説明します。

5.単体テスト

Meecrowaveで書かれたREST API用の単体テストケースを書くのは、注釈付きのJUnitテストケースを書くのと同じくらい簡単です。

テストの依存関係を

__pom.xmlの

__firstに追加しましょう。

<dependency>
    <groupId>org.apache.meecrowave</groupId>
    <artifactId>meecrowave-junit</artifactId>
    <version>1.2.1</version>
    <scope>test</scope>
</dependency>

最新版を見るにはhttps://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22org.apache.meecrowave%22%20AND%20a%3A%22meecrowave-junit%22[Maven Central]

また、テスト用のHTTPクライアントとしてhttps://www.baeldung.com/guide-to-okhttp[OkHttp]を追加します。

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.10.0</version>
</dependency>


ここ

をチェックしてください。

依存関係が整ったら、次に進み、テストを書きます。

@RunWith(MonoMeecrowave.Runner.class)
public class ArticleEndpointsTest {

    @ConfigurationInject
    private Meecrowave.Builder config;
    private static OkHttpClient client;

    @BeforeClass
    public static void setup() {
        client = new OkHttpClient();
    }

    @Test
    public void whenRetunedArticle__thenCorrect() {
        String base = "http://localhost:" + config.getHttpPort();

        Request request = new Request.Builder()
          .url(base + "/article")
          .build();
        Response response = client.newCall(request).execute();
        assertEquals(200, response.code());
    }
}

テストケースを書いている間、

MonoMeecrowave.Runner

クラスでテストクラスにアノテーションを付けて、テストサーバーのためにMeecrowaveによって使用されるランダムなポートにアクセスするために設定を注入するようにしてください

6.依存性注入

依存関係をクラスに注入するには、特定のスコープ内でこれらのクラスに注釈を付ける必要があります。


__ArticleService

__クラスの例を見てみましょう。

@ApplicationScoped
public class ArticleService {
    public Article createArticle(Article article) {
        return article;
    }
}

それでは、

javax.inject.Inject

アノテーションを使って、これを

ArticleEndpoints

インスタンスにインジェクトしましょう


_:

_

@Inject
ArticleService articleService;

7.アプリケーションのパッケージ化

Meecrowave Mavenプラグインを使えば、配布パッケージの作成はとても簡単になります。

<build>
    ...
    <plugins>
        <plugin>
            <groupId>org.apache.meecrowave</groupId>
            <artifactId>meecrowave-maven-plugin</artifactId>
            <version>1.2.1</version>
        </plugin>
    </plugins>
</build>

プラグインを配置したら、Mavenの目標

__meecrowave:bundle

__を使用してアプリケーションをパッケージ化しましょう** 。

パッケージ化されると、ターゲットディレクトリ内にzipファイルを作成します。

meecrowave-meecrowave-distribution.zip

このzipには、アプリケーションをデプロイするために必要な成果物が含まれています。

|________meecrowave-distribution
| |________bin
| | |________meecrowave.sh
| |________logs
| | |________you__can__safely__delete.txt
| |________lib
| |________conf
| | |________log4j2.xml
| | |________meecrowave.properties

binディレクトリに移動してアプリケーションを起動しましょう。

./meecrowave.sh start

アプリケーションを停止するには

./meecrowave.sh stop

8.まとめ

この記事では、Apache Meecrowaveを使用してマイクロサービスを作成する方法について学びました。また、アプリケーションに関する基本的な構成と配布パッケージの準備についても調べました。

いつものように、コードスニペットはhttps://github.com/eugenp/tutorials/tree/master/apache-meecrowave[Github Project]にあります。

  • **