Java 在何处放置DTD和模式文件

Java 在何处放置DTD和模式文件,java,jakarta-ee,jboss,schema,dtd,Java,Jakarta Ee,Jboss,Schema,Dtd,我有一个相当典型的JavaEE应用程序,它使用EJB3、seam组件、SpringBean和JSF组成,所有这些都打包到ear文件中的几个jar和war文件中。当然,对于JavaEE,我们有许多XML文件作为应用程序的一部分。其中一些XML文件使用DTD(seam)进行验证,另一些使用模式进行验证 与大多数从示例和其他项目中获取的文件一样,所有DTD和模式都引用默认DTD或模式所在的项目站点。问题来了:出于某种原因,JBoss站点今天错过了seam DTD(检查)。由于JBoss服务器使用此位置

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

与大多数从示例和其他项目中获取的文件一样,所有DTD和模式都引用默认DTD或模式所在的项目站点。问题来了:出于某种原因,JBoss站点今天错过了seam DTD(检查)。由于JBoss服务器使用此位置在引导时验证XML,因此应用程序部署失败

我的问题是:在这种情况下,我应该将DTD和定义文件放在哪里?我认为有三种选择:

  • 使用默认位置,就像我以前做的那样。因为这意味着我现在在我的系统中添加了JBoss、Sun、Spring和任何其他供应商的稳定性,以防我需要重新部署应用程序,所以我不希望这样做
  • 将所有DTD和模式文件复制到我的服务器,使URL指向我控制下的服务器
  • 将所有DTD和架构文件复制到我的应用程序或app server,并在本地使用它们
    我倾向于使用选项3,因为它提供了对文件的完全控制,没有网络依赖性。在我们所做的测试中,它甚至显著减少了服务器的引导时间——很明显,XML解析器不会缓存定义。走这条路有什么我错过的吗?

    没有,这是正确的做法。第一种方法只能用于乱搞或玩弄代码,但不能用于任何严重的事情,第二种方法与第三种方法相比没有优势,同时更为复杂。

    真正的问题是:您真的需要验证xml文件吗? 在大多数情况下,验证不是在生产代码中完成的——大多数情况下验证速度太慢


    如果您真的想验证,请选择选项3。

    如何在JBoss中关闭验证?我不是那个调用XML解析器的人。