2012-03-21 6 views
0

私は他の誰かによって制御されるearファイルにデプロイされるセッションBeanを持っています。私は、warファイルかearファイルのどちらかの形でweb-appを提供しています。私はそのセッションBeanに能力を提供して、自分のwarファイル内に存在するオブジェクトにデータをプッシュできるようにする必要があります。私は耳のファイルにそのWebパーツ用のwarファイルと、他の人が管理しているearファイルから参照できるmbeanを提供するsarファイルを提供することを考えていました。以前はmbeansを作成しましたが、今回はmbeanで処理されるのではなく、war app内のオブジェクト(シングルトンにアクセスしましたか?)によって処理されます。本質的に戦争アプリは、データを保持しているオブジェクトに自由に治める必要があります。JBossセッションBeanが戦争アプリにデータをプッシュ

war-app内のセッションBeanとオブジェクト間のギャップを埋めるにはどうすればよいですか?

答えて

0

すべてのEJBは、デフォルトでJNDIにバインドされています。 JNDIを使用してサーブレット内からセッションBeanを簡単に見つけ出し、セッションBeanを実行できます。あなたは本当にMBeansを持つ必要はありません。

ここ擬似コード(単に擬似コンパイルなくてもよい)である

サンプルステートフルBean

package org.jboss.example; 
import javax.ejb.Stateful; 

@Stateful 
public class StatefulBean { 

private String state; 

public String getState() { 
    return state; 
} 

public void setState(String state) { 
    this.state = state; 
} 
} 

私への参照を取得し、上記豆

package org.jboss.example; 
import java.io.IOException; 
import java.io.PrintWriter; 

import javax.naming.InitialContext; 
import javax.naming.NamingException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class BeanServlet extends HttpServlet { 

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    PrintWriter writer = response.getWriter(); 
    StatefulBean statefulBean = getStatefulBean(request); 
    writer.println("State: " + statefulBean.getState()); 
} 

private StatefulTestBean getStatefulBean(HttpServletRequest request) 
     throws ServletException { 

    StatefulBean sb = null; 
    try { 
     InitialContext ic = new InitialContext(); 
     sb = (StatefulBean) ic.lookup("java:ejb/StatefulBean"); 

     } catch (NamingException e) { 
      throw new ServletException(e); 
     } 
    } 
    return sb; 
} 
} 
+0

にアクセスするサンプル・サーブレット戦争側からのセッションBeanにリンクするプロキシへのインタフェースです。戦争がセッションBeanからデータを取得する必要があるなら、それは素晴らしいことです。しかし、セッションBeanは戦争中のオブジェクトにデータOUTをプッシュする必要があります。私は戦争の中のオブジェクトへの参照をセッションBeanに渡すことはできないと思いますか?オブジェクトはシリアル化されてしまうでしょうか?どのようにセッションBeanからのデータのプッシュを解決するために戦争に...? – Mike

+0

「PUSHデータOUT」の意味に従っているかどうかわかりません。ステートフルBeanは単にデータを格納します。 Beanが作成されると、Beanにセッションに格納してアクセスすることができます。イベントリスナーが必要な場合は、ステートフルBeanの変更によって他のコンポーネントが登録して待機できるイベントが生成されるように、それに応じてアーキテクトする必要があります。 – uaarkoti

+0

ステートフルステートレスBeanについて何も言及していませんでした。私はセッションBeanについて言及しました。私はセッションBeanにビジネスロジックがあることを述べておきます。したがって、これはデータの格納ではなく、一部の外部エンティティが呼び出せるビジネスロジックを実行するためです。次に、セッションBean内のビジネスロジックは、warコンポーネント内のオブジェクトに「結果をプッシュアウト」する必要があります。 – Mike

関連する問題