У меня много трудностей при попытке использовать относительный адрес публикации в конфигурации моей конечной точки веб-службы CXF.
У меня есть простой Java-первый проект JAX-WS со следующими файлами конфигурации:
applicationContent-cxf.xml:
<beans xmlns=...>
...
<jaxws:endpoint
id="helloWorldService"
implementorClass="org.helloworld.ws.HelloWorldServiceImpl"
implementor="#helloWorldServiceImpl" <!-- spring managed -->
endpointName="sayHello"
address="HelloWorldService"/>
</beans>
web.xml:
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
WEB-INF/applicationContext.xml
WEB-INF/applicationContext-cxf.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<display-name>Hello World Servlet</display-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
В соответствии с http://cxf.apache.org/docs/servlet-transport.html, кажется, что я должен быть в состоянии указать адрес публикации HelloWorldService
, и URL-адрес службы разрешается (например) http://localhost:8080/services/HelloWorldService. Но когдаЯ пытаюсь перейти на http://localhost:8080/services/HelloWorldService?wsdl, я получаю 404. Если я изменяю адрес публикации в моей конечной точке jaxws на абсолютный URL http://localhost:8080/services/HelloWorldService
, я могу получить доступ к wsdl.
Я хочуукажите относительный адрес конечной точки, если это возможно.Я новичок в использовании CXF (и написании веб-служб), поэтому любая помощь очень ценится!
ОБНОВЛЕНИЕ 1:
Обратите внимание, что я развертываю свой веб-сервис вTomcat 7. Я не знаю, что это регистрирует, но одна из строк в моем журнале запуска показывает Setting the server's publish address to be HelloWorldService
.Если кому-то нужна дополнительная информация, чтобы помочь мне, пожалуйста, дайте мне знать.
ОБНОВЛЕНИЕ 2:
Похоже, что CXF обнаруживает, используется ли CXFServlet, и используетвстроенный причал, если это не так.http://cxf.apache.org/docs/xfire-migration-guide.html#XFireMigrationGuide-HTTPandServletSetup. Итак, по какой-то причине CXF использует встроенный экземпляр Jetty вместо моего сервлета.Однако я не знаю, какая дополнительная конфигурация мне нужна, кроме HelloWorldServlet в моем web.xml, и документация по CXF мне больше не помогает.