Необходимо использовать сторонний веб-сервис, открытый через SOAP. Но ответ имеет слишком глубокие графические объекты и время отклика очень велико: 40-60 сек. JAXB сортировка и разборки также добавляет значительную задержку сверху. Есть ли способ уменьшить задержку, используя protobuf/бережливость. Также некоторые последние модули приложений переносятся в Vertx. В то время как CXF имеет встроенный asychHttpClient
, существует ли эквивалентный модуль в Vertx. В чем преимущество использования его над клиентом CXF?Оптимизация клиента Java SOAP и асинхронный клиент
ответ
Вы ссылаетесь на 2 отдельных вопроса здесь.
1) Служба третьей стороны занимает 40-60 секунд для ответа.
Как правило, вы не можете ускорить ответ, поэтому вам нужно иметь дело с ним как есть, а выбор, который вы используете, зависит только от вашего приложения. Vert.x может помочь в этом отношении, потому что он асинхронен по дизайну.
2) График объекта ответа большой, а десериализация JAXB имеет серьезные накладные расходы.
Скорее всего, буферные или протокольные буферы не помогут вам, потому что они совершенно разные технологии, чем SOAP/XML. Вероятно, проблема заключается в том, что JAXB считывает все сообщение в память, а затем создает для него полный графический объект, независимо от объема данных, который вам действительно нужен. Если вам действительно не нужны все данные, вам следует исследовать с помощью чего-то вроде Streaming API для XML (StAX), который является частью платформы Java. Он позволяет анализировать XML-сообщение без создания объектной модели для данных, которые вам не нужны.
Спасибо, у вас есть предпочтение STAX по сравнению с XSLT, производительность wise.XSLT также может преобразовать ответ мыла на json response (string). – rohit
Это зависит от вашего варианта использования. Также я не уверен, как преобразование ответа на JSON вписывается в изображение. Если вы имеете дело с очень большим ответом SOAP, и вам нужна только небольшая часть данных, я лично рассмотрю возможность использования StAX, поскольку он дает вам максимальный контроль над тем, как выполняется синтаксический анализ. Если вам нужно преобразовать в JSON, вы можете комбинировать с помощью StAX что-то вроде этого: http://wiki.fasterxml.com/JacksonStreamingApi – BCG
- 1. Java: простой клиент SOAP
- 2. Простой клиент SOAP Java
- 3. Асинхронный HTTP-клиент для Java
- 4. Haskell: какой клиент для использования SOAP-клиента?
- 5. Клиент клиента MongoDB Java
- 6. Написание SOAP-клиента в Java
- 7. Клиент SOAP-клиента Ruby & Savon - Не удается найти операцию SOAP
- 8. Java SOAP клиент очень медленный
- 9. SOAP Java клиент HTTPS/SSL
- 10. Асинхронный Клиент в ZeroMQ
- 11. Клиент веб-сервиса Java (soap) - используйте сертификаты
- 12. Асинхронный клиент Oracle NoSQL?
- 13. SOAP-клиент с node.js и socket.io
- 14. Клиент FIWARE SOAP
- 15. Получение запроса клиента SOON SOAP для неблокирования (асинхронный)
- 16. SOAP-сервер в JAVA <-> SOAP-клиент в C#
- 17. Веб-сервис с использованием php soap-сервера и java-клиента
- 18. PHP WSDL (SOAP) клиент
- 19. Оптимизация на стороне клиента и оптимизация SEO
- 20. Асинхронный сокет клиент получает
- 21. Асинхронный клиент REST
- 22. SOAP webservice: сервер Python и клиент perl
- 23. асинхронный клиент-сервер WCF
- 24. SOAP faultcode окр: Клиент
- 25. Axis2 клиент - журнал запрос SOAP и ответ
- 26. http (json) библиотека, клиент и сервер, возможно асинхронный
- 27. Оптимизация производительности смарт-клиента
- 28. Spring SOAP Ws клиент
- 29. Java-клиент и InstanceContextMode
- 30. Пример рабочего клиента Soap
Если услуга, открытая для вас, является SOAP ... ну, для начала вам придется убедить другую сторону переписать весь свой слой API. – JensG
Являются ли 40-60 секунд временем между запросом и ответом на ваш внешний SOAP WS или он также проводится внутри вашего собственного уровня/службы для преобразования (маршал/unmarshal) полученных объектов? –
@ruffp В основном, клиент весеннего мыла, он возвращает объект результата после маршала/безмаршала, поэтому да, он включает время маршала/немаршала – rohit