legacy-knowledge-base
公開されました Sep. 10, 2025

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

written-by

Michael C. Han

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text
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 指令を使用する必要があります。
did-this-article-resolve-your-issue

legacy-knowledge-base