我有一个带有EJB(ParameterService
和@Stateless
)实现(@Remote
)的服务(接口ParameterServiceImpl
)。至于它的作用:它使用ParameterProvider
实现来解析参数,这些实现是在运行时发现的(BeanManager
中的CDI查找)。
此EJB部署在两个EAR中:
ParameterProvider
实现,使用数据库读/写参数。
在第二个EAR 中, EJB使用本地(可以使用可用的ParameterProvider
来解析本地参数,这些参数从属性文件或系统属性中读取)。在<{1}}内,也远程使用,它在第一个EAR中委托对远程EJB的参数读/写。
我正在努力使用第二个EAR,因为它无法解析远程EJB。 当我按如下方式注入(测试)EJB时:
RemoteParameterProvider
... @EJB
private ParameterService localParameterService;
@EJB(lookup = "java:global/commons/parameter-service/ParameterService")
private ParameterService remoteParameterService;
可用:
远程EJB StatelessEJBLocator的代理{appName ='mobile', moduleName ='mobile-admin-war',distinctName ='', beanName ='ParameterServiceImpl',view ='interface [...]。ParameterService'}
而localParameterService
是remoteParameterService
。没有抛出或记录异常,我检查了JNDI名称,这是正确的。
我的方法是否有问题(在本地和远程使用EJB),或者我错过了什么?
编辑:接口和类注释:
null
答案 0 :(得分:0)
我认为注射混淆了。 您的ParameterService实现和接口如何? 你使用什么服务器?
答案 1 :(得分:0)
你们大部分都以不同的方式部署,或者他们将共享相同的JVM实例,而ParameterServiceImpl将永远是本地的。