Liferay以外のデータベースに保存されているデータにアクセスする。

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 extenderに依頼することができます。 Liferay-Service: falseLiferay-Spring-Context: trueを指定する。
  3. これは基本的に、ベースとなるスプリングコンフィグをロードしないようにスプリングエクステンダーに指示します(例: portal-spring-extender/src/main/resources/META-INF/spring/parent)。 このディレクトリのコンフィギュレーションは、Liferay Serviceの基本要件(アスペクトなど)を設定します。 サービスビルダーが生成したコード内で使用されるデータソースやトランザクションマネージャを含め、常に独自に設定することができます。 現段階ではOSGiのDeclarative Servicesではトランザクション管理の側面がサポートされていないため、 Liferay-Spring-Context 指令を使用する必要があります。
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています