Можно ли настроить org.apache.cxf.service.factory.ReflectionServiceFactoryBean для кэширования WSDL?
Я использую JBoss 7.1.1, но каждый раз, когда мой EAR отправляет SOAP-запрос, требуется около 2 минут, пока JBoss создает каждый требуемый сервис:
14:30:14,822 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (http--0.0.0.0-8081-3) Creating Service {http://services.discretewireless.com/v2009_1/}AuthenticationManagerV1Port from WSDL: http://services.discretewireless.com/v2009_1/AuthenticationManagerV1.wsdl
Вместо того, чтобы создавать сервисы во время выполнения, каждый раз, когда они используются, я могу что-то настроить где-то, чтобы не приходилось загружать WSDL и... Создание службы... из WSDL:... каждый раз, когда один из мои бобы делают SOAP-запрос?
1 ответ
Вы можете скачать wsdl перед запуском вашего клиента и сделать его доступным двумя различными способами: во-первых, генератор wsdl2java в CXF позволяет вам зафиксировать местоположение wsdl (wsdlLocation) на вашем пути к классам, а wsdl может быть даже заархивирован в том же банке, что и твои окурки. Или, во-вторых, вы можете вместо этого передать URL-адрес (ссылающийся на локальный файл) в конструктор службы, где URL-адрес выглядит как "file://path..."