Ошибка WSServlet ClassNotFoundException на Tomcat 7.0.11 с использованием Metro 2.1

Я пытаюсь создать простой веб-сервис с помощью Tomcat 7.0.11 на Windows Server 2008 R2 с использованием Metro 2.1. Я исхожу из опыта работы с C # / WCF, пытаясь лучше понять совместимость веб-сервисов. На самом деле я следую примеру из книги Мартина Калина «Java Web Services Up and Running». У меня есть следующее:

CATALINA_HOME=c:\tomcat-7.0.11

в файле catalina.properties, который у меня есть:

server.loader=c:/metro-2.1/bin/*.jar 

(обратите внимание, я тоже пытался добавить этот путь к common.loader).

Я скопировал следующие файлы jar METRO в CALALINA_HOME \ lib:

webservices-api.jar, m исходит из опыта работы с C # / WCF, пытаясь лучше понять совместимость веб-сервисов. На самом деле я следую примеру из книги Мартина Калина «Java Web Services Up and Running». У меня есть следующее:

CATALINA_HOME=c:\tomcat-7.0.11

в файле catalina.properties, который у меня есть:

server.loader=c:/metro-2.1/bin/*.jar 

(обратите внимание, я также пробовал добавить этот путь к common.loader).

Я скопировал следующие файлы jar METRO в CALALINA_HOME \ lib:

webservices-api.jar, m исходит из опыта работы с C # / WCF, пытаясь лучше понять совместимость веб-сервисов. На самом деле я следую примеру из книги Мартина Калина «Java Web Services Up and Running». У меня есть следующее:

CATALINA_HOME=c:\tomcat-7.0.11

в файле catalina.properties, который у меня есть:

server.loader=c:/metro-2.1/bin/*.jar 

(обратите внимание, я также пробовал добавить этот путь к common.loader).

Я скопировал следующие файлы jar METRO в CALALINA_HOME \ lib:

webservices-api.jar, webservices-extra.jar, webservices-extra-api.jar, webservices-rt.jar, webservices-tools.jar

и CALALINA_HOME \ endorsed:

webservices-api.jar

(обратите внимание, я изначально пытался использовать ant-файл metro-on-tomcat.xml, но, похоже, у него нет был обновлен для tomcat 7. *)

Я также скопировал webservices-api.jar в JAVA_HOME \ jre \ lib \ endorsed

Я попытался разместить и другие банки METRO в указанных выше местах, но не help.

Теперь Tomcat запускается нормально и инициализирует METRO. Вот соответствующий раздел из файла журнала catalina:

ИНФОРМАЦИЯ: Развертывание веб-приложения каталог ROOT 18-Май-2011 08:00:55 com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextInitialized ИНФОРМАЦИЯ: WSSERVLET12: Инициализация прослушивателя контекста JAX-WS 18-мая-2011 08:01:07 com.sun.xml.ws.server.MonitorBase createRoot INFO: мониторинг метро rootname успешно настроен на: com.sun.metro: pp = /, type = WSEndpoint, name = -TempConvertImplService-TempConvertImplPort 18-мая-2011 08:01:08 com.sun.xml.ws.transport.http.servlet.WSServletDelegate ИНФОРМАЦИЯ: WSSERVLET14: JAX-WS инициализация сервлета

Итак, можно подумать, что Tomcat загрузил все классы METRO. Насколько я понял, WSServlet является частью JAX-WS 2.1, который поставляется как часть METRO, поэтому его следовало загрузить. Но когда я действительно пытаюсь перейти к WSDL моей службы, я получаю следующее в журнале localhost:

SEVERE: назначить исключение для сервлета TempConvertWS java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.WSServlet в org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1676) в org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1521) в org.apache.catalina.core.DefaultInstanceManager.loadClass (DefaultInstanceManager.java:415) .... (остальная часть трассировки стека)

мой sun-jaxws.xml выглядит так:

<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
  <endpoint
      name="TempConvertWS"
      implementation="TimeServer.TempConvertImpl"
      url-pattern="/tc"
    />
</endpoints>

, а соответствующий раздел в моем файле web.xml:

  <listener>
    <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>TempConvertWS</servlet-name>
    <servlet-class>com.sun.xml.ws.transport.http.WSServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TempConvertWS</servlet-name>
    <url-pattern>/tc</url-pattern>
  </servlet-mapping>

Кто-нибудь может понять, почему Tomcat не может найти / загрузить класс WSServlet при просмотре службы?

7
задан user758752 11 August 2014 в 12:23
поделиться