Рекомендации по использованию веб-службы другой веб-службы - PullRequest
0 голосов
/ 08 июля 2011

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

Мне нужно разработать промежуточный веб-сервис, работающий на Tomcat 6.

Клиентская программа использует мой веб-сервис.

Мой веб-сервис по очереди должен выполнить несколько поисков, 10, основываясь на информации от клиента.Эти поиски используют сторонний веб-сервис.Сторонние поставщики классов-заглушек Java.

Можно / нужно ли написать свой веб-сервис как многопоточный, чтобы каждый поток создавался и использовался для поиска, а результаты сопоставлялись и возвращались клиенту?

Поиски могут занять некоторое время приблизительно 200-500 мс

Все советы с благодарностью получены,

Ответы [ 2 ]

0 голосов
/ 08 июля 2011

Кажется, здесь есть потенциальные преимущества в том, что несколько внутренних запросов выполняются параллельно, поэтому некоторая многопоточность кажется хорошей идеей.

У меня возникает несколько проблем:

  1. Прямое порождение потоков в контейнере Java EE обычно не рекомендуется - контейнеры Java EE любят это контролировать - поэтому есть специально поддерживаемые API для этого в мире Java EE (см. этот ответ для получения дополнительной информации по этой теме.) Я не знаю, поддерживает ли Tomcat такие API в наши дни, если нет, то, возможно, что-то , подобное этому , может работать.
  2. Вам нужна хорошая стратегия, чтобы иметь дело с нарушенными и медленными ответами. Предположим, что у вас есть 7 из 8 ответов, а восьмое, кажется, занимает очень много времени, лучше ли давать быстрые частичные ответы. Лучше подумать об этом заранее.
  3. Что приводит к тому, что лучше использовать какой-то подход "уведомлений", отправить запрос, вернуться позже, чтобы собрать промежуточные результаты, вернуться еще позже, чтобы собрать более полные результаты.
  4. Некоторые внутренние системы могут плохо реагировать на чрезмерные запросы из одного и того же источника. Возможно, вам придется ограничить количество запросов, чтобы быть «общительным», а также избегать любых политик черного списка.
0 голосов
/ 08 июля 2011

Я немного неуверен в том, что именно вам нужно.Можно ли выполнять поиск параллельно?Если это так, то может быть неплохо использовать многопоточность для их выполнения.

У нас есть нечто похожее в приложении, над которым я работаю - длительный поиск выполняется в отдельномпоток, чтобы можно было продолжить другую обработку, а затем, когда она будет завершена, результаты будут отправлены обратно клиенту.

Нет проблем с этим, мы запускаем Tomcat 6, и он работает нормально.Очевидно, что применяются обычные предостережения с многопоточностью, мы используем библиотеку Java 6 java.util.concurrent, которая действительно полезна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...