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

通过本地接口从战争中访问ejb

马峻
2023-03-14

是否可以使用本地接口从war访问驻留在ear文件中的ejb
都部署在同一个应用服务器下。

ejb:

@Stateless(name="FirstDemoEJB",mappedName = "FirstDemoEJB/Local")
public class FirstSessionBean implements FirstSessionBeanRemote, FirstSessionBeanLocal {
}

现在,在测试servlet(战争)中:

InitialContext context = new InitialContext();          
Object ob = context.lookup("java:comp/env/FirstDemoEJB/Local");

失败于:

javax。命名。NameNotFoundException:试图在/app/webapp/FirstWebEJBTest/12292093中查找comp/env/FirstDemoEJB/Local时。;

但是远程查找可以很好地工作:

Object ob  = context.lookup("FirstDemoEJB/Local#org.weblogic.FirstSessionBeanRemote");

共有1个答案

南宫阳焱
2023-03-14

您应该使用容器依赖注入从servlet访问ejb。问题很可能是jndi查找路径不正确。使用容器依赖项注入可以让您不必了解jndi命名方案。

public class MyServlet extends HttpServlet {
    @EJB(mappedName = "FirstDemoEJB/Local")
    private FirstSessionBeanLocal firstSessionBeanLocal;
}
 类似资料:
  • 问题内容: 我如何知道要从WAR中获取文件的文件参考。 WAR的结构为: WAR SRC -Model -Network structure WebContent META-INF WEB-INF LIB JSP位于WebContent下,我已将config.txt文件放在WebContent文件夹下,并尝试通过 BufferedReader in = new BufferedReader(new

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

  • 我尝试使用Spring Boot 2.0.2从战争转移到罐子,并且在使用故障安全进行maven测试时遇到了问题。 我看到两种错误: > < li> < code > Java . lang . noclassdeffounderror ,其中列出了我的一个bean类 当我在 IntelliJ 中运行这些测试时,一切正常,但它们在 maven 中失败。与此同时,当我回到建立战争而不是罐子时,一切都有

  • 我在JBoss中部署了一个Web应用程序(jms-api.war),我想从中通过JNDI获得一个JMS连接工厂,没有任何配置(像这样)可以吗?我尝试在没有任何配置的情况下使用JNDI: standalone.xml中的我的连接工厂: 在我的应用程序中,我有这个Spring豆来访问连接工厂(它在我的测试中使用嵌入式hornetq工作): 在jboss启动我得到这个错误,我该如何解决它?: Jboss

  • 问题内容: 相同的.war文件可以很好地部署到Glassfish v2.1上。我不知道上一次尝试v3,但我想检查一下热部署功能,因为有传言说它可以在glassfish v3的netbeans 6.8中使用。因此,我像往常一样进行部署,并收到以下错误消息: 我不明白为什么它抱怨任何与EJB相关的东西,因为这是一个.war文件。有任何想法吗? 更新: 我对glassfish提出了一个错误:https

  • 我试图通过ServiceLocator进行EJB查找,而不硬编码JNDI名称,只使用本地接口名称。问题是EJB分布在其他模块(JAR)中。根据示例,我有以下场景: 项目-xxx: 由容器向JNDI注册: