2016-07-05 32 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开箱即用... –