java - 在哪里放置 DTD 和模式文件

标签 java jakarta-ee jboss schema dtd

我有一个相当典型的 JavaEE 应用程序,使用 EJB3、seam 组件、spring bean 和 JSF 组成,所有这些都打包到一个 ear 文件中的几个 jar 和 war 文件中。自然地,对于 JavaEE,我们有许多 XML 文件作为应用程序的一部分。其中一些 XML 文件使用 DTD(接缝)进行验证,一些使用模式进行验证。

由于大多数文件取自示例和其他项目,所有 DTD 和模式都引用项目站点,默认 DTD 或模式所在的位置。问题来了:出于某种原因,JBoss 站点今天错过了接缝 DTD(检查 http://www.jboss.com/products/seam/components-1.1.dtdhttp://www.jboss.com/products/seam/components-1.2.dtdhttp://www.jboss.com/products/seam/components-2.0.dtd)。由于 JBoss 服务器使用此位置在 Bootstrap 中验证 XML,因此应用程序部署失败。

我的问题是:在这种情况下,我应该将 DTD 和定义文件放在哪里?我看到三个选项:

  1. 像以前一样使用默认位置。因为这意味着我现在将 JBoss、Sun、Spring 和任何其他供应商的稳定性添加到我的系统中,以防我需要重新部署应用程序,所以我不想这样做。
  2. 将所有 DTD 和模式文件复制到我的服务器,使 URLS 指向我控制的服务器。
  3. 将所有 DTD 和架构文件复制到我的应用程序或应用程序服务器,并在本地使用它们。

我倾向于使用选项 #3,因为它提供了对文件的完全控制,没有网络依赖性。在我们所做的测试中,它甚至显着减少了服务器的引导时间——显然 XML 解析器不缓存定义。走这条路我有什么想念的吗?

最佳答案

不,这是正确的做法。第一个应该只用于乱搞或玩代码,而不是用于任何严肃的事情,第二个与第三个相比没有优势,同时更复杂。

关于java - 在哪里放置 DTD 和模式文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/769656/

相关文章:

java - ScrolledComposite 不通过鼠标滚轮滚动

java - 统计Hibernate中多对多表中ID的出现次数

java.lang.ClassNotFoundException : org. postgresql.Driver问题

java - JBoss 上的远程调试

java - 将第 3 方 API 与基于 jhipster 的 Web 应用程序集成

Java 编码风格——将字符串数组一次又一次地传递给多个方法

java - 遍历列表中的列表并显示在表中

jakarta-ee - LOG4J - EAR 中不同 war 的独立日志文件

java - 我应该升级 JBoss 还是完全避开它并迁移到 Tomcat?

jboss - Jboss 中创建了多少个消息驱动 Bean?