13.1 電子メールおよびSMSメッセージング・プロバイダのカスタマイズ
MessagingProvider
インタフェースを実装することで、電子メールおよびSMSメッセージ・プロバイダをカスタマイズできます。
前提条件
- Oracle Linux 7.x環境
- コンパイル用のJDK 1.8.x
- Apache Maven 3.6.2以上
- 実装に必要なサードパーティ製jar
電子メールおよびSMSメッセージング・プロバイダをカスタマイズするには、次を実行します:
カスタム・ロジックの実装およびJarファイルの作成
- 管理コンテナの
/u01/oracle/libs/messagingprovider-interface-12.2.1.4.1-<date>.jar
からプロジェクトzipファイルをダウンロードし、作業ディレクトリに抽出します。 - 電子メールおよびSMSのカスタム・ロジックの実装を作成します。インタフェースおよびメソッドの詳細は、Javadocリファレンスを参照してください。
ノート:
電子メールとSMSには、別々の実装クラスが必要です。
送信者インタフェースを実装する実装クラスで、必要なインポートを使用して
@Service
宣言が作成されていることを確認します。この宣言は、フレームワークが実行時にカスタム実装をロードするのに役立ちます。 - この実装を含むjarファイルをコンパイルおよび生成するために、
pom
ファイルに変更を加えます。次のことを確認します:jersey-hk2
依存性は、ビルドのpom
ファイルで依存性として宣言する必要があります。MessagingProvider
インタフェースを使用し、ビルドのpom
ファイルで依存性として宣言する必要があります。- 実装では、1つのjarおよび追加のサードパーティ製jarを生成する必要があります。1つ以上のクラスを使用してsendメソッドを実装し、このjarファイルにパッケージ化することもできます。
- 実装をテストして、必要に応じて機能することを確認します。
実装とOAAとの統合
- OAAでカスタム実装クラスを構成します。
- 電子メールの場合:
ChallengeEmail
列挙のcustomProvider
プロパティを、実装クラスの完全修飾クラス名で更新します。たとえば、実装クラスの名前が
com.company.MyCustomEmailMessagingSender
の場合、ChallengeEmail
列挙プロパティをbharosa.uio.default.challenge.type.enum.ChallengeEmail.customizedProvider=com.company.MyCustomEmailMessagingSender
として更新しますこれを行うには、次のサンプル・リクエストに示すように、構成プロパティREST APIを使用します:
curl --request PUT 'https://<PolicyUrl>/policy/config/property/v1' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic <Base64Encoded(<username>:<password>)>' \ --data '[ { "name": "bharosa.uio.default.challenge.type.enum.ChallengeEmail.customizedProvider" "value": "com.company.MyCustomEmailMessagingSender" } ]'
ノート:
<PolicyUrl>
から/oaa-policy
を削除します。たとえば、https://<host>:<port>/oaa-policy/policy/config/property/v1
ではなくhttps://<host>:<port>/policy/config/property/v1
を使用しますPolicyUrl
の検索および認証の詳細は、「OAA管理API」を参照してください。構成プロパティRESTエンドポイントの詳細は、「構成プロパティRESTエンドポイント」を参照してください
- SMSの場合:
ChallengeSMS
列挙のcustomProvider
プロパティを、実装クラスの完全修飾クラス名で更新します。たとえば、実装クラスの名前が
com.company.MyCustomSMSMessagingSender
の場合、ChallengeSMS
列挙プロパティをbharosa.uio.default.challenge.type.enum.ChallengeSMS.customizedProvider=com.company.MyCustomSMSMessagingSender
として更新しますこれを行うには、次のサンプル・リクエストに示すように、構成プロパティREST APIを使用します:
curl --request PUT 'http://<PolicyUrl>/policy/config/property/v1' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic <Base64Encoded(<username>:<password>)>' \ --data '[ { "name": "bharosa.uio.default.challenge.type.enum.ChallengeSMS.customizedProvider" "value": "com.company.MyCustomSMSMessagingSender" } ]'
- 電子メールの場合:
実装を実行時に使用可能にする
電子メールまたはSMSのサービス・ポッドが構成/開始されると、共有ボリューム情報がその構成の一部になります。そのチャートのdeployment.yaml
ファイルに表示されます。
values.yaml
に指定します。
ノート:
mountPathPrefix
値は変更しないでください
# volume to store customized email sending implementation
customizedFactorImplVolume:
# name of the volume
name: "nfsvolume"
# server where the volume is located
server: <NFS_IP_ADDRESS>
# path on the server where the volume is located
path: <NFS_PATH>/FactorProviderImpls
# prefix of volume's mounted path in email container
mountPathPrefix: /u01/oracle/
# relative path of mounted volume, relative to the above prefix
mountRelativePath: <NFS_VOLUME>/customprovider
# indicate whether the volume should be readOnly
readOnly: false
# names of customizedJars expected in mounted volume, separated by comma
customizedJars: "OAACustomMessaging-Provider.jar"
- 次のように、電子メール・チャートの
deployment.yaml
ファイルを編集します:{{- if .Values.customizedFactorImplVolume }} - name: {{.Values.customizedFactorImplVolume.name}} nfs: server: {{.Values.customizedFactorImplVolume.server}} path: {{.Values.customizedFactorImplVolume.path}} {{- end }}
- カスタム実装およびサードパーティ製の依存性jarファイルを次のフォルダにコピーします:
<mountPathPrefix><mountRelativePath>/
。
ポッド内のノードを停止して起動し、カスタム実装のロードを開始します。