LiferayはAPIをサポートし、API自体やLiferayのソフトウェアの他の部分と関係するあらゆる問題を解決し、あらゆる質問に回答します。 カスタム開発に関する問題や質問は、当社のグローバルサービスチームまたはそれらのカスタム化の開発者が対応することがあります。
この記事は、Liferay DXP以降で、Liferay以外のデータベース(異なるデータベーススキーマやサーバーなど)に保存されたデータにアクセスする方法を説明します。
解像度
service.xml
に、必要に応じて適切な外部データソースなどを指定する。- 例えば、
extDataSource
を指定します。
- 例えば、
- このドキュメントに従って、サービスビルダーモジュールを作成する手順を説明します: サービスビルダーとサービス (例:サービスの生成など)。
- カスタムデータソースの定義をspringの設定ファイルに追加し、
liferayDataSource
と呼びます。 liferayDataSource
からextDataSource
へのエイリアス定義を追加する。- 例えば、
<alias name="liferayDataSource" alias="extDataSource" />
- 例えば、
これにより、Liferay-Spring-Context
とLiferay-Service
を有効にするようにBndディレクティブで定義したと仮定して、liferay-portal-spring-extender
で提供される基本機能を利用できるようになります。
考慮すべき制約事項:
- 1つのモジュールにつき、1つのデータソースしか使用できません。 したがって、各外部データソースは、それ自身のサービスビルダーモジュールにカプセル化する必要があります。
- 同一モジュール内で、Liferayデータベースと外部データソースを混在して使用することができない。
追加情報
注意事項
- 複数のデータソースを使用し、同じトランザクション内で複数のデータソースにWRITEする場合は、XAトランザクションマネージャとXAデータソースを使用しなければなりません(2フェーズコミットとして知られています)。 そうしないと、トランザクションの整合性が失われます。 これは、DXP 7.0以前も同じです。
- さらに柔軟性が必要な場合(例えば複数のデータソースを作成する場合)、デフォルトのサービスサポートを有効にせず、トランザクション制御などにSpringを使用するようにspring extenderに依頼することができます。
Liferay-Service: false
とLiferay-Spring-Context: true
を指定する。 - これは基本的に、ベースとなるスプリングコンフィグをロードしないようにスプリングエクステンダーに指示します(例:
portal-spring-extender/src/main/resources/META-INF/spring/parent
)。 このディレクトリのコンフィギュレーションは、Liferay Serviceの基本要件(アスペクトなど)を設定します。 サービスビルダーが生成したコード内で使用されるデータソースやトランザクションマネージャを含め、常に独自に設定することができます。 現段階ではOSGiのDeclarative Servicesではトランザクション管理の側面がサポートされていないため、Liferay-Spring-Context
指令を使用する必要があります。
会員限定記事
Liferay エンタープライズ サブスクリプションをお持ちのお客様は1500件を超えるベストプラクティス、トラブルシューティング、その他のソリューション記事を閲覧できます。ログインすると、記事全体をお読みいただけます。
ログイン