引用JAXB jar - 最佳实践

时间:2009-06-03 10:25:29

标签: java jaxb code-organization

我的第一篇文章,所以对我很轻松。

我正在寻找有关组织和引用第三方jar的建议,以便在我的j2ee Web应用程序中使用。我需要组织和参考的罐子是JWSDP-2.0 JAXB api罐子。

我正在使用Eclipse和Tomcat 5.5。我的Web应用程序与Web服务交换XML,因此需要使用JWSDP-2.0中的JAXB api进行一些XML编组和解组。

我已下载JWSDP-2.0并已安装到我的电脑上。我现在正试图弄清楚在我的机器上的eclipse中我的Web应用程序中可以使用其中包含的必要jar文件的最佳方法,以及在我的机器和最终的测试和生产服务器上的Tomcat中。

我开始只是将.jar文件复制到我项目的WEB-INF / lib文件夹中。这意味着在部署到Tomcat时,jar文件现在将在.war中导出。但是,我不喜欢这样,因为jar文件来自JWSDP-2.0中的几个不同的库,并且像这样复制它们意味着它们都被放在一起,而不是像JAXB,JAXP,SAAJ等那样很好地分离。 ,有一些名称冲突,例如,我的网络应用程序已经包含较旧的xml解析jar,如xalan.jar,已经被Web应用程序的不同部分使用。

然后我删除了所有这些jar,并在eclipse中创建了一系列用户库,例如“jwsdp-2.0_jaxp”,“jwsdp-2.0_jaxb”,它引用了WSDP-2.0安装中它们所在位置的jar。这在eclipse中使用我的web应用程序时工作得很好,但我现在需要让Tomcat可以使用这些jar,并且我有点卡在那里以最佳方式执行此操作。

所以,在基本层面上,我的问题是如何在Tomcat中引用jar文件?

更一般地说,我正在寻找一些关于参考最佳实践的建议,并在项目中包括第三方jar,以便顺利部署到服务器。

如果有人可以推荐任何关于代码组织和部署的好文章/书籍/资源,这将有助于我学习这种情况的最佳实践,这将是很好的

提前干杯。

2 个答案:

答案 0 :(得分:3)

这里有几点:

  • 如果你的WAR文件中有JARS冲突,那么你就会遇到麻烦。您应该弄清楚您的应用程序需要哪些,并丢弃其余的。否则,你冒着tomcat加载“错误”类的风险。
  • JWSDP 2.0 非常旧,包含旧的预发布版本的JAXB。我强烈建议使用最新的JAXB JAR(来自http://jaxb.dev.java.net),因为早期访问的JAXB2遇到了很多问题。
  • 虽然你的WEB-INF / lib可能有一个很好的结构目录布局,但这并不重要,因为这是你的构建工件。只要您从结构化存储库中获取JAR,就不应该觉得需要在WAR中保留该结构。 Tomcat不关心。通过将它们全部放在一个目录中来获得名称冲突的事实是一个警告,您需要对这些冲突进行排序。

答案 1 :(得分:1)

组织依赖项的最佳实践是使用maven构建eclipse项目并为tomcat进行战争,并让他下载所需的所有依赖项:

https://jaxb.dev.java.net/jaxb-maven2-plugin/