2012-03-21 122 views
0

我有一個會話bean部署在其他人控制的ear文件中。我以戰爭文件或耳朵文件的形式提供網絡應用程序。我需要提供該會話bean的能力,以便它可以將數據推送到位於我的war文件中的對象。我正在考慮在其中提供一個ear文件,其中包含一個用於Web部件的war文件,以及一個sar文件以提供一個mbean,可以從該ear文件中引用該另一個人正在管理的mbean。我之前創建了mbeans,但這次數據不是由mbean處理的,而是由戰爭應用程序內的對象(單身訪問?)處理的。戰爭應用程序本質上必須有自由權限訪問持有數據的對象。JBoss會話bean將數據推送到戰爭應用程序

如何彌合會話bean和war應用程序中的對象之間的差距?

回答

0

任何EJB默認綁定到JNDI。您可以輕鬆地使用JNDI從servlet中查找會話bean並執行會話bean。你真的不需要擁有MBean。

這裏是僞代碼(只是僞,可能無法編譯)

樣品狀態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; 
} 
} 

樣本servlet訪問上述豆

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 2012-03-22 04:28:28

+0

我不確定我遵循「PUSH數據輸出」的含義。有狀態bean只是存儲數據。當bean被創建時,您可以將其存儲在會話中並在您希望訪問它的任何時候將其引用。如果你想要事件監聽器,那麼你將不得不相應地進行構造,這樣Stateful bean中的變化將產生其他組件可以註冊和監聽的事件。 – uaarkoti 2012-03-22 21:20:40

+0

我沒有提及任何有狀態或無狀態的bean。我提到了一個會話bean。我應該提到會話bean中有業務邏輯。因此,這不是關於存儲數據,而是爲了執行一些外部實體可以調用的業務邏輯。然後,會話bean中的業務邏輯需要「將結果推出」給戰爭組件內的對象。 – Mike 2012-03-26 15:59:55