我正在开发简单的 JAX-WS Web 服务。我正在使用 ANT 构建脚本创建 WAR 文件。该文件部署到Tomcat 7服务器时,抛出以下异常,并出现部署错误,如下。
JAXB 2.1 API 正在从引导类加载器加载,但是此 RI(来自 jar:file:/D:/DreamSoln/Server/apache-tomcat-7.0.29/webapps/WebserviceDemo/WEB-INF/lib/jaxb -impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) 需要 2.2 API。使用认可的目录机制将 jaxb-api.jar 放置在引导类加载器中。
我安装了 JDK 1.6,我尝试了认可机制,即我创建了 lib/endorsed 目录并在其中复制了 jaxb-api.jar 和 jaxws-api.jar 。但还是不行。
我需要从我的网络应用程序的 WEB-INF/lib 中删除 jaxb-api.jar 和 jaxws-api.jar 吗?
还需要做什么?
最佳答案
我认为您没有正确认可 tomcat 库。文件夹lib/endorsed
在以前版本的 tomcat 中使用(如果我没记错的话,比如 Tomcat 5.5),但在新版本(Tomcat 6 及更高版本)中,认可的库通常位于 <TOMCAT_HOME>/endorsed
(如果它不存在,您必须创建它)。
其实tomcat使用的是系统属性java.endorsed.dirs
定义认可的文件夹位置。因此,请在您的 tomcat 安装中检查此值。
如何检查这个?在应用程序中拥有的任何 servlet/监听器中打印此属性。
示例使用上下文监听器(灵感来自 this blog)
public class WebappLoadListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("\n\n\n ENDORSED DIR: " +System.getProperty("java.endorsed.dirs"));
}
}
希望对你有帮助
关于java - 在 Tomcat 7 中部署 JAX-WS Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11625809/