2011-06-23 14 views
0

GlassFish v2でEJB3を使用しています。起動時にGlassFish 2にEJBを読み込ませるにはどうすればよいですか?

私のアプリケーションには、initメソッドを持つStartupServletというGenericServletが含まれています。 java.util.TimerTaskこのメソッドから開始されたポーラーは、InitialContextからファサードを検索できません。

しかし、私はHTTPリクエストを作成してルックアップを行うと成功します。したがって、私はポーラのスタートアップコードが必要なインターフェイスを検索するページへのHTTP接続を行う回避策があります。

アプリケーションを並べ替えると、そのようなハッキングを使用する必要はありません。可能であれば、ソリューションはGFv3でも同様に動作する必要があります。

ご協力いただきありがとうございます。

答えて

0

GF 2では、起動時に確実にタイマーが作成されるサーブレットがあります。これは、リモートセッションBeanを検索し、(重要な部分まで蒸留していない実際のコード、))のinit(から首尾よくそれを呼び出す:私はまだGF 3で動作するように起こっているのかわからない

@EJB(name="TimerSessionRef", beanInterface=TimerSessionRemote.class) 
public class StartTimers extends HttpServlet { 

@Override 
public void init() throws ServletException { 
super.init(); 
try { 
    Context ctx = new InitialContext(); 
    TimerSessionRemote timerSession = (TimerSessionRemote) ctx.lookup("java:comp/env/TimerSessionRef"); 
    timerSession.createTimer(); 
} catch (NamingException ex) { 
    logger.blah(); 
} 
+0

しかし、これはまだ機能するはずです。そうでない場合は、EJB3.1シングルトンを使用して調査します。 – Jim

+0

Jimに感謝します。 @EJBの注入を私たちがすでに呼び出しているBean(デモコードのようなもの)に追加し、それらから厄介なオブジェクトを初期化しました。 – lxs

関連する問題