Подтвердить что ты не робот

Является ли Java 7 реализацией JAX-WS или просто API?

Мне сказали, что Java 7 должен включать JAX-WS, так что мне не нужны библиотеки, подобные тем, которые есть в Apache CXF. Однако официальные документы говорят:

Этот выпуск содержит Java API для обработки XML (JAXP) 1.4.5, поддерживает Java Architecture for XML Binding (JAXB) 2.2.3 и поддерживает Java API для веб-служб XML (JAX-WS) 2.2.4.

Кроме того, страница Eclipse на JAX-WS говорит об использовании таких реализаций, как Apache CXF, Sun Metro или Apache Axis. И каждый пример/учебник, который я могу найти на JAX-WS, использует библиотеку, подобную CXF или Metro.

У меня есть проект в Eclipse, который вызывает "Endpoint.publish(...)" в классе с аннотацией javax.jws.WebService. Файл WSDL, указанный ниже, находится за пределами Eclipse. Этот проект работает (как "Java-приложение" ) отлично с библиотеками Apache CXF. Как только я удаляю их (и ссылки Eclipse на Apache CXF), он выходит из строя со следующим исключением:

com.sun.xml.internal.ws.server.ServerRtException: [failed to localize] cannot.load.wsdl(http://localhost:8081/wsdl/csw.wsdl)
    at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.getPrimaryWsdl(EndpointImpl.java:313)

Таким образом, либо я делаю что-то неправильно, либо Apache предоставляет реализаций того, к чему сам JDK имеет только API. Пожалуйста, укажите, в каком случае, наряду с обычной ссылкой на что-то важное.

4b9b3361

Ответ 1

Jdk 7 (например, 6) включает реализацию на основе метро.

Как вы можете видеть из вашего исключения, внутренняя реализация выполняется "com.sun.xml.internal.ws.transport.http.server.EndpointImpl". Проблема заключается в том, что ей не нравится ваш WsdlLocation (я считаю, что jaxws ожидает локальный ресурс, но вы предоставили ему ресурс http).