当前位置: 首页 > 知识库问答 >
问题:

从ear应用程序中的web模块(RESTful services)访问ejb

羊丰茂
2023-03-14
@Path("/user")
public class UserWS
{
    @EJB
    SB_usrRemote sb_usrRemote;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String checkLoginAttempt(String username, String password)
    {
        return sb_usrRemote.checkLoginAttempt(username, password).toString();
    }
}

我没有提到这段代码只有在我将ejb.jar包含在ear应用程序的lib文件夹中时才起作用,war模块可以“看到”它。还有其他方法可以访问EJB类吗?我使用的也是Intellij,该应用程序是一个java EE应用程序,包含一个web模块(用于war)。

编辑

我无法避免glassfish从v2升级到V4。这是我做的最好的决定,因为我所有的问题都过去了。在我的代码中所有的ejb注入都非常有效!

谢谢两位的建议!我接受hugh的回答,因为JNDI可能会起作用,但从长远来看,升级glassfish似乎是一个更合适的解决方案。

@Path("/user")
public class UserWS
{
    @EJB (lookup = "java:global/<ear-name>/<ejb-jar-name>/SB_usrRemote")
    SB_usrRemote sb_usrRemote;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String checkLoginAttempt(String username, String password)
    {
        return sb_usrRemote.checkLoginAttempt(username, password).toString();
    }
}

共有1个答案

蒋何平
2023-03-14

bean没有被注入,因为这个类不是EJB。您应该能够使用JNDI查找获得副本:

SB_usrRemote bean = (SB_usrRemote) new InitialContext().lookup("SB_usrRemote");

有关JNDI查找的更多信息,请访问:link

另一种可能是使bean成为托管bean--我认为这在JSF中是可能的,但恐怕我不知道这一点。[按照Bkail的回答,编辑-JAX-RS,而不是JSF]

 类似资料:
  • 当前的Web应用程序不仅可以通过ServletContext对象访问自己的资源,而且还可以访问其他Web应用程序中的资源。假设在server.xml中配置了如下两个Web应用程序: <!-- 本例所在的应用程序 --> <Context docBase="demo" path="/demo" reloadable="true" crossContext="true" source=

  • 问题内容: 我一直在寻找创建模块化Web应用程序的解决方案,该模块是模块化的,即用户可以以简单jar的形式提供自己的插件,然后将其自身的数据提供给我的Web应用程序,而我的webapp将负责用于显示它。 现在的问题是,我希望我的Web应用程序尽可能通用,而不依赖于j2ee Web容器来支持任何内容。即,我不能依靠我的Web容器来提供osgi支持并将Web应用程序作为osgi捆绑包本身部署(这确实使

  • 我可以在AppEngine应用程序中使用GAE托管的MongoDB吗? 如果是,如何用appengine实例调试此连接问题? 提前谢了。

  • 我创建了ear项目,我有两个模块,命名为:mavenproject4-web mavevnproject4-ejb 我试图从web模块的ejb模块中导入一些接口和实体,但我不能。我尝试通过pom.xmm将ejb模块作为依赖项添加到web模块中,然后我的问题就解决了,这样做对吗? 添加依赖项后,我尝试运行project,并出现了以下异常:

  • 我在同一个weblogic服务器上部署了两个项目: 带有EJB(@本地,@无状态)的耳朵存档 一个战争档案 我想从war档案中的一个类访问EJB。这通常是可能的吗?怎样

  • 问题内容: 我创建了一个本地EJB,我想从同一VM中的Web模块访问它。我的代码如下所示: 这很好。但是,有人告诉我,如果我正在使用本地bean,则不需要进行查找,我只需要进行如下注入: 但是,如果我尝试这样做,则会在this.userBean上得到一个空异常。建议我的人与JBoss合作,而我正在使用glassfish。难道我做错了什么? 问题答案: @EJB注释仅适用于应用程序服务器控制的类,例