2015-11-04 16 views
6

Tôi muốn thực hiện truy vấn SQL đến CUCM DB. Tôi tạo ra các lớp Java từ WSDL với plugin javenb2 Maven, nhưng lời khuyên của tài liệu Cisco AXL để sử dụng wsdl2java. Tôi đã có rất nhiều lớp Java với kết thúc Req/Res (yêu cầu và đáp ứng như tôi đã hiểu). Đây là mã của tôi:CUCM AXL API sai 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); 
           } 
          } 
        });    
      } 
    } 
} 

Nhưng khi tôi chạy nó, tôi nhận được lỗi:

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

Vì vậy, như tôi thấy, vấn đề là dịch vụ CUCM Axl có executeSQLQuery phương pháp, nhưng không executeSQLQueryReq. Làm thế nào tôi có thể làm cho Spring đưa phương pháp đúng vào SoapAction? Hoặc tôi chỉ cần sử dụng wsdl2java?


CẬP NHẬT

Khi tôi tạo ra các lớp học java, cũng có schema XSD trong thư mục. Tuy nhiên, cấu hình jaxb2 trỏ tới tệp WSDL, tôi đã gặp lỗi URI [src/main/resources/AXLAPI.wsdl] does not provide the scheme part. và có vẻ như các plugin được xây dựng từ các lược đồ xsd, chứ không phải wsdl. Nhưng tệp wsdl này là tệp gốc được tải xuống từ CUCM. Điều gì có thể sai?

+0

Về cập nhật của bạn. Vấn đề là "src/main/resources/AXLAPI.wsdl" không phải là một URI hợp lệ. Lỗi "không cung cấp phần lược đồ" cho biết rằng "sơ đồ" (ví dụ: "https") bị thiếu. Nếu WSDL nằm trên hệ thống tệp cục bộ của bạn, hãy sử dụng một cái gì đó như 'file: /// path/to/AXLAPI.wsdl'. –

+0

Cảm ơn, "không cung cấp phần chương trình" bây giờ đã biến mất và nó in 'BUILD SUCCESS', nhưng không tạo ra nguồn nào trong thư mục đích –

Trả lời

2

Tìm thấy liên kết this trên developers.cisco.com. Hướng dẫn cách sử dụng AXLPort, một loại trình bao bọc để thực hiện yêu cầu SOAP cho CUCM. Dường như với tôi, giao diện CUCM AXL SOAP không phải là lựa chọn tốt nhất để bắt đầu làm việc với Spring WS

Các vấn đề liên quan