2.13.1 gRPCプロトコルを利用したシステム
サービスプラットフォームでは,gRPCプロトコルを利用してメッセージの送受信をする機能を提供しています。
gRPCプロトコルを利用したシステムの概要を次の図に示します。
gRPC受付は,gRPCインバウンドアダプタから渡されたメッセージを要求電文に変換してビジネスプロセスに渡します。
gRPCアダプタは,ビジネスプロセスから受け取ったメッセージをgRPCサーバに送信します。
なお,サービスプラットフォームとgRPCプロトコルとの接続を利用する場合,次の制限事項があります。
-
protoファイルの完全修飾名(「パッケージ名.サービス名」)が重複するサービス名は,gRPC受付,およびgRPCインバウンドアダプタでは使用できません。
-
gRPCが規定している通信方式のうち,サービスプラットフォームでは「Unary RPC」だけを使用できます。
-
サービスプラットフォームでサポートしているProtocol Buffersのバージョンは,Protocol Buffers version 3です。Protocol Buffers version 2仕様のGROUPタイプのメッセージは使用できません。
gRPCとの接続に必要な設定について,次に説明します。
- 〈この項の構成〉
(1) gRPCプロトコルを利用した接続に必要なOSS
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 |
(2) gRPCライブラリ(OSS)のインストール
gRPCとの接続には,表2-45に記載されたgRPCライブラリ(OSS)のjarファイルが必要です。
前提jarファイルをインストールする手順を次に示します。
-
Service Platformの添付品CDから表2-45のjarファイルを,次のフォルダにコピーします。
<サービスプラットフォームのインストールディレクトリ>\CSC\lib\external
-
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コマンドを取得する手順を次に示します。
-
Service Platformの添付品CDからprotoc-21.8-win64.zipを取得します。
-
取得したprotoc-21.8-win64.zipを任意のディレクトリに展開します。
-
展開したディレクトリから,binディレクトリ,およびincludeディレクトリをコピーし,次のディレクトリに格納します。
<サービスプラットフォームのインストールディレクトリ>\CSCTE\lib\external\gRPC
protoc-21.8-win64.zipのディレクトリ構成を次に示します。
ディレクトリとファイル |
説明 |
|||||
---|---|---|---|---|---|---|
ルートディレクトリ |
protoc-21.8-win64.zipを展開した任意のディレクトリです。 |
|||||
bin |
protocコマンドを格納するディレクトリです。 |
|||||
protoc.exe |
protocコマンドです。gRPC受付・アダプタ作成時に,使用します。 |
|||||
include |
Well-Known-Typesのprotoファイルを格納するディレクトリです。 |
|||||
|
Googleが提供するWell-Known-Types(汎用メッセージタイプ)のprotoファイルおよびディレクトリです。 |
|||||
protobuf |
||||||
*.proto |
||||||
compiler |
||||||
plugin.proto |
(b) protoファイルの出力
gRPC受付またはgRPCアダプタの作成時に入力したprotoファイルは,ユーザ定義受付定義画面(詳細)またはサービスアダプタ定義画面(詳細)のprotoファイルの[出力]ボタンから取得できます。
protoファイルは,ZIPファイルに圧縮されて出力されます。ZIPファイルのディレクトリ構成を次に示します。
ディレクトリとファイル |
説明 |
|
---|---|---|
ルートディレクトリ |
出力した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)に次のプロパティを追加します。
-
io.grpc.level = OFF
-
org.apache.commons.logging.level = OFF
-
com.google.auth.level = OFF
-
com.google.api.client.level = OFF
-
com.google.common.level = OFF
-
org.apache.http.level = OFF
-
io.opencensus.level = OFF
-
com.google.protobuf.level = OFF
これらのプロパティを追加すると,OSSのログメッセージは出力されません。
ただし,gRPCに関する機能だけでなく,設定したパッケージを使用するすべての機能でログが出力されなくなります。