Как разрешить Tomcat публиковать WSDL для предоставляемого WS (CXF 2.2, Spring 3, Tomcat6) - PullRequest
0 голосов
/ 16 апреля 2010

Я пытаюсь реализовать простого поставщика веб-сервисов, использующего Tomcat6, CXF 2.2, Spring 3, и на самом деле сам сервис работает нормально (я могу вызывать веб-методы с использованием оригинальных WSDL и SoapUI). Однако Tomcat возвращает пустую страницу по запросу «? Wsdl». Кроме того, когда я пытаюсь манипулировать (будущим) опубликованным WSDL, добавляя свойство publishedEndpointURL к элементу jaxws:endpoint, Tomcat выдаст исключение синтаксического анализа XML (что-то вроде property publishedEndpointURL is not allowed in element jaxws:endpoint)

 <jaxws:endpoint
            id="service"
            implementor="org.sample.ServiceImpl"
            implementorClass="org.sample.ServiceImpl"
            address="/service"
            publishedEndpointURL="http://localhost:8080/MyService/service">

Я использовал стиль "сначала контракт".

EDIT: Что я сделал до сих пор:

1.Настройка Tomcat6 с Spring3
2.Создайте класс реализации CXF, используя maven
3. Предоставьте web.xml (показана только соответствующая часть)

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>cxf</servlet-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app> 

4. Предоставить applicationContext.xml (отображается только соответствующая часть)

<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>

<jaxws:endpoint
        id="service"
        implementor="org.sample.ServiceImpl"
        implementorClass="org.sample.ServiceImpl"
        address="/service"/>

5. Упакуйте сгенерированные вещи в войну и разверните

1 Ответ

1 голос
/ 16 апреля 2010

Оказывается, я не видел WSDL, потому что я использовал Chrome. При просмотре в Firefox он отображал WSDL.

Кроме того, endpointURL работал при изменении на endpointUrl (ошибка документации на веб-сайте CXF).

...