Zajmuję się tworzeniem WebService z JAX-WS (używam bramki wsimport na jaxws-maven-plugin). Napisałem plik WSDL, który importuje schemat XSD.Schemat xsd nie przedstawiony przez wsdl
WEB-INF/wsdl/service.wsdl
WEB-INF/wsdl/service.xsd
Wygenerowałem również klasy usług internetowych i utworzony punkt końcowy i wszystko. Wszystko do tej pory działało świetnie. Kiedy uruchomiłem moją usługę na Tomcat 7, wszystko jest w porządku. mam dostępu do WSDL w przeglądarce od:
http://localhost:8080/webService/servlet-url?wsdl
ale nie mogę uzyskać dostęp do schematu XSD. Problem polega na tym WSDL:
<xsd:schema>
<xsd:import namespace="http://ws.service/domain/1.0" schemaLocation="service.xsd"/>
</xsd:schema>
Oczywiście podczas generowania klas WSDL i XSD są na lokalnej drogi, ale chcę, żeby być zdalnie dostępne, gdy serwis internetowy jest uruchomiony. Wiem, że obiekt schemaLocation powinien wyglądać tak: http: // localhost: 8080/webService/servlet-url? Xsd = 1 ".
w WSDL przedstawiono w imporcie przeglądarki schould wyglądać następująco:
<xsd:schema>
<xsd:import namespace="http://ws.service/domain/1.0" schemaLocation="http://localhost:8080/webService/servlet-url?wsdl&resource=service.xsd"/>
</xsd:schema>
localhost: 8080/Zestawienie/servlet WSDL daje mi:
wsdl:definitions targetNamespace="http://ws.serv.com/Service/1.0" name="emuiaService">
<wsdl:types>
<xsd:schema>
<xsd:import namespace="http://ws.serv.com/Service/domain/1.0" schemaLocation="schema.xsd"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="halloMsg">
<wsdl:part name="parameters" element="dom:halloRequest"/>
</wsdl:message>
<wsdl:message name="halloResponseMsg">
<wsdl:part name="return" element="dom:halloResponse"/>
</wsdl:message>
i tak dalej ...
Naprawdę nie pamiętam, co zrobiłem ... prawdopodobnie przerzuciłem się na ostatni kontrakt, ale dziękuję za rozwiązanie. Mam nadzieję, że pomoże to komuś kiedyś;) – bemol