2013-11-23 88 views
0

有一個應用程序ABC,其依賴關係在ejb module 'XYZ'上,但兩者都部署在不同的服務器計算機上運行的&。如何查找某個類的對象

ABC部署在JBoss AS & IP地址是192.108.1.1
XYZ部署在JBoss AS & IP地址是192.108.1.2

在XYZ EJB模塊

,有其Access數據庫和xyzService類填充數據到一個bean類,請參見下面

@Stateless(mappedName = "ejb/xyzService") 
@TransactionManagement(TransactionManagementType.BEAN) 
public class XyzService extends XyzPersistenceService implements xyzRemote, xyzLocal { 

    public List<xyzBean> fetchDataFromDB (List<String> idList) throws Exception 
     { 
      List<xyzBean> detailList = null; 
      try { 
       // gets data from DB and populate into a bean class i.e. xyzBean 

      } catch (Exception e) { 
       new myExceptionClass("error", e); 
      } 
      return detailList; 
     } 
    } 

//Bean class 

public class xyzBean{ 
    String Id; 
    String name; 
    // getter-setter here 
} 

現在我想, 1.查找服務類XYZ模塊的對象 2.調用的方法
3.得到bean類的列表

請您指導我該怎麼做,而我有點困惑如何開始從我的ABC應用程序這樣做呢?

回答

1

這個例子適用於連接到XYZ bean,但是您可以輕鬆使用它來對ABC bean進行一些調整。無論如何,這裏是你如何查找你的xyzService

  1. 明確
  2. 通過@EJB註解
  3. 通過EJB-REF

明確

// Lookup the EJB from JNDI 
InitialContext ctx = new InitialContext(); 
xyzRemote remoteobj = (xyzRemote)ctx.lookup("ejb/xyzService"); 

通過註釋

@EJB (mappedName="ejb/xyzService") 
private xyzRemote remoteobj; 

通過註釋,容器通過DI注入遠程EJB bean的實例。

通過EJB-REF

在您的客戶端類中,添加下面的代碼。這只是一個

InitialContext ctx = new InitialContext(); 
xyzRemote remoteobj = (xyzRemote) ctx.lookup("java:comp/env/ejb/xyzService"); 

是作爲配置客戶端的InitialContext的,你需要一個jndi.properties文件

### JBossNS properties 
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory 
java.naming.provider.url=jnp://192.108.1.2:1099 
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces 
+0

非常感謝艾略特。感謝您的幫助和時間。 – user1010399

相關問題