【发布时间】:2012-11-10 19:29:11
【问题描述】:
我有一个需要配置不同的现有项目。这需要在没有重大代码更改的情况下发生。我实际上希望我只能通过配置以某种方式做到这一点。在过去的 2 到 3 天里,我一直在阅读我能找到的关于这个问题的所有内容。我了解 glassfish 类加载器,以及我可以使用什么。
我有一个当前示例项目,它有一个 EJB,它定义了一个 @Local 接口。 ejb 部署在 ejb-module 内,作为 glassfish 域中的 ejb-module。 现在,我正在尝试为另一个应用程序找到一种方法,该应用程序作为耳朵部署到同一域中,以便能够通过其本地接口访问该 EJB。
我已阅读文档说这是不可能的。 然后我在 StackOverflow 上看到了帖子,网上其他人说这是可能的。但是,我找不到实际的解决方案。
通过调查,我意识到@Local EJB 不会将自己注册到 jndi(至少根据日志),如果我使用 glassfish JNDI 浏览器,我也看不到它。所以这对我来说是有道理的,要么这是不可能的,要么是 EJB 项目的部署有问题,我需要以某种方式公开它。
@Remote 是一种可能性,如果它可以通过引用进行,并且没有性能开销。但是允许@Local EJB 访问的首选方法确实是最终需要。
有谁知道我需要做什么才能将@Local EJB 暴露给另一个应用程序? 或者这显然是不可能的?
我正在使用带有 EJB 3.0 的 Glassfish 2.1
如果 Glassfish 2.1 可以处理 EJB 3.1,如果它提供了这种能力,我愿意迁移到它,但我怀疑它是否那么容易。
请帮忙。 谢谢。
我正在添加赏金。要完成赏金,需要在同一个域中运行 2 个 ear 应用程序,其中 A.ear 包含一个 @Local EJB,B.ear 中的应用程序也使用该 EJB。
【问题讨论】:
-
附加信息:docs.oracle.com/cd/E18930_01/html/821-2418/beadh.html#beadl。这适用于 Glassfish 3.1,但文档在 2.1 中陈述了相同的内容。我无法让它工作。
-
也许你应该解释你这样做的动机,但正如你已经提到的,这里还有其他线程处理同样的问题,我同意 jtahlborn 的回答:stackoverflow.com/questions/5681197/…(并且会不要尝试这样做)
标签: ejb-3.0 glassfish-2.x