Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 解説


2.13.1 gRPCプロトコルを利用したシステム

サービスプラットフォームでは,gRPCプロトコルを利用してメッセージの送受信をする機能を提供しています。

gRPCプロトコルを利用したシステムの概要を次の図に示します。

図2‒115 gRPCプロトコルを利用したシステムの概要

[図データ]

gRPC受付は,gRPCインバウンドアダプタから渡されたメッセージを要求電文に変換してビジネスプロセスに渡します。

gRPCアダプタは,ビジネスプロセスから受け取ったメッセージをgRPCサーバに送信します。

なお,サービスプラットフォームとgRPCプロトコルとの接続を利用する場合,次の制限事項があります。

gRPCとの接続に必要な設定について,次に説明します。

〈この項の構成〉

(1) gRPCプロトコルを利用した接続に必要なOSS

gRPCプロトコルを利用した接続では,次のOSSを使用します。

表2‒45 gRPCプロトコルを利用した接続に必要なOSS

項番

OSS名

概要

1

animal-sniffer-annotations-1.21.jar

Animal Sniffer Annotations

2

annotations-4.1.1.4.jar

Google Android Annotations Library

3

checker-qual-3.12.0.jar

Checker Qual

4

commons-codec-1.3.jar※1

The Apache Commons Codec package contains simple encoder and decoders for various formats such as Base64 and Hexadecimal. In addition to these widely used encoders and decoders, the codec package also maintains a collection of phonetic encoding utilities.

5

commons-logging-1.1.1.jar※1

Apache Commons Logging is a thin adapter allowing configurable bridging to other, well known logging systems.

6

error_prone_annotations-2.14.0.jar

Error Prone Annotations

7

failureaccess-1.0.1.jar

Guava InternalFutureFailureAccess and InternalFutures

8

google-auth-library-credentials-1.4.0.jar※1

Google Auth Library For Java Credentials

9

google-auth-library-oauth2-http-0.9.0.jar※1

Google Auth Library For Java OAuth2 HTTP

10

google-http-client-1.19.0.jar※1

Google HTTP Client Library for Java. Functionality that works on all supported Java platforms, including Java 7 (or higher) desktop (SE) and web (EE), Android, and Google App Engine.

11

google-http-client-jackson2-1.19.0.jar※1

Jackson 2 Extensions to The Google HTTP Client Library For Java.

12

grpc-api-1.53.0.jar

GRPC API

13

grpc-auth-1.53.0.jar※1

gRPC: Auth

14

grpc-census-1.53.0.jar※2

gRPCのトレース機能を補助するモジュール

15

grpc-context-1.53.0.jar

GRPC Context

16

grpc-core-1.53.0.jar

GRPC Core

17

grpc-netty-shaded-1.53.0.jar

GRPC Netty Shaded

18

grpc-protobuf-1.53.0.jar

GRPC Protobuf

19

grpc-protobuf-lite-1.53.0.jar

GRPC Protobuf lite

20

grpc-stub-1.53.0.jar

GRPC Stub

21

gson-2.9.0.jar

Gson

22

guava-31.1-android.jar

Guava: Google Core Libraries For Java

23

httpclient-4.0.1.jar※1

HTTPClient provides an efficient, up-to-date, and feature-rich package implementing the client side of the most recent HTTP standards and recommendations.

24

httpcore-4.0.1.jar※1

Apache HttpComponents Core (blocking I/O)

25

j2objc-annotations-1.3.jar

J2ObjC Annotations

26

jackson-core-2.1.3.jar※1

Core Jackson processing abstractions (aka Streaming API), implementation for JSON

27

jsr305-3.0.2.jar

FindBugs JSR305

28

listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar

Guava ListenableFuture Only

29

opencensus-api-0.31.0.jar※2

トレース・メトリックス用ライブラリモジュール

30

opencensus-contrib-grpc-metrics-0.31.0.jar※2

Opencensus用gRPCメトリックスライブラリモジュール

31

perfmark-api-0.25.0.jar

PerfMark API

32

protobuf-java-3.21.7.jar

Protocol Buffers [Core]

33

proto-google-common-protos-2.9.0.jar

Proto Google Common Protos

注※1

gRPCアダプタで使用する場合は必要です。

注※2

gRPC通信ログを出力する場合は必要です。

(2) gRPCライブラリ(OSS)のインストール

gRPCとの接続には,表2-45に記載されたgRPCライブラリ(OSS)のjarファイルが必要です。

前提jarファイルをインストールする手順を次に示します。

  1. Service Platformの添付品CDから表2-45のjarファイルを,次のフォルダにコピーします。

    <サービスプラットフォームのインストールディレクトリ>\CSC\lib\external

  2. J2EEサーバ用オプション定義ファイル(usrconf.cfg)を開き,次のgRPCライブラリ(OSS)のクラスパスを指定します。

    add.class.path=<gRPCライブラリ(OSS)のjarファイルのインストールディレクトリ>\各gRPCライブラリ(OSS)のjarファイル名

(3) protocコマンドの取得とprotoファイルの出力

gRPCとの接続には,protocコマンドが必要です。

protoファイルは,protocol buffer IDL仕様に従って記述されたファイルです。

(a) protocコマンドの取得

サービスプラットフォームの開発環境(Service Architect)を使用する場合は,protocコマンドを取得してください。

protocコマンドを取得する手順を次に示します。

  1. Service Platformの添付品CDからprotoc-21.8-win64.zipを取得します。

  2. 取得したprotoc-21.8-win64.zipを任意のディレクトリに展開します。

  3. 展開したディレクトリから,binディレクトリ,およびincludeディレクトリをコピーし,次のディレクトリに格納します。

    <サービスプラットフォームのインストールディレクトリ>\CSCTE\lib\external\gRPC

