0

我正在为部署在 JBoss 4 AS 实例上的现有企业应用程序开发 AddOn Web 应用程序。为了简单起见,我使用 Netbeans 中提供的 Glassfish 应用程序服务器。对于原型,我将我使用的每个库打包到我想要部署的 war 文件中,还有 Hibernate 和一些非常基本的库。但将来我还想使用服务器提供的库和功能,如 JNDI 数据库连接查找、会话和实体 bean 等。

我的问题:

  1. 在 Jboss 上为 glassfish 打包的 war 文件中部署一个简单的 Web 应用程序是否有任何方面,这可能是一个难以解决的问题?
  2. EJB 接口是否在两种实现中以类似的方式访问?意思是,当我在 Glassfish 服务器上开发用于执行此操作的代码时,我是否能够访问 Jboss 上的会话 bean?
  3. JNDI 查询在两种实现上执行的相似吗?
  4. 其他方面?

我不得不说,我只在开发简单的 servlet 方面有经验。我知道一些关于 Java EE 和 EJB 的理论知识,我想更深入地了解这一点。我对实现的具体细节一无所知,所以这就是这个问题的重点。

4

1 回答 1

2

如果您的应用程序相对简单并且您坚持核心 Java EE 标准,那么理论上您应该不会发现任何重大问题。由于 JNDI 命名存在差异,您在访问 EJB 时可能会遇到一些问题。

话虽如此,JBoss 4 已经相当老了。它符合 J2EE 1.4,并实现了 EJB 2.1 规范。新的 JBoss 和 GlassFish 服务器符合 Java EE 6 并实现了 EJB 3.1 规范。EJB3 更易于使用,但是您不能将 3.x EJB 部署到 2.x 容器(也可以采用其他方式)。因此,您必须小心地坚持 EJB2 容器中的可能性。例如,如果您想在本地使用 EJB(即来自部署在同一服务器上的另一个 EJB),则在 EJB2 下您必须定义和实现本地接口。在 EJB3 下,使用@LocalBean. 不要让我开始使用 EJB2 所需的所有外部描述符。

一般的经验法则是在开发和生产中使用相同 AS 的相同版本。例如,应用服务器 Y 版本 Z 中可能存在某个功能的 bug,它不会出现在应用服务器 A 版本 B 中。所以你的应用程序可以在 A 中工作,但是当你将它部署到 Y 时,它会崩溃,你将很难调试它。如果您使用相同(相同版本)的 AS,则您在开发过程中发现错误的机会更大。

我曾经不得不将一个相当复杂的应用程序从 GlassFish v2 转移到 GlassFish v3,而这个过程并不简单。

所以,如果你必须使用JBoss 4作为目标,你所有的开发都在JBoss 4下进行。它会为你以后省去很多麻烦。如果您可以使用最新的 JBoss 7 作为目标,您可以在最新的 GlassFish 3.x 下开发您的应用程序,它很可能会工作,但我认为没有充分的理由这样做。

于 2013-02-09T23:04:53.717 回答