2015-11-04 2 views
6

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?

+0

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'. –

+0

Danke, "stellt den Schemateil nicht zur Verfügung" ist jetzt weg und es druckt 'BUILD SUCCESS', erzeugt aber keine Quellen im Zielverzeichnis –

Antwort

2

Gefunden this Link auf developers.cisco.com. Dieses How-to empfiehlt die Verwendung von AXLPort, einer Art Wrapper zum Erstellen einer SOAP-Anfrage an CUCM. Sieht für mich, CUCM AXL SOAP Schnittstelle ist nicht die beste Wahl, um mit der Arbeit mit WS WS

Verwandte Themen