2016-10-24 15 views
1

EJBを使用してインターセプタを使用するかどうかを知りたいのですが、EJBをインターセプタにのみ使用する

私は@TransactionAttribute(NEVER)を使用してトランザクション管理をオフにしているため、不要なトランザクション管理機能はありません。

私はこれが春にできることを知っています。しかし、私はまだ私のアイデアが良いかどうかを知りたいです。

これが悪い考えであれば、誰でもJEE仕様の一部であるAPIを使用してこれを行う方法を教えてください。 JEE APIを使用してこれを行うことができない場合は、Springを使用しても構いません。

私のアプリケーションにはロギングコードがたくさんあるので、インターセプタが必要です。リクエストが来るたびに、私はテーブルにレコードを残しておかなければなりません。

P.S.

私はEJBが初めてです。私はEJBで、トランザクション管理やインターセプタなどの機能を利用できることを知っています。

サービスがRESTおよびSOAP Webサービスとして公開されているアプリケーションがあります。リモートEJBを使用してサービスをリモートサービスとして公開する予定もあります。

各サービスにはいくつかのログコードが書き込まれています。ロギングコードは、メソッドが返される前に基本的に詳細をテーブルに記録します。また、私たちはいくつかの3pp Webサービスを呼び出すいくつかのサービスを持っています。これらの詳細を別の表に記録します。ロギングコードは、すべてのサービスメソッドに記述されます。

私は、インターセプタを導入し、適切なインターセプタにロギングコードを移動するというアイデアを思いつきました。最初は、いくつかのメソッドにインターセプタを導入しました。コードは正常に動作しています。これらのインターセプタを使用するためにすべてのサービスを書き直したいと思います。

ここでは、メソッドをインターセプトするためにのみEJBを使用することをお勧めします。私は、インターセプタ以外の他のEJB機能を使用したくありません。そこで私は@TransactionAttribute(NEVER)で取引管理を無効にしました。私のクラスは

@Stateless 
@TransactionAttribute(TransactionAttributeType.NEVER) 
public class StudentServiceBean { 

    @ReportingInterceptor 
    public Student getStudent(String id) { 
    } 
} 

@Stateless 
@TransactionAttribute(TransactionAttributeType.NEVER) 
public class StudentBackendBean { 

    @BackendInterceptor 
    public Student getStudent(String id) { 
    } 
} 

は以下

  1. 私は トランザクション管理の旋回横に検討すべきである他の任意のものがあり、私の質問です下のようになりますか?
  2. のインターセプタを利用する場合にのみEJBを使用することをお勧めしますか?
  3. アプリケーションには の100個のサービスが含まれているため、アプリケーションの規模はどのようになりますか? (私はスケーリングが利用可能なリソースに基づいて を利用していることを知っています)

リモートejbsとしてサービスを公開する計画があるため、私はフィルタを使用できません。フィルタはリモートejb呼び出しを傍受できないので、私はフィルタを使いたくありません。

+0

誰でも光を当てることができますか? –

+0

誰でも光を当てることができますか? –

+0

わかっていれば、EJBを使ってログレイヤーを作成したいと思っています。 AFAIK、インターセプタはEJB(例えばセッションBeansやMessage-Driven Bean)を傍受することができるため、「傍受者のみを使用するejb」の意味を理解していません。あなたはいくつかの詳細を提供できますか? – Jaumzera

答えて

1

基本的には、あなたのクラスに@Statelessという名前を付けると、すでにEJBになっています。したがって、この場合、あなたが言いました仕事をするためにインターセプターを使用する際に問題はありません。真実を伝えるために、インターセプタはこの種の仕事をするように正確に作られました。ご質問について

は、私は、トランザクション管理の旋回横に検討すべきである他の任意のものはありますか?

いいえサービスとして@Stateless豆を引き続き使用している場合。 @TransactionAttribute(TransactionAttributeType.NEVER)では、トランザクションを無効にしていないことに注意してください。BeanがTXをサポートしていないと言っているだけです。しかし、あなたの場合、それは大丈夫です。

インターセプタを利用する場合にのみEJBを使用することをお勧めしますか?

さて、注意してください。 Java EEプラットフォームの利点を使用しない場合は、少数の設定で十分です。これを見てみましょう:http://www.vogella.com/tutorials/REST/article.html

アプリケーションには100sのサービスが含まれているため、アプリケーションの規模はどのようになりますか? (私はスケーリングが利用可能なリソースに基づいていることを知っています)。

エンタープライズアプリケーションで約100のサービスを使用しても問題はありません。しかし、私は別々に配備された一部の未成年者のアプリケーションでそれを分割することを検討します。

関連する問題