Squeak.ru - шаблоны программирования

одновременный запрос к сервису остального трикотажа

Я разрабатываю очень простой веб-сервис REST с реализацией Eclipse, Tomcat7 и Jersey с подключением к MySQL. Глядя на документацию по трикотажу, я знаю, что каждый запрос создает новый объект класса корневых ресурсов. Но я не знаю, является ли каждый запрос независимым, например, если один запрос должен ждать долго, сервер нормально примет больше запросов?

Проблема в том, что у меня есть 2 основных класса, 1 класс реализует Джерси с аннотациями (Proxy.java) и другой класс, который подключается к BD (Notificator.java), есть только один экземпляр этого класса (Singleton), чтобы используйте только 1 объект Connection. Классы, которые реализуют Джерси, используют этот класс. Итак, если один из запросов заблокирован, я не знаю, будут ли выполняться другие, потому что они используют один и тот же экземпляр (Notificator.java).

Отношение N экземпляров (Proxy.java) использует единственную (Notificator.java) ведьму, имеющую одно соединение с MySQL.


  • почему вы хотите иметь только одно подключение к БД? 03.04.2013
  • я сделал это для простоты и чтобы избежать проблем с синхронизацией. 03.05.2013

Ответы:


1

Джерси разработан поверх сервлетов. Для каждого входящего запроса создается новый поток. Ваш код создает узкое место для всех потоков, поскольку существует конкуренция за один доступный объект подключения. Если у вас есть несколько запросов, только один запрос будет использовать это соединение, а другим придется ждать. Если ждать не долго, то проблем нет. Но если ожидание больше, чем ТАЙМ-АУТ ЗАПРОСА HTTP, то другие ваши запросы могут закончиться как ТАЙМ-АУТ.

Я понимаю, что у вас может быть узкое место с одним подключением из-за некоторых бизнес-требований/осложнений. Поэтому во всех таких случаях, когда мы не можем обрабатывать все запросы одновременно и для этого может быть множество причин, мы должны создавать наши веб-сервисы как асинхронные. Асинхронные веб-сервисы работают по модели ОТПРАВИТЬ ЗАПРОС-> ЗАПРОС ПРИНЯТ (будет обрабатываться асинхронно) и URL-адрес ЗАДАНИЯ, возвращаемый для опроса-> ОПРОС КЛИЕНТА, пока ЗАДАНИЕ НЕ БУДЕТ ЗАВЕРШЕНО.

Надеюсь, поможет!

04.05.2013
  • Для каждого входящего запроса создается новая ветка, это был важный момент!! Спасибо. Я знаю, что есть узкое место, потому что я использую только одно соединение, но обычно будет только 2 или 3 одновременных запроса, поэтому я думаю, что проблем с тахтом не будет. Но я буду изучать асинхронный веб-сервис. 06.05.2013

  • 2

    Попробуйте пул соединений с базой данных, подробнее об этом здесь:

    http://en.wikipedia.org/wiki/Connection_pool

    Как установить пул соединений в JDBC?

    03.04.2013
  • спасибо, но в конце концов мой учитель сказал мне, что пул соединений будет сложно реализовать, поэтому я использовал только ключевое слово syncronized в классе Notificator, чтобы избежать проблем с параллельным выполнением. Я также понял, что каждый вызов трикотажа выполняется независимо, поэтому, если один из них вызывает блоки, другие будут работать нормально. 03.05.2013
  • С помощью ключевого слова synchronized вы блокируете другие вызовы. Если это то, что вам нужно, то ок. 03.05.2013
  • я блокирую другие вызовы, но когда ресурс доступен, они просыпаются? это то, что мой учитель объяснил мне. И это работает для меня. 04.05.2013
  • Да, они просыпаются, когда ресурс доступен. 04.05.2013
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...