Apache Meecrowaveを使ったマイクロサービスの構築

Apache Meecrowaveを使用したマイクロサービスの構築

**

1. 概要

このチュートリアルでは、ApacheMeecrowaveフレームワークの基本的な機能について説明します。

Meecrowave is a lightweight microservices framework from Apache。これは、CDI、JAX-RS、およびJSONAPIで非常にうまく機能します。 セットアップと導入は非常に簡単です。 また、Tomcat、Glassfish、Wildflyなどの重いアプリケーションサーバーをデプロイする手間を排除します。

2. メーベン依存

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


    org.apache.meecrowave
    meecrowave-core
    1.2.1

Maven Centralで最新バージョンを確認してください。

3. シンプルサーバーの起動

Meecrowaveサーバーを起動するために必要なのは、main method、create a Meecrowave instance and invoke the main bake() methodを記述することだけです。

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

アプリケーションを配布パッケージとしてパッケージ化する場合、このmainメソッドは必要ありません。これについては、後のセクションで説明します。 メインクラスは、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.example.meecrowave");
builder.setJaxrsMapping("/api/*");
builder.setJsonpPrettify(true);

そして、サーバーをベイクするときにこのbuilder インスタンスを使用します。

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

より多くの構成可能なプロパティhereがあります。

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();
    }
}

主にJAX-RS annotations to create the REST endpointsを使用していることに注意してください。 JAX-RShttps://www.example.com/jax-rs-spec-and-implementationsの詳細については、[こちら]をご覧ください。

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

5. 単体テスト

Meecrowaveで記述されたRESTAPIのユニットテストケースの記述は、注釈付きのJUnitテストケースの記述と同じくらい簡単です。

テストの依存関係をpom.xml firstに追加しましょう。


    org.apache.meecrowave
    meecrowave-junit
    1.2.1
    test

最新バージョンを確認するには、Maven Centralを確認してください。

また、テスト用のHTTPクライアントとしてOkHttpを追加しましょう。


    com.squareup.okhttp3
    okhttp
    3.10.0

最新バージョンhereをチェックしてください。

依存関係を設定したら、テストを書きましょう。

@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. 依存関係注入

inject dependencies into a classにするには、特定のスコープ内でそれらのクラスに注釈を付ける必要があります。

ArticleService classの例を見てみましょう。

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

次に、javax.inject.Injectアノテーション:を使用して、これをArticleEndpointsインスタンスに挿入しましょう。

@Inject
ArticleService articleService;

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

Meecrowave Mavenプラグインを使用すると、配布パッケージの作成が非常に簡単になります。


    ...
    
        
            org.apache.meecrowave
            meecrowave-maven-plugin
            1.2.1
        
    

プラグインを配置したら、use the Maven goal meecrowave:bundle to package the applicationを実行します。

パッケージ化すると、ターゲットディレクトリ内に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を使用してマイクロサービスを作成する方法を学びました。 また、アプリケーションに関するいくつかの基本的な構成を検討し、配布パッケージを準備しました。

いつものように、コードスニペットはGithub Projectにあります。

**