2009-08-11 9 views
2

Application Serverを動作していない:JBossの4.2にAroundInvokeインターセプタ

私は@Timeoutを注釈付きとてjavax.ejb.TimerServiceインスタンスによって呼び出されるメソッドをintercept.Itsしたいメソッドを持っています。

メソッドシグネチャ:

@Stateless 
class A 
     @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 
    @Timeout 
     @Interceptors(AnInterceptor.class) 
    public void doSomething(Timer timer)... 

は、今私はインターセプタクラスを持っている:

public class AnInterceptor { 
     @AroundInvoke 
     public Object intercept(InvocationContext ic) throws Exception{... 
     System.out.prin(...) 

それは(@Timeoutでアノテートされていない)他の方法の方法で作業を行う

感謝、 ロッド

答えて

1

Per AroundInvokeは、タイムアウト方法(ビジネスインタフェース、コンポーネントインタフェース、およびWebサービスエンドポイントのみ)でサポートされています。グーグルの検索、AroundTimeoutはEJB 3.1(ページ12および22)に来ているように見える。一方

http://www.ow2.org/xwiki/bin/download/Events2009AnnualConference/Program/JavaEE6-EasyBeans-F-Benoit.pdf

、あなたは自分自身に同じBeanへの参照を注入することで問題を回避することができます。つまり、 "A"内から別の "A"を挿入(または参照)し、 "doSomething"メソッドから新しい "doTimeout"メソッドを作成して呼び出します。代わりに@AroundInvokeを使用しての

1

は、「EJBタイマーサービスのタイムアウトメソッドのインターセプタは、ターゲット・クラスまたはインターセプタクラスのメソッドに@AroundTimeoutアノテーションを使用して定義することができる@AroundTimeout

を使用してみてください。クラスごとに1つの@AroundTimeoutメソッドのみが許可されます。ここで

あなたは http://docs.oracle.com/javaee/6/tutorial/doc/gkedm.html#gkedu

「タイムアウトイベントをインターセプトする」セクションの下に、それを使用する方法を見ることができます
関連する問題