首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要使用JNDI?-远程EJB调用

为什么要使用JNDI?-远程EJB调用
EN

Stack Overflow用户
提问于 2014-09-01 22:29:03
回答 1查看 1.8K关注 0票数 1

为什么只使用JNDI来访问远程EJB (不同的JVM,不同的主机)?为什么不使用@ EJB注释呢?

在所有EJB书籍中,都提到可以使用@EJB注释访问远程EJB。

示例:http://docs.oracle.com/javaee/7/tutorial/doc/ejb-intro004.htm

32.4.4远程客户端 企业bean的远程客户端具有以下特点。

  • --它可以在不同的机器上运行,也可以在访问的企业bean上运行不同的JVM。(不需要在不同的JVM上运行)。

  • 它可以是web组件、应用程序客户端或其他企业bean。

  • 它可以是web组件、应用程序客户端或其他企业bean。

  • 对于远程客户端,企业bean的位置是透明的。

  • 企业bean必须实现业务接口。也就是说,远程客户端可能无法通过无接口视图访问企业bean .

要创建允许远程访问的企业bean,您必须:

  • 使用@Remote注释装饰企业bean的业务接口: @远程公共接口InterfaceName {.}

  • 或者用@Remote装饰bean类,指定业务接口或接口: @Remote(InterfaceName.class)公共类BeanName实现InterfaceName {…}

客户端对实现远程业务接口的企业bean的访问是通过依赖项注入或JNDI查找.完成的。

  • 要通过依赖项注入获得对企业bean的远程业务接口的引用,请使用javax.ejb.EJB注释并指定企业bean的远程业务接口名称: @EJB示例;

  • 要通过JNDI查找获取对企业bean的远程业务接口的引用,请使用javax.naming.InitialContext接口的查找方法: InitialContext.lookup("java:global/myApp/ExampleRemote");= ( ExampleRemote ) ExampleRemote示例

上面的文字不正确吗?我还没有看到任何使用依赖注入(@ EJB )访问远程EJB的代码。不可能吗?

有几篇文章说,不能使用@ EJB注释调用远程ejb:

打扰一下。我的英语是基本的。

EN

回答 1

Stack Overflow用户

发布于 2016-05-12 09:56:00

我认为主要原因是通过以下方式注入远程(不同的JVM) EJB实例

@EJB(lookup = "jndi_name")

仅受某些应用程序服务器的支持,并且只具有特定的配置。

也就是说,JBoss 7+只在独立文件中定义remote-outbound-connection (并在包含对该连接的引用的已部署包的META-INF文件夹中添加jboss-ejb-jar.xml )时才支持。

此外:

  • @EJB只能在CDI托管bean中工作。
  • 使用这种方法可以强制每个连接定义一次连接属性,而通过编程查找,您可以在每个请求中更改它们(如果需要,您可以手动处理上下文和连接)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25613579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档