CUCM DB への SQL クエリを作成したいと考えています。Maven jaxb2 プラグインを使用して WSDL から Java クラスを生成しましたが、Cisco AXL は wsdl2java を使用するようにアドバイスしています。Req/Res エンディングを持つ Java クラスがたくさんあります (私が理解しているように、リクエストとレスポンス)。これは私のコードです:
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);
}
}
});
}
}
}
しかし、実行するとエラーが発生します:
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
ご覧のとおり、問題は CUCM AXL サービスにexecuteSQLQueryメソッドがありますが、 executeSQLQueryReqはありません。SoapAction に正しいメソッドを配置する Spring を作成するにはどうすればよいですか? または、wsdl2java のみを使用する必要がありますか?
アップデート
Java クラスを生成していたとき、ディレクトリには .xsd スキーマもありました。jaxb2 config は WSDL ファイルを指していましたがURI [src/main/resources/AXLAPI.wsdl] does not provide the scheme part.
、エラーが発生しました。 wsdl ではなく、xsd スキーマからプラグインがクラスを作成したようです。しかし、この wsdl は CUCM からダウンロードされた元のファイルでした。何が間違っている可能性がありますか?