2015-11-12 30 views
0

我有一個應用程序與DAO,服務,Web。本地和遠程EJB在同一個項目中

我想使用EJB本地和遠程訪問我的服務。

我創建了一個接口來定義方法和一個界面,按照以下方式,@Local和另一個界面按照@Remote

接口與方法:

public interface OrigemArquivoClient extends BasicCrudFacade<OrigemArquivo, OrigemArquivoSearch, Integer> { 

    public void doSomething(); 
} 

接口@Local

@Local 
public interface OrigemArquivoClientLocal extends BasicCrudFacade<OrigemArquivo, OrigemArquivoSearch, Integer>, OrigemArquivoClient { 

} 

接口@Remote

@Remote 
public interface OrigemArquivoClientRemote extends BasicCrudFacade<OrigemArquivo, OrigemArquivoSearch, Integer>, OrigemArquivoClient { 
} 

要注入我使用像波紋管和工作的本地EJB。

@EJB(beanName="OrigemArquivoServiceBean") 
private OrigemArquivoClientLocal service; 

,還可以遠程我試圖查找:正在使用查找

bean = ctx.lookup("java:global/" + ear + "/" + projeto + "/" + ejb); 

主機是用java:global.EDIEAR.EDIWeb-0.0.1-SNAPSHOT.OrigemArquivoServiceBean。但是,在weblogic中存在「!brjndi的末尾,並且當我嘗試使用它進行查找時,java:global.EDIEAR.EDIWeb-0.0.1-SNAPSHOT.OrigemArquivoServiceBean!br我得到的結果是:遠程EJB的結果,而是任何weblogic實例。

Click to image

回答

0

嘗試這樣的財產以後:

try { 
    Context ctx = new InitialContext(); 
    MyEJBLocal myEjb = (MyEJBLocal) ctx.lookup("java:comp/env/jndiName"); // suppose br??? 
} catch (NamingException e) { 
    throw new EJBException(e); 
}