2 WebLogic Server RESTサービスとHelidonの統合

RESTサービスとHelidonの統合により、HelidonとOracle WebLogic Server (WebLogic Server)の間の双方向RESTコールが有効になります。WebLogic ServerとHelidon MPの間のRESTful統合は、両方のランタイムでRESTfulリソースを処理およびコールするためのJAX-RSがサポートされるため、開発とメンテナンスが容易です。Jakarta EEのサポートにより、両方の環境で動作する同じRESTfulリソースまたはクライアントを作成できます。
次の図は、RESTサービス、Helidon、Kubernetesクラスタ、VCNおよびロード・バランサの間の双方向通信を示しています:

図2-1 RESTサービスとHelidonの統合



JAX-RSの使用におけるHelidonとWebLogic Serverの主な違いは、サポートされているJakarta仕様のバージョンです。WebLogic ServerがJakarta EE 8をサポートするのに対し、HelidonはJAX-RSまたはJakarta EE 9.1の新しいJakarta RESTful Webサービスをサポートします。この2つのバージョンのJakarta EEの最も顕著な違いは、パッケージ名の変更です。javaxjakartaに置き換わっています。

Helidon 3.xではjakartaネームスペースからのインポートを使用する必要がありますが、WebLogic ServerおよびHelidon 2.xの場合は、同じJAX-RSコードにjavaxを使用する必要があります。

3.xのHelidon JAX-RSインポート
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
2.xのHelidon JAX-RSインポート
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
WebLogic Server JAX-RSインポート
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;

この章の内容は次のとおりです。

前提条件

WebLogic ServerをRESTサービス用にHelidonと統合する場合、すでにWebLogic Kubernetes Operator (Operator)を使用してWebLogic ServerおよびHelidonをKubernetesクラスタにデプロイしていることが前提となります。「WebLogic ServerとHelidonの統合のためのKubernetesクラスタの準備」を参照してください。

WebLogic Serverをデプロイするには、次のものがあることを確認してください:

Helidonをデプロイするには、次を参照してください:

Jakartaパッケージを含むWebLogic Server Javaクライアントをダウンロードするには、「Jakartaパッケージ名を使用したWebLogic Server Javaクライアントのダウンロード」を参照してください。

JAX-RSサーバーの使用

JAX-RSリソースは、特定のパスのルートおよびHTTPメソッドを表す注釈付きメソッドを含む単純なBeanです。注釈付きメソッドは、特定のRESTエンドポイントがコールされたときに呼び出されます。すべてのマッピングおよびルーティングは、JAX-RS注釈に従ってJAX-RS標準の実際の実装によって行われます。

JAX-RSサンプル・リソース

@Path("/greet")                               (1)
public class GreetResource {

    @Path("/hello")
    @GET                                      (2)
    @Produces(MediaType.TEXT_PLAIN)           (3) 
    public Response getHello() {
        return Response.ok("Hello World!")    (4) 
                       .build();
    }
}

前述の例の簡単な説明:

(1) リソースのパス。

(2) HTTPメソッド。

(3) 予期されるレスポンス・コンテンツ・タイプ。

(4) ステータスが200のテキスト・ペイロードを返します。

JAX-RSは、メッセージ本文ライター、リーダー、フィルタまたは例外マッパーを登録できる非常に強力なツールです。HelidonとWebLogicサーバーの両方で、Eclipse JerseyがJAX-RS実装として使用されます。Jersey User Guideを参照してください。

HelidonでのJAX-RS RESTfulリソースの作成およびデプロイの詳細は、JAX-RS applicationsを参照してください。

WebLogic ServerでのJAX-RSリソースの開発およびデプロイの詳細は、RESTful Webサービスの開発に関する項を参照してください。

JAX-RSクライアントの使用

JAX-RSは、RESTfulリソースをコールするための便利なクライアントAPIを提供します。クライアントを使用すると、単純なビルダー・パターンAPIを使用してRESTfulリクエスト・コールを準備して実行できます。

JAX-RSクライアントの例

Client client = ClientBuilder.newClient();
String res = client
    .target("http://localhost:8080")        (1) 
    .path("/greet")                         (2) 
    .request("text/plain")                  (3) 
    .get(String.class);                     (4) (5) 

前述の例の簡単な説明:

(1) デフォルトのルートURLを使用して新しいWebTargetを作成します。

(2) 特定のコンテキスト・パスへのリクエストを準備します。

(3) 予期されるレスポンス・コンテンツ・タイプを設定します。

(4) GETリクエストを実行し、レスポンスを受信するまでブロックします。

(5) パラメータは、予期されるレスポンス・ペイロード・タイプを設定します。正しいレスポンス・ペイロード・タイプへの解析には、使用可能な本文リーダーが使用されます。

独自のメッセージ本文ライター、リーダー、フィルタまたは例外マッパーを登録することもできます。

HelidonでのJAX-RSクライアントの作成の詳細は、Jakarta REST (JAX-RS) Clientを参照してください。

WebLogic ServerでのJAX-RSクライアントの開発およびデプロイの詳細は、RESTful Webサービスの開発に関する項を参照してください。