リフェレイ以外のデータベースに保存されているデータへのアクセス

LiferayはAPIをサポートし、API自体やLiferayのソフトウェアの他の部分に関連する問題を解決し、質問に答えます。 カスタム開発に関する問題や質問は、当社のグローバルサービスチーム、またはそれらのカスタマイズの開発者が対応する場合があります。

この記事では、Liferay DXP以降のLiferay以外のデータベース(異なるデータベーススキーマやサーバーなど)に保存されているデータにアクセスする方法を説明します。

決議

  1. service.xmlに必要に応じて適切な外部データソース等を指定してください。
    1. 例えば、 extDataSourceを指定します。
  2. このドキュメントに従って、サービスビルダーモジュールを作成する手順に従ってください。 サービスビルダーとサービス (サービスの生成など)
  3. Springの設定ファイルにカスタムデータソースの定義を追加して、それを呼び出します liferayDataSource
  4. liferayDataSource から extDataSourceへのエイリアス定義を追加します。
    1. 例えば <alias name="liferayDataSource" alias="extDataSource" />などです。

これにより、Liferay-Spring-ContextLiferay-Serviceを有効にするようにBndディレクティブで定義したと仮定して、liferay-portal-spring-extenderで提供される基本機能を利用できるようになります。

考慮すべき制約。

  1. 1 つのモジュールにつき 1 つのデータ ソースのみを使用できます。 したがって、各外部データソースは、独自のサービスビルダーモジュールにカプセル化する必要があります。
  2. 同じモジュール内で外部データ・ソースと Liferay データベースの使用を混在させることはできません。

追加情報

注意事項

  1. 同一トランザクション内で複数のデータ ソースを使用して複数のデータ ソースに WRITE する場合は、XA トランザクション マネージャと XA データ ソースを使用しなければなりません (2 フェーズ コミットと呼ばれます)。 そうしないと、トランザクションの整合性が失われてしまいます。 これはDXP 7.0より前のバージョンでも同じ原理が適用されています。
  2. さらに柔軟性が必要な場合(複数のデータソースを作成するなど)は、springエクステンダーにデフォルトのサービスサポートを有効にせず、トランザクション制御などにSpringを使用するように依頼することができます。 Liferay-Service: falseLiferay-Spring-Context: trueを指定します。
  3. これは基本的に spring エクステンダーにベースの spring 設定をロードしないように指示します (例: portal-spring-extender/src/main/resources/META-INF/spring/parent)。 このディレクトリの設定は、Liferayサービスの基本的な要件(例えば、側面など)を設定します。 サービスビルダが生成したコード内で使用するデータソースやトランザクションマネージャも含めて、いつでも自分で設定することができます。 OSGi の宣言的サービスではトランザクション管理の側面は現段階ではサポートされていないので、 Liferay-Spring-Context ディレクティブを使用する必要があります。
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています