1

DSpaceでクエリを処理し、フロントエンドとPostgreSQLの間でデータを管理する方法

4

2 に答える 2

2

Tomcat などのサーブレット コンテナで実行される他のすべての Web アプリケーションと同様に、ファイル WEB-INF/web.xml はクエリの処理方法を制御します。DSpace の JSPUI の場合、このファイルは [dspace-install]/webapps/jspui/WEB-INF/web.xml にあります。JSPUI は、リクエストを処理するためのいくつかのフィルター、リスナー、およびサーブレットを定義します。

フィルターは、JSPUI が実行されていること、認証されたユーザーまたは認証された管理者のみが制限された領域を表示できることを報告し、コンテンツ ネゴシエーションを処理するために使用されます。

リスナーは、DSpace が正しく開始されたことを確認します。開始時に、DSpace は構成をロードし、接続プールで使用するデータベース接続を開き、Spring に IoC マジックを実行させます。

最初に、クエリがどのように処理されるかを確認するための最も重要な部分は、サーブレットとサーブレット マッピングです。サーブレット マッピングは、特定のリクエスト パスでリクエストを処理するために使用されるサーブレットを定義します。 example.com/dspace-jspui/submit へのすべてのリクエストは、org.dspace.app.webui.servlet.SubmissionController によって処理されます。

サーブレットは Java コード ;-) と DSpace Java API を使用してリクエストを処理します。そのほとんどは dspace-api モジュール ([dspace-source]/dspace-api/src/main/java/... を参照) にあり、一部は dspace-services モジュール ([dspace-source]) にあります。 dspace-services/src/main/java/...)。データベースとの通信に関心がある場合、DSpace Java API 内には 2 つの重要なクラスがあります。

  • 1 つは org.dspace.core.Context です。コンテキストには、ログインしているユーザーの有無、初期化および接続されたデータベース接続 (すべてがうまくいった場合)、およびキャッシュに関する情報が含まれます。メソッド Context.abort()、Context.commit()、および Context.complete() は、データベース トランザクションを管理するために使用されます。これが、データベースを操作するほとんどすべてのメソッドがメソッド パラメータとして Context を要求する理由です。Context は、データベース接続とデータベース トランザクションを制御します。
  • もう 1 つは org.dspace.storage.rdbms.DatabaseManager です。DatabaseManager は、データベースのクエリ、更新、削除などを処理するために使用されます。すべての DSpaceObjects には、データベースに格納されているオブジェクトの情報を含むオブジェクト TableRow が含まれています。DSpaceObject クラス (org.dspace.content.Item、org.dspace.content.Collection など) 内では、DatabaseManager.update(Context, DSpaceObject) を使用して TableRow を操作し、変更をデータベースに保存することができます。DatabaseManager は、SQL クエリをデータベースに送信し、データベース内のデータを更新、削除、挿入、または作成するためのいくつかのメソッドを提供します。その API を参照するか、DSpace ソースで「SELECT」を探して例を取得してください。

JSPUI では、データベースの状態をコミットする場合は Context.commit() を使用することが重要です。リクエストが処理され、Context.commit() が呼び出されなかった場合、トランザクションは中止され、変更は失われます。Context.complete() を呼び出すと、トランザクションがコミットされ、データベース接続が解放され、コンテキストが終了済みとしてマークされます。Context.complete() を呼び出した後は、コンテキストをデータベース接続に使用できなくなります。

DSpace は非常に巨大なプロジェクトであり、その ORM やデータベースの初期化などについてもっと多くのことを書くことができます。しかし、これはすでに DSpace の開発を開始するのに役立つはずです。DSpace マニュアルの「アーキテクチャ」の部分を読むことをお勧めします: https://wiki.duraspace.org/display/DSDOC5x/Architecture

より具体的な質問がある場合は、stackoverflow またはメーリング リスト ( http://sourceforge.net/p/dspace/mailman/ ) dspace-tech (DSpace に関する質問) および dspace- devel (DSpace の開発に関する質問)。

于 2015-05-12T10:22:17.500 に答える
1

これは、実行している DSpace のバージョンと構成によって異なります。

  • DSpace 4.0以降では、デフォルトで、DSpace JSPUIはすべての検索とブラウジングにApache Solrを使用します。DSpace は、Solr のすべてのインデックス作成とクエリを、そのDiscovery モジュールを介して実行します。Discovery (Solr) ベースの検索/インデックス作成クラスは、「org.dspace.discovery」パッケージで利用できます。

  • DSpace の以前のバージョン (3.x 以下) では、デフォルトで、DSpace JSPUI はApache Luceneを直接使用します。これらの古いバージョンでは、DSpace はすべてのインデックス作成と検索のために直接 Lucene を呼び出していました。Lucene ベースの検索/インデックス作成クラスは、" org.dspace.search " パッケージで利用できます。

どちらの場合でも、クエリは直接 Solr または Lucene に渡されます (これも DSpace のバージョンによって異なります)。結果は解析され、DSpace UI 内に表示されます。

于 2015-05-11T17:11:13.353 に答える