Liferay以外のデータベースに格納されているデータへのアクセス

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

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

解決

  1. service.xmlに必要に応じて適切な外部データソースなどを指定します
    1. たとえば、 extDataSource指定します
  2. このドキュメントに従ってサービスビルダーモジュールを作成する手順に従います サービスビルダーとサービス (例:サービスの生成など)
  3. Spring構成ファイルにカスタムデータソース定義を追加し、 と呼びます。liferayDataSource
  4. 別名定義を追加します liferayDataSourceextDataSource
    1. たとえば <alias name="liferayDataSource" alias="extDataSource" />

これにより、Bndディレクティブで Liferay-Spring-Context および Liferay-Serviceをアクティブ化するように定義した場合、 liferay-portal-spring-extenderによって提供される基本機能を活用できます。

考慮すべき制約:

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

追加情報

注意

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