在WildFly中将JDBC驱动程序安装为模块的优势是什么?

5
这个链接介绍了关于WildFly的新内容。在“迁移数据库连接 -> JDBC驱动程序”下,文章解释了用于应用程序的两种jdbc驱动程序的使用方式。我尝试通过将其安装为模块,并且它能够正常工作。问题是哪种方法更好?什么时候更好?是否部署为其他应用程序包或将其安装为模块?(我注意到在群集环境中安装为模块是必要的。我想知道是否有其他原因。)
1个回答

2
我认为你所引用的文章的正确链接是这个:http://wildfly.org/news/2014/02/06/GlassFish-to-WildFly-migration/(另一个链接似乎没有指向你提到的文章)。
以下是你所引用的“迁移数据库连接”部分的有趣内容:
在WildFly上,您有两种安装JDBC驱动程序的方式:将其部署为任何其他应用程序包或将其安装为模块。您总是可以选择部署驱动程序,但当您拥有集群环境时,特别推荐这样做,因为部署会自动传播到服务器组中。如果驱动程序不符合JDBC4标准,则可能会出现部署问题。在这种情况下,将驱动程序安装为模块可以解决这些问题。作为模块的JDBC驱动程序的优点是可以为您的组织创建自定义的WildFly捆绑包。这样,您可以在多台机器上完全重复相同的安装,保留相同的配置。这非常适合开发环境。
在这一部分中,作者描述了以下优点:
如果驱动程序不符合JDBC4标准,则可能会出现部署问题。在这种情况下,将驱动程序安装为模块可以解决这些问题。
以下Wildfly文档documentation也描述了这一点:
任何符合JDBC 4标准的驱动程序都将自动按名称和版本识别并安装到系统中。 JDBC JAR使用Java服务提供程序机制进行标识。这样的JAR将包含一个名为META-INF / services / java.sql.Driver的文本文件,其中包含存在于该JAR中的驱动程序类的名称。如果您的JDBC驱动程序JAR不符合JDBC 4标准,则可以通过多种方式使其可部署。 (...)
因此,如果驱动程序不符合JDBC-4标准,则将其部署为模块比将其部署为任何其他应用程序包更容易。(因为您需要修改和重新构建不符合JDBC-4的jar才能将其部署为其他任何应用程序包)

您能在您的回答中提供更多背景和/或描述吗? - Joe Kennedy
我已经更新了我的答案,并解释了为什么你应该使用模块而不是直接部署驱动程序的一个原因。 - Rémi Bantos
同时,将其安装为模块可以将所需的JDBC实现与应用程序分离。例如,您可以在不重新构建应用程序的情况下升级JDBC驱动程序。 - ozOli
@ozOli,我认为你误解了问题(就像我在第一次阅读时一样),因为引用文章中的“像任何其他应用程序包”方法并不意味着JDBC驱动程序嵌入到应用程序包中。它只是意味着您可以将其直接部署到应用服务器上,就像任何其他.war、.jar包一样,因此可用于数据源配置。 - Rémi Bantos
除此之外,我认为为了使用XA事务,驱动程序需要安装在应用服务器上。 - K.Nicholas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接