GlassFish/Payara 4.x 中 glassfish-application.xml 和 glassfish-web.xml 有什么区别?

Kar*_*ter 4 glassfish payara jakarta-ee

对于所有可以想象到的实现对,Java EE 和 Web 配置文件之间的差异有大量的解释(“Tomcat 和 GlassFish 之间有什么区别”、“GlassFish 和 JBoss 之间有什么区别”等),这些解释非常清楚我。对于glassfish-web.xml vs sun-web.xml vs web.xml以及The Difference Between web.xml, beans.xml, applicationContext.xml, etc有很好的问题,但是它们都链接到 GlassFish 3.x文档[1]。

我想有一些明确的说法

  • glassfish-application.xml和之间的优先级glassfish-web.xml,意味着一个会覆盖另一个(Web 覆盖应用程序可能是合乎逻辑的,因为类加载顺序颠倒了)还是从两者中选择选项?
  • 我可以期望拾取文件的可能位置。我假设/在耳朵中为应用程序,/WEB-INF/在战争中(在耳朵内)为应用程序描述符
  • 是否可以在两个文件中指定可以在其他文件中指定的任何值,例如web.xmlor beans.xml,如果是,那么优先级是什么?
  • war 打包(而不是 Ear 打包)Java EE 应用程序的情况如何?

我认为 Payara 和 GlassFish 之间没有区别,因为前者被设计为直接替代品 - 事实上Google 几乎找不到文档,对于 Payara 和 GlassFish 4.x 来说是一样的。


[1] 这是GlassFish 的主要问题 - 大多数时候只有 3.x 文档可以通过手册、博客和 SO 问题中的链接获得,你必须尝试所有的事情,并假设它可能无法工作,因为有些东西发生了变化从 3.x 到 4.x,这导致 n 个问题的复杂度为 2^n。

小智 5

glassfish-application.xml 和 glassfish-web.xml 之间的优先级,这意味着其中一个会覆盖另一个(Web 覆盖应用程序可能是合乎逻辑的,因为类加载顺序颠倒了)还是从两者中选取选项?

glassfish-application.xml用于.ear文件的,而glassfish-web.xml是用于.war文件的。对于 a.war内的 a .earglassfish-web.xml会覆盖 内声明的设置glassfish-ejb.xml

我可以期望拾取文件的可能位置。我假设 / 在耳朵中为应用程序, /WEB-INF/ 在战争(耳朵内)中为应用程序描述符

如果您的意思是文件应位于的位置,则应glassfish-application.xml将 放置在 内,与 并排META-INF,而则应放置在 内,与 并排。.earMANIFEST.MFglassfish-web.xmlWEB-INFbeans.xml

是否可以在两个文件中指定可以在其他文件(例如 web.xml 或 beans.xml)中指定的任何值,如果是,那么优先级是什么?

是的,标准 JavaEE 部署描述符等受到尊重web.xmlbeans.xml但是如果存在服务器特定的部署描述符(即glassfish-web.xml),它们将被覆盖。

war 打包(而不是 Ear 打包)Java EE 应用程序的情况如何?

在打包的应用程序中,您应该坚持使用glassfish-web.xml部署描述符。这将覆盖 JavaEEweb.xml部署描述符中设置的值,但两者都会被读取。

我认为 Payara 和 GlassFish 之间没有区别,因为前者被设计为直接替代品 - 事实上 Google 几乎找不到文档,对于 Payara 和 GlassFish 4.x 来说是一样的。

由于 Payara Server 源自 GlassFish,我们仅记录扩展或修改默认行为的区域。因此,GlassFish 4 文档https://javaee.github.io/glassfish/documentation4可用于 Payara Server 文档https://docs.payara.fish/中未提及的任何区域。我同意,这确实使查找您正在寻找的内容变得相当痛苦,特别是在 GlassFish 部署指南没有明确说明的情况下。事实上,GlassFish 5 文档的很大一部分与 3.1.2 相比似乎没有变化,因此您可能离当前答案不远了。