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を使用するように依頼することができます。
Liferay-Service: false
とLiferay-Spring-Context: true
を指定します。 - これは基本的に spring エクステンダーにベースの spring 設定をロードしないように指示します (例:
portal-spring-extender/src/main/resources/META-INF/spring/parent
)。 このディレクトリの設定は、Liferayサービスの基本的な要件(例えば、側面など)を設定します。 サービスビルダが生成したコード内で使用するデータソースやトランザクションマネージャも含めて、いつでも自分で設定することができます。 OSGi の宣言的サービスではトランザクション管理の側面は現段階ではサポートされていないので、Liferay-Spring-Context
ディレクティブを使用する必要があります。
会員限定記事
Liferay エンタープライズ サブスクリプションをお持ちのお客様は1500件を超えるベストプラクティス、トラブルシューティング、その他のソリューション記事を閲覧できます。ログインすると、記事全体をお読みいただけます。
ログイン