2015-03-08 63 views

回答

1

是的,他們可以。

例子:

public interface NodeService { 

    public void start(); 
} 

先執行:

import javax.ejb.Local; 
import javax.ejb.Remote; 
import javax.ejb.Stateless; 

@Stateless 
@Remote(NodeService.class) 
public class NodeService1 implements NodeService { 

    @Override 
    public void start() { 
    } 

} 

其次實行:

import javax.ejb.Local; 
import javax.ejb.Remote; 
import javax.ejb.Stateless; 

@Stateless 
@Remote(NodeService.class) 
public class NodeService2 implements NodeService { 

    @Override 
    public void start() { 
    } 

} 

參見:

1

當然可以。

您可以通過任意數量的bean實現任何接口(本地和遠程),但是您需要指定要注入哪些特定的bean。

對於簡單的例子,你可以使用beanName屬性:

@Remote 
public interface Worker {}  

// 

@Stateless(name = "firstBean") 
public class Bean1 implements Worker {} 

// 

@Stateless(name = "secondBean") 
public class Bean2 implements Worker {} 

// 
@Stateless 
public class LogicBean { 
    @EJB(beanName = "firstBean") 
    private Worker worker1; 

    @EJB(beanName = "secondBean") 
    private Worker worker2; 
} 

您也可以通過mappedName屬性與jndi names玩。

參見:

https://developer.jboss.org/thread/230291?tstart=0

+0

用'mappedName'可以在主機動態地從一個經紀人加載庫?也就是說,圖書館只在經紀人身上。任何使用該庫的主機都可以通過JNDI查找來找到它。這甚至有可能嗎? – Thufir 2015-03-11 08:42:23

+0

@Thufir,我不明白你的問題。你能重新表達一下嗎? – ar4ers 2015-03-11 12:05:59

+0

主機和代理在不同的系統上,不同的JVM的。主機使用JMS與代理進行通信。該圖書館僅**經紀人。客戶端位於主機上,需要該庫。客戶端能否使用JNDI加載或查找庫? (可能不是。) – Thufir 2015-03-11 12:15:39

相關問題