Я пытаюсь реализовать простого поставщика веб-сервисов, использующего 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. Упакуйте сгенерированные вещи в войну и разверните