2010-03-07 3 views
10

У меня есть веб-сервис, и я развертывал его на GlassFish. Я получил доступ к его wsdl через http://localhost:10697/APIService/APIServiceService?wsdl.Доступ к wsdl на Tomcat

Теперь я портировал файл WAR в Tomcat 6.0.24 и развертывается. Однако я пытаюсь получить доступ к его wsdl, используя http://localhost:8080/APIService/APIServiceService?wsdl, но я получаю ошибку 404. Я пробовал различные комбинации, но никто не работает.

Как я могу получить доступ к файлу wsdl plz?

Спасибо и уважением,

Update: Здесь вы: web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

я не могу найти sun-jaxws.xml однако ... Спасибо большое! С уважением

ответ

20

Способ доступа к WSDL на самом деле не специфичен для конкретного контейнера, он больше специфичен для WS-стека. WS-стек в GlassFish - Metro (Metro = JAX-WS RI + WSIT). Вы устанавливали/развертывали Metro или JAX-WS RI на Tomcat? См. Metro on Tomcat 6.x или Running JAX-WS Samples with Tomcat 6.x (JAX-WS RI может быть достаточно в вашем случае) для шагов.

Update: Вы должны объявить WSServlet в web.xml (см Deploying Metro endpoint):

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <listener> 
    <listener-class> 
    com.sun.xml.ws.transport.http.servlet.WSServletContextListener 
    </listener-class> 
    </listener> 
    <servlet> 
    <servlet-name>WebServicePort</servlet-name> 
    <servlet-class> 
    com.sun.xml.ws.transport.http.servlet.WSServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>WebServicePort</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 
    <session-config> 
    <session-timeout>60</session-timeout> 
    </session-config> 
</web-app> 

, а затем в sun-jaxws.xml (также упакованы в WEB-INF), объявить Service Endpoint Interface (SEI):

<?xml version="1.0" encoding="UTF-8"?> 
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> 
    <endpoint 
    name="MyHello" 
    implementation="hello.HelloImpl" 
    url-pattern="/hello" 
    /> 
</endpoints> 

И вы получаете доступ к WSDL по адресу:

http://localhost:8080/<mycontext>/services/hello?wsdl 
      A    B   C  D 
  • A является хостом и портом контейнера сервлетов.
  • B - название военного файла.
  • C происходит от элемента url-pattern в файле web.xml.
  • D происходит от конца стебля атрибута url-pattern в файле sun-jaxws.xml.
+0

Хм ... не знал об этом. Сэр, я все еще студент. Я посмотрю на установку Metro на Tomcat. Спасибо за понимание! С уважением, Krt_Malta –

+0

@Krt_Malta Нет проблем. Я добавил несколько указателей, объясняющих, как это сделать (при условии, что вы используете Tomcat 6.x, что я бы рекомендовал). –

+0

Хм ... не повезло. Я установил метро по http://blogs.oracle.com/arungupta/entry/metro_on_tomcat_6_x, перезапустил Tomcat (это Tomcat 6.0.24) и снова скопировал файл войны, но я до получения ошибки 404, когда пытаясь получить доступ к файлу wsdl. Любые идеи, пожалуйста? 10x. Krt_Malta –

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