У меня есть клиентский сервис SOAP, который работает нормально.Заголовки SOAP и запрос обрабатываются в SOAPConnector class
.
public class SOAPConnector extends WebServiceGatewaySupport {
public Object callWebService(String url, Object request) {
// CREDENTIALS and REQUEST SETTINGS...
return getWebServiceTemplate().marshalSendAndReceive(url, request, new SetHeader(requestHeader));
}
}
. Я получаю запрошенные данные, как только вызываю службу (SoapConnector) в main Class
.
@SpringBootApplication
public class SpringSoapSecurityDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringSoapSecurityDemoApplication.class, args);
}
@Bean
public CommandLineRunner lookup(SOAPConnector soapConnector) {
return args -> {
String hotelCode = "****";
FutureBookingSummaryRequest request = new FutureBookingSummaryRequest();
FetchBookingFilters additionalFilters = new FetchBookingFilters();
// Some additionalFilters settings
request.setAdditionalFilters(additionalFilters);
FutureBookingSummaryResponse response = (FutureBookingSummaryResponse) soapConnector
.callWebService("MY WSDL URL", request);
System.err.println(response.getHotelReservations());
};
}
}
*.1008 *
ТАК ЧТО ЭТО РАБОТАЕТ В КАЧЕСТВЕ. Затем я попытался создать отдельный сервис для предыдущего запроса.BookingService.java
public class BookingService extends WebServiceGatewaySupport {
@Autowired
SOAPConnector soapConnector;
public String getReservations() {
String hotelCode = "****";
FutureBookingSummaryRequest request = new FutureBookingSummaryRequest();
FetchBookingFilters additionalFilters = new FetchBookingFilters();
// Some additionalFilters settings
request.setAdditionalFilters(additionalFilters);
FutureBookingSummaryResponse response = (FutureBookingSummaryResponse) soapConnector
.callWebService("MY WSDL URL", request);
System.err.println(response.getHotelReservations());
};}
Чтобы добавить SOAPCONNECTOR, я добавил @Service
к классу SOAPCONNECTOR и @Autowired
SOAPConnector soapConnector к сервису, вызывающему его
Теперь, когда я вызываю созданный BookingService
в основном классе
@SpringBootApplication
public class SpringSoapSecurityDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringSoapSecurityDemoApplication.class, args);
BookingService bookingService = new BookingService();
bookingService.getReservations();
}
}
SOAPCONNECTOR перестает работать и я получаю следующую ошибку:
Маршаллер не зарегистрирован.Проверьте конфигурацию WebServiceTemplate.
Я почти уверен, что эта проблема связана с SPRING IOC, внедрением зависимостей .. Поскольку служба SOAP хорошо настроена и работает ..
ПримечаниеЯ проверил этот похожий вопрос Использование ошибки веб-службы SOAP (маршаллер не зарегистрирован. Проверьте конфигурацию WebServiceTemplate) , но @Autowired
не решил проблему.Любая помощь?