2012-02-17 1 views
0

Ответ: Я знаю, что это далеко не то, что подходит для решения, но я искал файлы 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> 
+1

Вы пишете 'address ="/"'. Так что попробуйте http: // localhost: 8080/services /? Wsdl –

+0

Дает 404, а также –

+0

Я как минимум понимаю это правильно ?: Я задаю класс CXFServlet, который будет запускаться на каждом предоставленном url, напоминающем/services/*. Этот класс CXFServlet является тем, что принимает компонент, который я указываю в файле cxfservlet.xml в качестве конечной точки, и обрабатывает действия webservice? Это также CXFServlet, который отвечает за возврат WSDL? –

ответ

4

Вам не нужно устанавливать wsdlLocation, если нет другого пути, чтобы добраться до сервиса, кроме http://localhost:8080/services/. Также wsdlLocation будет URL.

Я предполагаю, что вы развернули свое приложение в ROOT.war (корневой контекст) в Tomcat, поскольку нет пути к контексту перед/services.

Что отображается, когда вы просматриваете http://localhost:8080/services (без поворота /)? Он должен предоставить вам список доступных услуг, включая адрес WSDL. Если вы наведите указатель мыши на адрес WSDL, он покажет вам фактический URL.

+0

Затем я перехожу к http: // localhost: 8080/services, он дает мне 404, как и в противном случае. Я попытался изменить контекстный путь на/LoginService, что называется войной, проверенный http: // localhost: 8080/LoginService, и он все равно дает мне 404. –

+0

Я попытался разместить простой файл index.html во время Войны LoginService файл, и я могу перейти к этому с помощью http: // localhost: 8080/LoginService /. Я развертываю LoginService.war через приложение html manager. Я изменил Контекстный путь на/LocalHost/services /, но я все еще не получаю список сервисов, когда я вызываю http: // localhost: 8080/LoginService/services. Я вообще не звоню в класс CXFServlet? Есть ли способ проверить, не сбой CXFServlet из-за ошибки? –

+0

Изменение моего контекстного пути к LoginService/services дает мне ошибку в менеджере tomcat: «FAIL - приложение в контекстном пути/LoginService не может быть запущено». В журнале нет ничего, кроме сообщения «Запуск». Нет ошибок. –

 Смежные вопросы

  • Нет связанных вопросов^_^