Erstellen einer web-service-client mit einem bekannten, aber unzugänglich wsdl
Haben wir eine wsdl-und xsd-schema durch ein Unternehmen arbeiten wir mit per E-Mail. Die web-services-wir sind die Anbindung erfolgt über eine IPsec-tunnel. Es gibt lokale Verweise(an Ihrem Ende) in der publizierten WSDL-was bedeutet, dass wir nicht verbrauchen.
1. Frage: Ist das eine gemeinsame Einrichtung? Ich dachte, der Punkt, der mit einer WSDL-war nicht nur zu definieren, der Vertrag aber auch aussetzen der service zu den Verbrauchern.
Ich kann einfach erzeugen der client - /server-code aus der zur Verfügung gestellten WSDL-Datei mit wsimport, wsconsume, etc.. ich weiß, wenn meine generierten client macht einen Aufruf an meine generierten service, den es produziert, die richtige Nachricht, die ich brauche.
2. Frage: gibt es eine einfache Möglichkeit, diese route zu einer anderen soap-Adresse?
Ich will nur in der Lage sein, etwas zu tun:
SalesTaxService svc = new SalesTaxService();
SalesTax tax = svc.getSalesTaxPort()
tax.getRate("NY");
Aber nicht die Seife-Adresse definiert, die in der WSDL. Ich möchte vermeiden, schreiben Sie eine Reihe von Versand Kunden für jede Methode.
Bin ich etwas fehlt?
*In Reaktion auf skaffman:
Dies ist, was erzeugt wurde. Es hatte wsdlLocation als name Schulterzucken
@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"));
}
}
- Siehe auch stackoverflow.com/a/863561/147763
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, WSDL ist ein rein deskriptives Werkzeug, es hat keine wirkliche Laufzeit Rolle. Der web-service läuft völlig unabhängig von der WSDL. Es ist nicht ungewöhnlich für die WSDL, um nicht ausgesetzt werden.
Das hängt ganz davon ab, welche web-service-Implementierung, die Sie verwenden, und Sie nicht sagen, obwohl ich vermute, JAX-WS. Wenn das der Fall ist, werden die Artefakte, die JAX-WS-tools generieren, die Ihnen erlauben, zu übergeben in der URL an den client-stub Konstruktoren, denke ich.
So, ich habe herausgefunden, warum ich hatte ein problem. Ich war der Annahme, dass die wsdlLocation musste, um das WSDL -, dass die eigentliche Leistung war die Veröffentlichung. Dies ist natürlich nicht der Fall ist. Die Lösung ist das Paket eine lokale WSDL-mit der richtigen SEIFE:Adresse für den eigentlichen Dienst an den client.
Bearbeiten
Ich fand heraus, dass Sie sich ändern können Sie die endpoint-Adresse programmgesteuert ohne änderung der tatsächlichen WSDL:
Kredit geht an : Jianming Li