Не-специфичным для Java (под которым я подразумеваю общий подход, а не тот, который не применяется при использовании Java) является использование простого подхода «запрос / ответ», как отметил Аарон Дигулла. Это очень распространенный сценарий, но его легко перепроектировать (как на самом деле, его довольно просто и просто написать - особенно при использовании соответствующих вспомогательных библиотек).
Если ваше приложение для веб-службы для добавления / удаления записей из базы данных содержит более 200-300 строк кода, то оно, вероятно, перегружено (даже при разумной обработке ошибок и динамической конфигурации).
Если ваша база данных поддерживает блокировку и обеспечение уникальности (и транзакций, если вам требуется такая функциональность), я бы посоветовал вам не переусердствовать, написав демон блокировки - просто позвольте базе данных позаботиться об этом и обработать исключения.
Если вам действительно нужна блокировка (например, потому что вы пишете в какую-то внешнюю службу, например, немного аппаратного обеспечения), тогда вы можете использовать типичный подход UNIX для блокировки ресурсов и написать демон с одним экземпляром, который работает на локальном компьютере. сокет, с которым могут общаться все ваши веб-сервисы - в зависимости от того, указывает ли ресурс на занятость, они могут либо отклонить запросы, либо поставить их в очередь (например, в памяти в системе очередей, в таблице в базе данных SQL и т. д.) с демоном, который обрабатывать запросы в очереди (которые также общаются со службой блокировки).
Чтобы все было действительно просто, вы всегда можете просто всегда отправлять запросы в систему обслуживания очередей из веб-службы, я бы рекомендовал, если только вам не нужно различать «это действие выполняется» и « это действие ставится в очередь "в ваших ответах клиенту, отправившему запрос.
Что касается самого интерфейса, лично я предпочитаю что-то, что широко признано в качестве открытого стандарта, легко реализуемо и легко интерпретируемо, например, сервис Document / Literal SOAP, а не что-то вроде RPC / encoded (устарело и зло) или JMS (которая является собственностью, хотя на практике поддерживается в различной степени).
Если вы пишете исключительно внутреннюю службу, а вы - исключительно магазин Java, JMS очень подходит, но если это не внутреннее приложение, лучше играть хорошо и не предполагать, что все остальные захотят использовать JMS-клиент просто поговорить с вашим сервисом (я евангелизирую Doc / Lit SOAP, потому что он может быть проанализирован любым, что может обработать даже базовый XML и одобрен WS-I).