1

EJB 1.1について質問があります(はい、本当に古いです...-私をからかってはいけません...)

したがって、質問は古いものの1つです。EJB内でdisk ioを実行しないのはなぜですか?特にファイルの読み取り。

より正確に言うと、ユースケース:特別なデータエクスポートのテンプレートとして必要なファイルはすべて1つです。つまり、次のようになります。

  • 1つのファイル
  • ごくまれに変更されます(たとえば、特別なメンテナンス時間内)
  • めったに読まない
  • 重負荷なし

そのテンプレートファイルをディスクから読み取らない理由はありますか?EJB内でディスクIOを実行しようとしたときに、ForbiddenOperationExceptionなどの技術的な制限はありますか。私はすでにテストを実行しており、読み取りと転送は問題なく機能しています。その動作はEJB2.xまたは3.x内で異なりますか?

どうもありがとう!

4

3 に答える 3

1

この制限は、EJBのクラスタリングを可能にする仕様にあります。これは、EJBが自己完結型であり、ファイルシステムなどの外部環境に依存しない場合に簡単になります。

ファイルシステムへのアクセスは正常に機能するはずですが、仕様に本当に準拠したい場合は、EJB jar内にファイルをバンドルし、を使用してクラスパスからアクセスできますClass.getResourceAsStream

于 2012-04-17T08:31:01.587 に答える
0

ブロブとしてデータベースに保存してみませんか?

次に、管理Webアプリを使用してブラウザーから変更できます。

LDAPを使用してWebアプリを認証/承認できます

おっと、人生をとても複雑にしてすみません

于 2012-06-08T15:14:45.150 に答える
0

EJBの制限から:

エンタープライズBeanは、主にファイルがトランザクションリソースではないため、ファイルへのアクセスを許可されていません。EJBがファイルシステム内のファイルまたはディレクトリにアクセスしたり、ファイル記述子を使用したりできるようにすると、コンポーネントの分散性が損なわれ、セキュリティ上の問題が発生します。

ファイルをJARにパックして、ファイルを一緒に読み取ったり、変更したり、個別に再デプロイしgetResource()たりできます。getResourceAsStream()

それ以外の場合、現在のアプローチで問題が発生していない場合は問題ありませんが、仕様に従ってはお勧めしません。

于 2012-04-17T09:36:11.363 に答える