Ich möchte SQL-Abfrage zu CUCM DB machen. Ich generierte Java-Klassen von WSDL mit Maven Jaxb2-Plugin, aber Cisco AXL-Dokumente Ratschläge zur Verwendung von Wsdl2java. Ich habe viele Java-Klassen mit Req/Res-Endungen (Anfrage und Antwort wie ich es verstehe). Dies ist mein Code:CUCM AXL API falsch SoapAction
public class CUCMDatabaseConnector extends WebServiceGatewaySupport{
private String SOAP_ACTION = "CUCM:DB ver=10.5";
public void updateData(){
String END_USERS_REQUEST = REQUEST,
AXLurl = "https://" + properties.getCurrentCUCM_IP() + ":8443/axl/";
ExecuteSQLQueryReq sqlRequest = new ExecuteSQLQueryReq();
sqlRequest.setSql(END_USERS_REQUEST);
WebServiceTemplate template = getWebServiceTemplate();
template.setMessageSender(NullHostnameVerifier.getMessageSender());
ExecuteSQLQueryRes sqlResponse = (ExecuteSQLQueryRes) template
.marshalSendAndReceive(
AXLurl,
sqlRequest,
new WebServiceMessageCallback() {
@Override
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
TransportContext context = TransportContextHolder.getTransportContext();
HttpUrlConnection connection = (HttpUrlConnection) context.getConnection();
//adding required headers
connection.addRequestHeader("SOAPAction", SOAP_ACTION);
connection.addRequestHeader("Authorization", autenString);
}
}
});
}
}
}
Aber wenn ich es laufen, bekomme ich Fehler:
org.springframework.ws.soap.client.SoapFaultClientException: The endpoint reference (EPR) for the Operation not found is https://IP:8443/axl/services/AXLAPIService and the WSA Action = CUCM:DB ver=10.5 executeSQLQueryReq
So, wie ich sehe, Problem ist CUCM AXL Service executeSQLQuery Methode, aber nicht executeSQLQueryReq. Wie kann ich Spring richtige Methode in SoapAction setzen? Oder muss ich nur wsdl2java verwenden?
UPDATE
Wenn ich Java-Klassen wurde zu erzeugen, war es auch XSD-Schema in dem Verzeichnis. jaxb2 config zeigte auf WSDL-Datei, aber ich habe Fehler URI [src/main/resources/AXLAPI.wsdl] does not provide the scheme part.
, und es sieht aus wie Plugin erstellte Klassen aus Xsd-Schema, nicht WSDL. Aber diese WSDL wurde ursprünglich von CUCM heruntergeladen. Was könnte falsch sein?
In Bezug auf Ihr Update zu beginnen. Das Problem ist, dass "src/main/resources/AXLAPI.wsdl" kein gültiger URI ist. Der Fehler "stellt den Schemateil nicht bereit" zeigt an, dass das "Schema" (z. B. "https") fehlt. Wenn sich die WSDL in Ihrem lokalen Dateisystem befindet, verwenden Sie etwas wie 'file: /// pfad/zu/AXLAPI.wsdl'. –
Danke, "stellt den Schemateil nicht zur Verfügung" ist jetzt weg und es druckt 'BUILD SUCCESS', erzeugt aber keine Quellen im Zielverzeichnis –