Ответ: Я знаю, что это далеко не то, что подходит для решения, но я искал файлы web.xml и servlet.xml и по какой-то причине он работает сейчас, теперь я могу получить список услуг и файлы wsdl. Я сравнил свои новые файлы со старыми, написанными ниже, и единственное отличие состоит в том, что web.xml имеет имя CXFServlet вместо LoginService, и я дал конечной точке cxfservlet.xml адрес сейчас.Получение WSDL из веб-службы CXF, работающей на Tomcat
У меня есть проблема, когда у меня есть (наконец) создание веб-службы CXF на Tomcat. Или, скорее, он запускается, и он не создает никаких предупреждений или исключений в журнале tomcat при развертывании и повторном развертывании. Проблема в том, что я не могу получить WSDL этой службы. Я начинаю думать, что я не понимаю файлы web.xml и cxf.xml, как я думал.
Когда я пишу http://localhost:8080/services/Login?wsdl Я бы ожидал, что WSDL появится, но все, что я получаю, это 404. Что я делаю неправильно? Как я уже сказал, у меня нет никаких исключений, так в чем же моя проблема?
Редактировать: Из-за некоторой полезной обратной связи (которую я вспомнил, чтобы отметить как полезную), я понял, что, возможно, я неправильно задал путь контекста в своем web.xml. Я развертываю службу через приложение-менеджер в tomcat в файле LoginService.war. Это задает вопрос: могу ли я это сделать? Будет ли tomcat знать, что искать класс CXFServlet в библиотеке LoginService, или он будет выглядеть в ROOT? Нужно ли мне перенастраивать сервер, чтобы я мог работать от http://localhost:8080/LoginService?
web.xml
<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>LoginService</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:metadata/Login/cxfservlet.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>LoginService</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginService</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
cxfservlet.xml
<beans xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org
/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<jaxws:endpoint id="LoginService"
implementor="orgserver.services.Login" wsdlLocation="WEB-INF/LoginService.wsdl"
address="/">
</jaxws:endpoint>
</beans>
Вы пишете 'address ="/"'. Так что попробуйте http: // localhost: 8080/services /? Wsdl –
Дает 404, а также –
Я как минимум понимаю это правильно ?: Я задаю класс CXFServlet, который будет запускаться на каждом предоставленном url, напоминающем/services/*. Этот класс CXFServlet является тем, что принимает компонент, который я указываю в файле cxfservlet.xml в качестве конечной точки, и обрабатывает действия webservice? Это также CXFServlet, который отвечает за возврат WSDL? –