0

ファイルを保持するには、データベースまたはファイルシステムの 2 つの方法があります。

だから私はEJBを持っています。それはサーブレットからJavaアプリケーションからのように接続できます。問題は、バイナリ ファイルの操作にあります。ここで、ファイルシステムとの間でファイルを読み書きすることは、EJB (他の Java EE コンテナーではありません) の制限であることがわかりまし た。彼らはデータベースに保管すると言います。

Ok。私は言った。しかし、あちこちで、それは非常に悪い考えだと誰もが言いますそして、私はそれに完全に同意します。

もう 1 つのソリューションは、Apache Jackrabbit 実装の JCR です。しかし、私はそれを両方の方法だと考えています。ここでは、ファイルシステムにもファイルを保持すると書かれています。

では、ベストプラクティスは何ですか? JCR なしでファイルシステムにファイルを書き込めないのはなぜですか?

4

2 に答える 2

2

JCA コネクタを使用して、EJB からファイルシステムにアクセスできます。したがって、ファイルシステムは、基本的なファイルシステム アクセスのリソースhttp://code.google.com/p/txfs/になります。より完全なトランザクション アクセスのための XADisk。Nuxeo はもう JCR を使用しません。データ グリッドとして Infinispan の上に Modeshape (JBoss/ RedHat 実装) もあります。

于 2013-10-31T11:19:10.533 に答える
1

バイナリ ファイルをファイル システムに保持すると、全体的なパフォーマンスへの影響が最小限に抑えられ、これが最も適切な方法です (Alfresco のような大量のバイナリ コンテンツを管理するアプリケーションは、ファイル システムを使用し、それで問題なく動作します)。複数のサーバーからファイルにアクセスする必要がある場合は、それらを単一のサーバーに保存し、ネットワーク上でディレクトリを共有するか、単にNASを使用できます。ただし、ファイル システムの操作はトランザクションではありませんが、それが重要な場合は、ファイル システム レベルでトランザクションをサポートするXADiskなどのツールを使用できます。

JCRも良い方法ですが、バイナリファイルのみを保存することを意図したものではなく、「コンテンツ」(バイナリデータとバイナリデータを説明するメタデータ)を階層的に保存することを目的としています。ただし、JCR を使用すると、別のレベルの抽象化が追加され、パフォーマンスに影響を与える可能性があります。Apache Jackrabbit、Alfresco、Nuxeo などの最も一般的な JCR 実装は舞台裏でファイル システムを使用するため、JCR が提供するメタデータ、バージョン管理、サムネイル、ドキュメント プレビューなどの追加機能が本当に必要かどうかを検討する必要がありますが、パフォーマンスは低下します。と統合コスト、またはニーズを満たす場合は、ファイル システムを使用することができます。

于 2013-10-31T06:34:53.133 に答える