@@ -56,17 +56,20 @@ src/main
56
56
│ │ ├── Trace.java
57
57
│ │ ├── TraceTagHolder.java
58
58
│ │ └── TraceTag.java
59
- │ ├── reactive [Reactive Messaging & Connecter]
60
- │ │ ├── ReactiveResource.java
61
- │ │ └── ReactiveJmsResource.java
59
+ │ ├── reactive [Reactive Messaging & Connecter]
60
+ │ │ ├── DaoEvent.java
61
+ │ │ ├── ExecutorServiceHelper.java
62
+ │ │ ├── ReactiveJmsResource.java
63
+ │ │ └── ReactiveResource.java
62
64
│ ├── graphql [GraphQL]
63
65
│ │ ├── Country.java
64
66
│ │ └── CountryGraphQLApi.java
65
- │ ├── jpa [拡張機能 JPA/JTA]
66
- │ │ ├── Country.java
67
- │ │ ├── CountryResource.java
68
- │ │ ├── Greeting.java
69
- │ │ └── JPAExampleResource.java
67
+ │ ├── jpa [拡張機能 JPA/JTA]
68
+ │ │ ├── CountryDAO.java
69
+ │ │ ├── Country.java
70
+ │ │ ├── CountryResource.java
71
+ │ │ ├── Greeting.java
72
+ │ │ └── JPAExampleResource.java
70
73
│ ├── grpc [拡張機能 gRPC]
71
74
│ │ ├── javaobj [gRPC Javaシリアライゼーション版]
72
75
│ │ │ ├── GreeterServiceImpl.java
@@ -84,7 +87,7 @@ src/main
84
87
├── proto
85
88
│ └── helloworld.proto [gRPC IDL定義]
86
89
└── resources
87
- ├── application.yaml [Helidonで使う設定ファイル ]
90
+ ├── application.yaml [Helidonの設定ファイル microprofile-config.properties 相当として利用可能 ]
88
91
├── createtable.ddl [JPA拡張機能で使うH2用のDDL]
89
92
├── jbossts-properties.xml [JTAの設定ファイル]
90
93
├── logging.properties [ログ設定ファイル]
@@ -102,9 +105,14 @@ demo
102
105
│ ├── open-tracing.yaml
103
106
│ ├── simple-deployment.yaml
104
107
│ └── simple-service.yaml
105
- └── tracing [トレーシングデモ]
106
- ├── request.json
107
- └── tracing-demo.sh
108
+ ├── tracing [トレーシングデモ]
109
+ │ ├── request.json
110
+ │ └── tracing-demo.sh
111
+ └── weblogic [WebLogic Server コンテナ作成・設定]
112
+ ├── config-jms.sh
113
+ ├── config-jms.yaml
114
+ ├── domain.properties
115
+ └── start-weblogic.sh
108
116
```
109
117
110
118
## ビルド方法
@@ -122,7 +130,7 @@ mvn package
122
130
java -jar target/helidon-demo-mp.jar
123
131
```
124
132
125
- ## Docker イメージの作成
133
+ ## ■ Docker イメージの作成
126
134
127
135
Dockerfileを使わずに、[ Jib] ( https://github.com/GoogleContainerTools/jib ) を使ってMavenから直接イメージをビルドします.
128
136
ルートディレクトリにあるDockerfileを使ってもイメージの作成は可能です.
@@ -166,7 +174,51 @@ helidon-demo-mp latest 1b4d2e82f6
166
174
$ docker push (remote docker repository path/)helidon-demo-mp
167
175
```
168
176
169
- ## gRPC 関連の補足 (oracle.demo.grpc パッケージ)
177
+ ## ■ MicroProfile Health デモ (oracle.demo.health パッケージ)
178
+
179
+ ` /health/live ` (Liveness)、` /health/ready ` (Readiness) 及び ` /health ` (複合パターン) のエンドポイントを使ってヘルスチェックができます。
180
+
181
+ ``` json
182
+ {
183
+ "outcome" : " UP" ,
184
+ "status" : " UP" ,
185
+ "checks" : [
186
+ {
187
+ "name" : " my-health-check-liveness" ,
188
+ "state" : " UP" ,
189
+ "status" : " UP" ,
190
+ "data" : {
191
+ "time-to-fail" : 0 ,
192
+ "uptime" : 29071
193
+ }
194
+ },
195
+ {
196
+ "name" : " my-health-check-readiness" ,
197
+ "state" : " UP" ,
198
+ "status" : " UP"
199
+ }
200
+ ]
201
+ }
202
+ ```
203
+
204
+ このデモでは、タイムアウト値を設定することによって、サーバーの起動時間が一定の値を超えるとLivenessをDOWNにすることができます。
205
+ タイムアウト値(デフォルト= 0 [ タイムアウトしない] )は、2種類の方法で設定できます。
206
+
207
+ 1 . microprofile-config.properties (or application.yaml) で設定する
208
+
209
+ ``` text
210
+ # Health
211
+ #demo.healthcheck.liveness.name=_my-health-check
212
+ demo.healthcheck.time-to-fail=30 # in second, default: 0
213
+ ```
214
+
215
+ 2 . RESTで設定する
216
+
217
+ ```
218
+ $ curl localhost:8080/myhealth?timeToFail=30
219
+ ```
220
+
221
+ ## ■ gRPC 関連の補足 (oracle.demo.grpc パッケージ)
170
222
171
223
protobuf ペイロードを使ったサーバー実装は、POJO + Annotaion を使った方法と、GrpcMpExtensionを使って従来型のサービス実装クラスをデプロイする方法の、2種類を提供しています。おすすめは POJO + Annotaion です。
172
224
@@ -216,7 +268,7 @@ pom.xmlの通常ビルドフェーズとは独立してprotoファイルのコ
216
268
mvn -P protoc generate-sources
217
269
```
218
270
219
- ## OpenTracing SPAN定義のためのアノテーション (oracle.demo.tracing.interceptor パッケージ)
271
+ ## ■ OpenTracing SPAN定義のためのアノテーション (oracle.demo.tracing.interceptor パッケージ)
220
272
221
273
MicroProfileのOpenTracingの実装の多くはSPANの定義を暗黙的に行っているケースが多く、コーディングしなくてもそれなりのトレース情報が出力されるので便利です。また、明示的にSPANを定義したい場合は@Traced アノテーション(org.eclipse.microprofile.opentracing.Traced)を使って、メソッドにトレース出力をつけることができます。しかしながら、標準機能では必ずしも欲しい情報を出力してくれるとは限りません。そこで、ここではSPANの定義処理をCDI Interceptorとして実装して、Trace出力の内容をアノテーションである程度コントロールできるようにしてみました。
222
274
@@ -247,7 +299,7 @@ public List<Country> getCountriesWithError(){
247
299
| value | defaul = "" ; SPAN名の接頭辞をつける、指定した場合 "<接頭辞>:<メソッド名>" となる|
248
300
| stackTrace | default = false ; Exception発生時にtrace logにstack traceを出力するか否か |
249
301
250
- ## MicroProfile Reactive Messaging (oracle.demo.reactive パッケージ)
302
+ ## ■ MicroProfile Reactive Messaging (oracle.demo.reactive パッケージ)
251
303
252
304
JPA/JDBC経由でデータベースにアクセスするデモ(oracle.demo.jpaパッケージ)のバリエーションとして、MicroProfile Reactive Messaging を使ったデータベースの非同期更新(Event Sourcing)処理を実装しています。RESTでリクエストを受け付けた後、非同期更新イベントを発行します。
253
305
@@ -299,7 +351,7 @@ wlthint3client.jar は後述するWebLogic Serverのコンテナ・イメージ
299
351
300
352
``` bash
301
353
WL_HOME=${HOME} /opt/wls1411
302
- WL_T3CLIENT_JAR=${WL_HOME} /wlserver/server/lib/wlthint3client.jar
354
+ WL_T3CLIENT_JAR=${WL_HOME} /wlserver/server/lib/wlthint3client.jar # これを正しいパスに
303
355
304
356
mkdir -p m2repo
305
357
@@ -314,7 +366,7 @@ mvn deploy:deploy-file \
314
366
```
315
367
3 . pom.xml 及び Javaソースのコメントアウトを外す
316
368
- pom.xml
317
- ``` text
369
+ ``` xml
318
370
<!-- WebLogic thin t3 client for 14.1.1 -->
319
371
<!--
320
372
<dependency>
@@ -374,7 +426,7 @@ mp.messaging:
374
426
provider. url: t3: // localhost:7001 # 確認
375
427
```
376
428
377
- #### (参考) テスト用の WebLogic Server Docker インスタンスの作成
429
+ ### テスト用の WebLogic Server Docker インスタンスの作成
378
430
379
431
JMS Connector のテストに使うための設定済み WebLogic Server インスタンスを Docker コンテナで実行するためのスクリプトを用意しています。
380
432
@@ -401,7 +453,7 @@ WebLogic Server Deploy Tooling を使ってJMSリソースを追加し、サー
401
453
docker cp wls1411: / u01/ oracle/ wlserver/ server/ lib/ wlthint3client. jar wlthint3client. jar
402
454
```
403
455
404
- ## MicroProfile GraphQL (oracle. demo. graphql パッケージ)
456
+ ## ■ MicroProfile GraphQL (oracle. demo. graphql パッケージ)
405
457
406
458
JPA 経由でデータベースのCRUD 操作をRest で公開するコードは既に提供していましたが、これをMicroProfile GraphQL 仕様にしたものを追加しました。
407
459
スキーマは `/ graphql/ schema. graphql` から取得できます。
@@ -467,6 +519,36 @@ curl -X POST -H "Content-Type: application/json" localhost:8080/graphql \
467
519
468
520
! [データベースへのアクセス・パターン](doc/ images/ microprofile- demo- crud. png)
469
521
522
+ ## ■ (おまけ)Cowsay (oracle. demo. cowweb パッケージ)
523
+
524
+ https: // github.com/ricksbrown/cowsay
525
+
526
+ ```
527
+ $ curl localhost: 8080 / cowsay/ say
528
+ ______
529
+ < Moo ! >
530
+ ------
531
+ \ ^ __^
532
+ \ (oo)\_______
533
+ (__)\ )\/ \
534
+ || ---- w |
535
+ || ||
536
+
537
+ $ curl " localhost:8080/cowsay/think?message=Hello&cowfile=moose"
538
+ _______
539
+ ( Hello )
540
+ ------ -
541
+ o
542
+ o \_\_ _/ _/
543
+ o \__/
544
+ (oo)\_______
545
+ (__)\ )\/ \
546
+ || ---- w |
547
+ || ||
548
+
549
+ ```
550
+ エンジョイ!
551
+
470
552
-- -
471
553
_Copyright © 2019 - 2021 , Oracle and/ or its affiliates. All rights reserved. _
472
554
0 commit comments