CXF имеет некоторую возможность сделать это из коробки.Конечные точки CXF могут иметь фабрику, сконфигурированную на вызывающем устройстве, которое используется для получения вызываемого объекта.Из коробки есть PooledFactory
, который может поддерживать пул экземпляров.Он может быть установлен на , а не создавать дополнительные экземпляры сверх максимума и, таким образом, ждать, пока больше не будет освобождено.Это может немного душить вещи.Вы можете настроить это через конфигурацию весны или через аннотацию на импл:
@FactoryType(value=FactoryType.Type.POOLED, args={"25"})
(25 - максимальный размер пула)
Однако, это очень поздно в обработке.К тому времени, когда он туда доберется, весь XML будет проанализирован, объекты jaxb созданы и т. Д. Для DOS вы, вероятно, захотите остановиться раньше.Вы можете внедрить перехватчик, который будет находиться на ранней стадии в цепочке, который будет хранить счет в конечной точке.Увеличение и проверка входящей цепочки, уменьшение исходящей цепочки.