java - 在 Tomcat 7 中部署 JAX-WS Web 应用程序

标签 java web-services jax-ws tomcat7 jax-ws-customization

我正在开发简单的 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/

相关文章:

java - 使用 httpurlconnection 发布到 Web 服务

java - 发布 WebService 供公众访问

java - 带附件的 Web 服务在 2 路 SSL 连接上失败

java - doThrow 中看起来正确的 Mockito 异常

java - 改造库的post方法错误

java - WebApplicationInitializers 类的等效 web.xml ?

java - @PathParam 获取空值

java - JAX-WS 2.2 和 JDK6 与 maven

java - 将一个 JPanel 添加到另一个 JPanel 会添加填充

java - Android退出AsyncTask问题