在Tomcat 7中部署JAX-WS webapp

时间:2012-07-24 07:09:44

标签: 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。使用endorsed目录机制将jaxb-api.jar放在bootstrap类加载器中。

我安装了JDK 1.6,我尝试了支持机制,即我创建了lib / endorsed目录并在其中复制了jaxb-api.jar和jaxws-api.jar。但它仍然不起作用。

我是否需要从我的网络应用程序的WEB-INF / lib中删除jaxb-api.jar和jaxws-api.jar?

还有什么需要做的?

3 个答案:

答案 0 :(得分:2)

我认为你没有正确认可tomcat lib。文件夹lib/endorsed在以前版本的tomcat中使用(如果我记得正确,就像Tomcat 5.5一样),但在新版本(Tomcat 6及其后)中,认可的lib通常位于<TOMCAT_HOME>/endorsed(如果不是存在,你必须创建它。)

实际上,tomcat使用系统属性java.endorsed.dirs来定义已签名的文件夹位置。因此,请在tomcat安装中检查此值。

如何检查?在应用程序中的任何servlet / listener中打印此属性。

示例使用上下文侦听器(受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"));      
    }
}

希望它有所帮助,

答案 1 :(得分:0)

是的,一旦他们在背书目录中,你应该从webapp中删除它们。

如果您尝试使用Tomcat的Java EE版本TomEE Plus,则已经集成了JAX-WS支持,并且JAXB 2.2位于已认可的目录中。

答案 2 :(得分:0)

Tomcat 7不支持开箱即用的JAX-WS。要在Tomcat上启用JAX-WS,您需要

  1. 在Tomcat的lib中至少包含“catalina-ws.jar”(不一定是“背书”!)。
  2. “catalina-ws.jar”应该作为“Tomcat extras”下载,它不包含在TC7的默认下载档案中。

    1. 在您的Web应用程序库中包含“JAX-WS RI”库。
    2. 尝试google“下一个里程碑:Tomcat和JBoss上的JAX-WS Web服务”,您可以找到有关此主题的更多信息。

      (但是对于像JBoss 7这样的Java EE容器,所有的库已经存在了。)