Java 如何注入在另一个jar中接收的接口的实现

Java 如何注入在另一个jar中接收的接口的实现,java,jar,glassfish,ejb,cdi,Java,Jar,Glassfish,Ejb,Cdi,我有一个名为打包为war的应用程序 我有一个名为CustomerLogic的接口打包在一个jar中 应用程序A有一个依赖项,在其war中包含接口CustomerLogic 现在,我想将这个应用程序提供给不同的客户,这样他们就可以通过创建一个类、实现接口CustomerLogic、将其打包为(EJB?)jar来编写自己的逻辑。并将其部署到应用程序服务器,在本例中为Glassfish 因此,在我的申请代码中,我有: @Inject private CustomerLogic customerLogi

我有一个名为打包为war的应用程序

我有一个名为CustomerLogic的接口打包在一个jar中

应用程序A有一个依赖项,在其war中包含接口CustomerLogic

现在,我想将这个应用程序提供给不同的客户,这样他们就可以通过创建一个类、实现接口CustomerLogic、将其打包为(EJB?)jar来编写自己的逻辑。并将其部署到应用程序服务器,在本例中为Glassfish

因此,在我的申请代码中,我有:

@Inject
private CustomerLogic customerLogic;//This will hopefully inject any implementation of the interface
但由于还没有CustomerLogic的实现,因此无法部署

因此,我创建了一个特定于客户的jar,其中包含:

public class VolvoLogic implements CustomerLogic
并将其部署到玻璃鱼上。 但这会失败,因为找不到接口,它驻留在应用程序A的war中

我是不是想错了。最好的方法是什么。
我不想创建EAR,因为我不想每次新客户需要时都重新构建应用程序。我只想发布标准的非接触式应用程序,它们可以实现自己的逻辑。

因此,如果我正确理解这一点,由于类装入器隔离,部署到glassfish的两个模块将永远无法相互通信。那么这给我留下了什么选项呢……它应该使用远程接口和全局JNDI名称来工作。如果在接口上指定
@Remote
,则在部署时,它应该打印出可用于远程查找服务的全局JNDI名称。因此,如果我理解正确,由于类装入器隔离,部署到glassfish的两个模块将永远无法相互通信。那么这给我留下了什么选项呢……它应该使用远程接口和全局JNDI名称来工作。如果在接口上指定
@Remote
,则在部署时,它应该打印出可用于远程查找服务的全局JNDI名称。