2012-02-21 13 views
0

Javaクラス(私のプロジェクトでHistoryBeanという名前)をServletContextに追加する必要があります。私は自分のプロジェクトの中にあるさまざまなサーブレットにHistoryBeanクラスの新しいインスタンスを作成したくありません。私はServletContextからそれを取得したい。私の提案を助けてください。Webアプリケーションのアプリケーションスコープにクラスを追加する方法

答えて

3

あなたはServletContextListenerでそれを行うことができます。

public void contextInitialized(ServletContextEvent e) { 
    e.getServletContext().setAttribute("historyBean", new HistoryBean()); 
} 

@WebListenerまたはweb.xmlで<listener>..</listener>とあなたのリスナーを登録します。

+0

おかげBozhoを.... Iそれをしました。今私はサーブレットのServletContextからそれを取得する方法を理解しようとしているので、HistoryBean内のメソッドを使用できるように........ – mona

+0

'ctx.getAttribute(" historyBean ")' – Bozho

3

JSFを使用しているので、アプリケーションスコープのBeanとして登録するだけです。

@ManagedBean(eager=true) 
@ApplicationScoped 
public class HistoryBean { 
    // ... 
} 

eager=trueに注意してください、これはいくつかのビューまたはBeanでそれを参照することなく、Webアプリケーションの起動時にBeanをautoconstructs、あなたはこのためServletContextListenerは必要ありません)

それはだこの道だけでなく、#{historyBean}として通常の方法JSFコンテキストで使用できますが、次のようにキーとして管理対象Bean名を持つサーブレットコンテキスト属性としても利用できるサーブレットにあります:

HistoryBean historyBean = (HistoryBean) getServletContext().getAttribute("historyBean"); 
+0

BalusC。しかし、私はJPAアノテーションを使用することはできません..... – mona

+0

JPAアノテーションではありません。これがJSFアノテーションです。 – BalusC

関連する問題