Sto sviluppando WebService con JAX-WS (sto usando l'obiettivo wsimport su jaxws-maven-plugin). Ho scritto un WSDL che importa uno schema XSD.schema xsd non presentato da wsdl
WEB-INF/wsdl/service.wsdl
WEB-INF/wsdl/service.xsd
Inoltre ho generato classi di servizi Web e creato endpoint e tutto. Tutto ha funzionato alla grande finora. Quando ho eseguito il mio servizio su Tomcat 7, tutto è ok. Posso accedere a una WSDL nel mio browser da:
http://localhost:8080/webService/servlet-url?wsdl
ma non riesco a ottenere l'accesso a uno schema XSD. Il problema è in questo wsdl:
<xsd:schema>
<xsd:import namespace="http://ws.service/domain/1.0" schemaLocation="service.xsd"/>
</xsd:schema>
Naturalmente durante la generazione di classi WSDL e XSD sono il percorso locale ma voglio che siano accessibili in remoto quando il servizio Web è in esecuzione. So che schemaLocation dovrebbe essere qualcosa del tipo "http: // localhost: 8080/webService/servlet-url? Xsd = 1".
In wsdl presentato in importazione del browser schould simile:
<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/webService/servlet wsdl mi dà:?
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>
e così via ...
Davvero non ricordo cosa ho fatto ... probabilmente sono passato al contratto ma grazie per averlo risolto. Spero che aiuti qualcuno prima o poi;) – bemol