2010-03-07 20 views
10

Web hizmetim var ve GlassFish üzerinde konuşlandırıyordum. Wsdl dosyasına http://localhost:10697/APIService/APIServiceService?wsdl aracılığıyla eriştim.Tomcat üzerinde wsdl erişim

Şimdi WAR dosyasını bir Tomcat 6.0.24'e yükledim ve dağıtıldı. Ancak ben onun wsdl http://localhost:8080/APIService/APIServiceService?wsdl kullanarak erişmeye çalışıyorum ama bir 404 hatası alıyorum. Çeşitli kombinasyonları denedim ama hiç işe yaramıyor.

wsdl dosyasına nasıl erişebilir plz?

Teşekkür ve Saygılarımızla,

Güncelleme: Burada sen: 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> 

Ben ancak sun-jaxws.xml ... Çok teşekkürler bulamıyorum! Saygılar

cevap

20

Bir WSDL'ye erişmenin yolu gerçekten konteynere özgü değil, daha çok WS yığınına özel. GlassFish'teki WS yığını, Metro'dır (Metro = JAX-WS RI + WSIT). Tomcat'a Metro veya JAX-WS RI yüklediniz mi/dağıttınız? Adımlar için bkz. Metro on Tomcat 6.x veya Running JAX-WS Samples with Tomcat 6.x (durumunuzda JAX-WS RI yeterli olabilir).

Güncelleme:

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

Sonra içinde (aynı zamanda WEB-INF ambalajlı) sun-jaxws.xml, Servis Endpoint Arabirimi beyan (SEI: Sen (Deploying Metro endpoint bakınız) web.xml içinde WSServlet beyan gerekir):

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

Ve de WSDL eriş:

http://localhost:8080/<mycontext>/services/hello?wsdl 
      A    B   C  D 
  • A, sunucu kasasının ana bilgisayar ve bağlantı noktasıdır.
  • B, savaş dosyasının adıdır.
  • C web.xml dosyasındaki url-pattern öğesinden gelir.
  • D, sun-jaxws.xml dosyasındaki url pattern niteliğinin bitiş kökünden gelir.
+0

Hmm ... bundan haberi yoktu. Sry hala öğrenciyim. Tomcat’te Metro’yı kurmaya bir göz atacağım. Anlayış için teşekkürler! Saygılarımızla, Krt_Malta –

+0

@Krt_Malta Sorun değil. Bunu nasıl yapacağınızı açıklayan bazı işaretçiler ekledim (önerim olan Tomcat 6.x'i kullandığınızı varsayarak). –

+0

Hmm ... hayır şans. Http://blogs.oracle.com/arungupta/entry/metro_on_tomcat_6_x adresine göre kurdum, Tomcat'i (Tomcat 6.0.24 olan) yeniden başlattım ve savaş dosyasını tekrar kopyaladım, ancak 404 hatası almaya başladım. wsdl dosyasına erişmeye çalışıyor. Herhangi bir fikir lütfen? 10x. Krt_Malta –