Hemos recibido un esquema wsdl y xsd de una empresa con la que estamos trabajando por correo electrónico. Se accede a los servicios web con los que estamos interactuando a través de un túnel IPsec. Existen referencias locales (en su extremo) en el WSDL publicado, lo que significa que no podemos consumirlo.Creación de un cliente de servicio web con wsdl conocido pero inaccesible
1ª pregunta: ¿Es esta una configuración común? Pensé que el objetivo de tener un WSDL no era solo definir el contrato sino también exponer el servicio a los consumidores.
Puedo generar fácilmente código de cliente/servidor fuera del WSDL provisto usando wsimport, wsconsume, etc. Sé cuando mi cliente generado realiza una llamada a mi servicio generado y produce el mensaje correcto que necesito.
2da pregunta: ¿Hay una manera fácil de dirigir esto a una dirección de jabón diferente?
Sólo quiero ser capaz de hacer algo como:
SalesTaxService svc = new SalesTaxService();
SalesTax tax = svc.getSalesTaxPort()
tax.getRate("NY");
Pero no utilice la dirección de jabón definido en el WSDL. Me gustaría evitar escribir un grupo de clientes de envío para cada método.
¿Echo de menos algo?
* En respuesta a skaffman: Esto es lo que se generó. Es por defecto en wsdlLocation como un nombre encogimiento
@WebServiceClient(name = "SomeService")
public class SomeService_Service extends Service {
public SomeService_Service(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
public SomeService_Service(URL wsdlLocation) {
super(wsdlLocation, new QName("urn:some_service", "SomeService"));
}
}
Ver también http: // stackoverflow. com/a/863561/147763 –