2016-11-11 10 views
0

Я создаю клиент для веб-службы. Я не хотел, чтобы клиент скачивал wsdl каждый раз и получил ответ this.Java SOAP клиент очень медленный

Но оценить исходные файлы WSServiceDelegate,

URL url = wsdl.getSystemId()==null ? null : JAXWSUtils.getEncodedURL(wsdl.getSystemId()); 
WSDLModel model = parseWSDL(url, wsdl, serviceClass);          
service = model.getService(this.serviceName);            
if (service == null)                  
    throw new WebServiceException(              
     ClientMessages.INVALID_SERVICE_NAME(this.serviceName,        
      buildNameList(model.getServices().keySet())));        
// fill in statically known ports               
for (WSDLPort port : service.getPorts())             
    ports.put(port.getName(), new PortInfo(this, port));         

Я вижу, что он до сих пор разбирает WSDL, чтобы получить услугу. Как я могу обойти это. Я предоставил URL-адрес конечной точки, используя контекст.

Мне нужно, чтобы клиент был как можно быстрее и мал, добавление огромного wsdl в нем хуже, чем загрузка wsdl.

ответ

1

Для операций, которые вас интересуют, вы можете создавать свои собственные сообщения SOAP на основе сообщений запроса/ответа wsdl и xsd. Вы можете использовать Jaxb-инструменты для преобразования из XSD в классы Java. Затем вам необходимо выполнить пост-вызовы с помощью Http-клиентов (например, Spring RestTemplate), чтобы отправить тело POST, основанное на мыле, на адрес конечной точки. Это сделает ваши звонки быстрее, но вам нужно больше кода, чтобы извлечь выгоду.

+0

Можете встраивать какие-то детали? Я пошел с вашим предложением, но этого недостаточно для того, чтобы следовать за ним? Добавьте некоторые детали (пример кода может быть), чтобы я мог отметить его как принятый –

 Смежные вопросы

  • Нет связанных вопросов^_^