protoc-21.8-win64.zipのディレクトリ構成を次に示します。

表2‒46 protoc-21.8-win64.zipのディレクトリ構成

ディレクトリとファイル

説明

ルートディレクトリ

protoc-21.8-win64.zipを展開した任意のディレクトリです。

bin

protocコマンドを格納するディレクトリです。

protoc.exe

protocコマンドです。gRPC受付・アダプタ作成時に,使用します。

include

Well-Known-Typesのprotoファイルを格納するディレクトリです。

google

Googleが提供するWell-Known-Types(汎用メッセージタイプ)のprotoファイルおよびディレクトリです。

protobuf

*.proto

compiler

plugin.proto

(b) protoファイルの出力

gRPC受付またはgRPCアダプタの作成時に入力したprotoファイルは,ユーザ定義受付定義画面(詳細)またはサービスアダプタ定義画面(詳細)のprotoファイルの[出力]ボタンから取得できます。

protoファイルは,ZIPファイルに圧縮されて出力されます。ZIPファイルのディレクトリ構成を次に示します。

表2‒47 出力したprotoファイルのディレクトリ構成

ディレクトリとファイル

説明

ルートディレクトリ

出力したZIPファイルのルートディレクトリです。

proto_path1

proto_pathディレクトリおよびprotoファイルが格納されます。配下のサブディレクトリは,gRPC受付またはgRPCアダプタの作成時に指定したproto_pathのディレクトリ構成で格納されます。

proto_path2

proto_pathN

(c) protoファイル使用時の注意事項

protoファイル使用時の注意事項を次に示します。

  • protoファイル内に記述するimport文のパスは,protoファイルを管理するプロジェクトの起点ディレクトリからの相対パスを記述してください。

  • protoファイル内に定義するpackage名は,protoファイルを管理するプロジェクトの起点ディレクトリからのファイルシステム上の相対パスと一致させることを推奨します。

  • gRPC受付またはgRPCアダプタの作成時に入力するproto_pathは,protoファイルを管理するプロジェクトの起点ディレクトリを指定してください。

  • proto_pathやprotoファイルのパスに,260バイト以上のパスは設定できません。

  • protoファイルのパスに,マルチバイト文字を含むパスは設定できません。

  • Eclipseのワークスペースのパスに,マルチバイト文字を含むパスは設定できません。ワークスペースにマルチバイト文字を含むパスを設定し,gRPC受付またはアダプタを作成した場合はエラーとなります。

  • proto_pathディレクトリ以下には,gRPC受付,gRPCアダプタの作成に使用する必要なファイルだけを格納してください。不要なファイルを格納した場合,protoファイル解析処理中に次のことが発生するおそれがあります。

    • protoファイル解析の処理時間が増加する。

    • protoファイル解析処理の途中でエラーが発生する。

  • protoファイルをインポートする場合,proto_pathに指定した順番でprotoファイルが検索されます。

    例えば,次のディレクトリ構成のとき,proto_pathに複数のディレクトリ(root_dir1,およびroot_dir2)を指定し,protoファイル(foo/bar/root.proto)からほかのprotoファイル(example1/example2/sub.proto)をインポートした場合,foo/bar/root.protoがインポートするprotoファイルは,root_dir1内にあるexample1/example2/sub.protoとなります。

    図2‒116 protoファイルをインポートする場合の動作

    [図データ]

(4) HTTP/2の設定

gRPCを利用したシステムでは,HTTP/2を使用してgRPC電文の送受信を行います。サービスプラットフォームで設定できるHTTP/2に関するパラメタについては,マニュアル「サービスプラットフォーム システム構築・構築ガイド」の「3.1.2 実行環境に必要なソフトウェアを設定する」のgRPCインバウンドアダプタの設定に関する説明を参照してください。

HTTP/2の詳細については,RFCのHTTP/2の説明を参照してください。

(5) 保護区リストファイルの設定

gRPCプロトコルを使用する場合,保護区リストファイル(criticalList.cfg)を変更する必要があります。

保護区リストファイルに次の要素を追加してください。

org.codehaus.mojo.animal_sniffer.*
android.annotation.*
org.checkerframework.*
org.apache.commons.codec.*
org.apache.commons.logging.*
com.google.*
io.grpc.*
org.apache.http.*
com.fasterxml.jackson.core.*
io.opencensus.*
io.perfmark.*

保護区リストファイルについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.2.5 criticalList.cfg(保護区リストファイル)」を参照してください。

(6) gRPC通信時に出力されるログメッセージについての注意事項

gRPCインバウンドアダプタ,gRPC受付,またはgRPCアダプタ内で利用するOSSからログメッセージ(標準出力および標準エラー出力)を出力した場合,標準出力はJ2EEサーバのユーザ出力ログ(usr_out[n].log),標準エラー出力はユーザエラーログ(usr_err[n].log)に出力されます。

標準出力,および標準エラー出力へのログメッセージの出力を抑制したい場合は,J2EEサーバ用ユーザプロパティファイル(usrconf.properties)のjava.util.logging.config.fileに設定したファイル,またはjava.util.logging設定ファイル(%JAVA_HOME%/conf/logging.properties)に次のプロパティを追加します。

これらのプロパティを追加すると,OSSのログメッセージは出力されません。

ただし,gRPCに関する機能だけでなく,設定したパッケージを使用するすべての機能でログが出力されなくなります。