从不同模块但相同的应用程序注入@EJB

时间:2017-05-12 19:47:13

标签: java java-ee dependency-injection

我在Weblogic Server上有一个应用程序。 我有一个问题,从我的RESTWEBservice注入EJB到我的SOAPwebservice。 该应用程序有几个模块。现在只有三个是重要的。

部署如下所示:

应用

  • API(JAR)
  • SOAPWebService(WAR)
  • RESTWebService(WAR)

两个Web服务都内置了API。 这是课程的重要部分。 我想要注入我的RestWebservice EJB:

@Local(EJBSOAPinterface.class)
@Stateless(mappedName = "RESTCLASS", name="RESTCLASS")
public class RESTCLASS implements EJBSOAPinterface{...}

两个模块使用的API中的接口:

@Local
public interface EJBSOAPinterface{....}

想要注入EJB的SOAP webserviceModule

public SOAPCLASS {
@EJB(lookup="JNDINAME..")
EJBSOAPinterface ejb;
......}

我试图在接口和EJB上同时使用@Local和@Remote。它不工作。

我已尝试过注入EJB以及

public SOAPCLASS{
@EJB(name="RESTCLASS")
EJBSOAPinterface ejb;
.....}
它也不起作用。 问题是我的SOAPCLASS因为注入而不会部署。 取决于我是如何做的,我会得到不同的例外情况。但是目前我得到java.lang.InstantiationException:创建名称为“.....”的bean时出错 .....依赖注入失败:无法找到关于类接口“.....”的bean定义

是。我是java的新手。任何帮助都会有所帮助!关于如何解决这个问题! 谢谢!

1 个答案:

答案 0 :(得分:0)

更新 - 已解决。 我确实在界面上放了@Remote而不是@Local。 EJB本身也是如此。我拥有的JNDI名称是正确的(RESTCLASS#INTERFACEPACKETNAME.EJBSOAPINTERFACE)。

问题在于,当我在WLServer上部署应用程序时,我在RESTCLASS之前部署了SOAPCLASS。 这意味着它无法找到任何JNDI名称。因为它还没有建成。 我只是改变了那些2的部署顺序,它立即起作用。 谢谢!