2010-03-07 2 views
10

Ich habe einen Web-Service und ich habe es auf GlassFish bereitgestellt. Ich griff auf seine WSDL durch http://localhost:10697/APIService/APIServiceService?wsdl.Zugriff auf wsdl auf Tomcat

Jetzt portierte ich die WAR-Datei zu einem Tomcat 6.0.24 und es wird bereitgestellt. Jedoch versuche ich, auf seine WSDL unter Verwendung http://localhost:8080/APIService/APIServiceService?wsdl zuzugreifen, aber ich erhalte einen 404 Fehler. Ich habe verschiedene Kombinationen ausprobiert, aber keine scheint zu funktionieren.

Wie kann ich auf die WSDL-Datei PLZ zugreifen?

Danke und Gruß,

Update: Sie sind hier: 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> 

ich nicht sun-jaxws.xml aber ... Vielen Dank finden können! Grüße

Antwort

20

Der Weg, um auf eine WSDL zuzugreifen, ist nicht wirklich Container-spezifisch, es ist mehr WS-Stack-spezifisch. Der WS-Stapel in GlassFish ist Metro (Metro = JAX-WS RI + WSIT). Haben Sie Metro oder JAX-WS RI auf Tomcat installiert/bereitgestellt? Siehe Metro on Tomcat 6.x oder Running JAX-WS Samples with Tomcat 6.x (JAX-WS RI könnte in Ihrem Fall genug sein) für die Schritte.

Update: Sie müssen die WSServlet im web.xml (siehe Deploying Metro endpoint) erklären:

<?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> 

Und dann in der sun-jaxws.xml erklären Service-Endpoint Interface (SEI (auch in Verzeichnis WEB-INF verpackt)):

<?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> 

Und Sie Zugriff auf die WSDL auf:

http://localhost:8080/<mycontext>/services/hello?wsdl 
      A    B   C  D 
  • A ist der Host und den Port des Servlet-Container.
  • B ist der Name der Kriegsdatei.
  • C stammt vom Element url-pattern in der Datei web.xml.
  • D stammt vom Endstamm des Attributs url-pattern in der Datei sun-jaxws.xml.
+0

Hmm ... wusste nicht darüber. Sry, ich bin immer noch Student. Ich werde einen Blick auf die Installation von Metro auf Tomcat werfen. Danke für die Einsicht! Grüße, Krt_Malta –

+0

@Krt_Malta Kein Problem. Ich habe einige Hinweise hinzugefügt, die erklären, wie man das macht (vorausgesetzt, Sie verwenden Tomcat 6.x, was meine Empfehlung wäre). –

+0

Hmm ... kein Glück. Ich installierte Metro nach http://blogs.oracle.com/arungupta/entry/metro_on_tomcat_6_x, startete Tomcat (Tomcat 6.0.24) neu und kopierte die WAR-Datei erneut, aber ich bekomme bis zum 404-Fehler wann versuchen, auf die WSDL-Datei zuzugreifen. Irgendwelche Ideen bitte? 10x. Krt_Malta –