2016-07-05 30 views
0

我有一個服務(接口ParameterService)與一個EJB(@Stateless@Remote)實現(ParameterServiceImpl)。至於它的功能:它使用在運行時發現的ParameterProvider實現來解析參數(在BeanManager中的CDI查找)。使用EJB本地以及遠程

該EJB部署在兩個耳光:

    第一EAR
  • ,則EJB只本地使用。 EAR附帶使用數據庫讀/寫參數的ParameterProvider實現。在第二EAR
  • ,所述EJB則使用本地(可以使用可用ParameterProvider s,這從屬性文件或系統屬性讀解決本地參數)。它也是也用於遠程,在RemoteParameterProvider內,它將參數讀/寫委託給第一個EAR中的遠程EJB。

我正在努力與第二個EAR,因爲它不解決遠程EJB。 當我注入(用於測試)EJB的如下:

@EJB 
private ParameterService localParameterService; 

@EJB(lookup = "java:global/commons/parameter-service/ParameterService") 
private ParameterService remoteParameterService; 

...的localParameterService可用:

代理遠程EJB StatelessEJBLocator {APPNAME = '移動', MODULENAME =」移動管理員戰」,distinctName = '', beanName = 'ParameterServiceImpl',視圖= '接口[...]。ParameterService'}

remoteParameterServicenull。沒有例外被拋出或記錄,我檢查了JNDI名稱,它是正確的。

我的方法有問題(在本地和遠程使用EJB),還是我錯過了一些東西?

EDIT接口和類註釋:

public interface ParameterService { ... } 

@Stateless 
@Remote(ParameterService .class) 
public class ParameterServiceImpl implements ParameterService { } 

回答

0

我想使注射被混淆。 您的ParameterService實現和接口的外觀如何? 你使用什麼服務器?

+0

實現和接口是簡單的,我將它們添加到問題中。該實現沒有字段,只是簡單的方法)。至於服務器,這是蜻蜓8. –

0

你們大多數都以單獨的方式部署,或者他們將共享相同的JVM實例,並且ParameterServiceImpl將永遠是本地的。

+0

我明確希望它是本地的,但重點是:我希望它也是遠程的。我使用這種模式(使用本地服務,可以委託給一個遠程實例)與其他技術成功,但它似乎無法與Java EE開箱即用... –