我有一个相当典型的JavaEE应用程序,使用EJB3,seam组件,spring bean和JSF组成,所有这些应用程序都打包到ear文件中的几个jar和war文件中。当然,对于JavaEE,我们有许多XML文件作为应用程序的一部分。其中一些XML文件使用DTD(seam)验证,一些使用模式验证。
由于大多数文件来自示例和其他项目,所有DTD和模式都引用项目的站点,默认DTD或架构所在的站点。问题出现了:由于某种原因,JBoss网站今天错过了接缝DTD(检查http://www.jboss.com/products/seam/components-1.1.dtd,http://www.jboss.com/products/seam/components-1.2.dtd,http://www.jboss.com/products/seam/components-2.0.dtd)。由于JBoss服务器使用此位置在引导程序中验证XML,因此应用程序部署失败。
我的问题是:鉴于这种情况,我应该在哪里放置DTD和定义文件?我看到三个选项:
我倾向于使用选项#3,因为它提供了对文件的完全控制,没有网络依赖性。在我们已经完成的测试中,它甚至显着缩短了服务器的引导时间 - 显然XML解析器不会缓存定义。走这条路是不是我想念?
答案 0 :(得分:0)
不,这是正确的做法。第一个应该只用于乱码或玩代码而不是用于任何严重的事情,第二个没有优势,而第三个没有优势,同时也更复杂。
答案 1 :(得分:0)
真正的问题是:真的需要验证xml文件吗? 在大多数情况下,验证不是在生产代码中完成的 - 大多数时候它都太慢了。
如果您确实想要验证,请转到选项#3。