EAR 与单独的 EJB +战争

发布于 2024-11-28 01:12:56 字数 132 浏览 3 评论 0原文

将应用程序部署为 EAR(带有 1 个 EJB 和 1 个 WAR 模块)与单独的模块有什么区别?我想使用 GlassFish 3 Web 配置文件,但它不支持 EAR 存档。我可以简单地将 EJB 和 WAR 作为单独的模块使用吗?还有其他选择吗?

What's the difference in deploying application as EAR (with 1 EJB and 1 WAR module) vs separate modules? I want to use GlassFish 3 web profile but it does not support EAR archive. Can I simply use EJB and WAR as separate modules? Any other options?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

3 种部署变体之间似乎存在一些混淆:

  1. 包含 EJB 和 WEB 模块的 EAR
  2. 部署单独的 EJB 模块和单独的 WEB 模块
  3. 部署包含 EJB 类或 EJB jar 的 WEB 模块。

在第一种情况下,逻辑上您有一个应用程序,但该应用程序分为两层。 WEB 模块与 EJB 模块是隔离的,因为它可以使用 EJB 模块中的类,但 EJB 模块不能使用 WEB 模块中的类。由于它是单个应用程序,因此可以使用对 EJB bean 的本地访问,并且 EJB bean 的注入可以按预期工作。

在第二种情况下(您似乎在问题中提到了这种情况),没有逻辑上的单个应用程序,而是实际上有两个单独的模块。它们确实在同一个 JVM 中运行,但官方 Java EE 不允许使用本地访问,必须使用远程访问(尽管实际上本地访问通常可以工作)。此外,在 Web 模块的 beans 中注入 EJB beans 不能直接使用简单的 @EJB 注释,而是必须使用 lookup 属性来指定全局JNDI 名称。

最后,第三种情况(您似乎没有提到,但提到了“家”)与第一种情况有点相似,但在这种情况下没有层级和隔离。 EJB bean 可以直接访问 Web 模块其余部分的所有类。

Web 配置文件仅支持最后一种部署情况。不支持 EAR 和独立 EJB 部署。

There seems to be some confusion between 3 variants of deployment:

  1. An EAR that includes an EJB and WEB module
  2. Deploying a separate EJB module and a separate WEB module
  3. Deploying a WEB module that includes EJB classes or an EJB jar.

In the first situation, you have logically one application, but one that is divided in two tiers. The WEB module is isolated from the EJB module in the sense that it can consume classes from EJB module, but the EJB module can not consume classes from the WEB module. Since it's a single application local access to EJB beans can be used and injection of EJB beans works as expected.

In the second situation (which you seem to be referring to in your question) there isn't a logical single application, but really two separate modules. They do run in the same JVM, but officially Java EE does not allow to use local access and remote access has to be used (although practically local access often works anyway). Also, injection of EJB beans in beans in the web module does not work directly with a simple @EJB annotation, but instead the lookup attribute has to be used that specifies the global JNDI name.

Finally, the third situation (which you don't seem to mention, but 'home' mentions) is a bit similar to the first one, but there are no tiers and isolation in this case. EJB beans can access all classes from the rest of the web module directly.

The web profile only supports this last deployment situation. Both EAR and standalone EJB deployments are not supported.

初熏 2024-12-05 01:12:56

将应用程序部署为ear(带有1个ejb和1个war模块)与单独的模块有什么区别?

不是完整列表:在EAR中您也可以定义实用程序JAR ,它们位于例如EAR/lib中并且可以被WARsEJB JARs重用。通常,EAR 文件提供专有的部署功能,例如,在 WebSphere 中您可以指定数据源详细信息,这样您就不必使用管理实用程序来定义数据源(和 JDBC 驱动程序)。

因为我想使用 Glassfish 3 Web 配置文件,但它不支持 Ear Archive。我可以简单地将 ejb 和 war 作为单独的模块使用吗?还有其他选项吗?

是的,Web 配置文件规范明确允许您将轻量 EJB 版本部署为WAR 的一部分。只需将 EJB JAR 放入 WARs WEB-INF/lib 中即可。此链接提供了功能比较(Web 配置文件与完整功能): http://glassfish .java.net/downloads/v3-final.html

Whats the difference in deploying application as ear (with 1 ejb and 1 war module) vs separate modules?

Not a complete list: In an EAR you can define Utility JARs as well, they are located in e.g. EAR/lib and can be reused by WARs and EJB JARs. Often EAR files provide prorietary deployment features, e.g. in WebSphere you can specify DataSource details, so that you do not have to define a DataSource (and JDBC driver) using management utilitiers.

Since I want use Glassfish 3 web profile, but it does not support ear archive. Can I simply use ejb and war as separate modules? Any other options?

Yes, the web profile spec explicitly allows you to deploy a lightweight EJB version as part of the WAR. Simply place the EJB JAR inside the WARs WEB-INF/lib. This link provides a comparison of features (Web profile vs full-blown): http://glassfish.java.net/downloads/v3-final.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文