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>/。
ポッド内のノードを停止して起動し、カスタム実装のロードを開始します。