{'fraction_non_alphanumeric': 0.023208191126279865, 'fraction_numerical': 0.0, 'mean_word_length': 5.486725663716814, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A thread synchronization model for SIP servlet containers

Multi-threaded SIP servlet containers pose difficult synchronization problems to application developers. On the one hand, if a container automatically locks resources for servlets according to some fixed protocol, this protocol is not likely to be appropriate for all applications. It may degrade performance or even introduce deadlock in some applications. On the other hand, leaving application programmers to code synchronization---while flexible---is prone to error. The logic to both infer the resources a servlet requires and then to lock the required resources is complex and cross-cutting. This "synchronization logic" can easily obscure an application's "business logic." Interleaving synchronization code with business code makes an application difficult to maintain and extend.
 In this paper, we elaborate key dimensions of the thread synchronization problem for SIP servlet containers. We further propose a novel synchronization model for SIP servlet containers, which addresses these dimensions in a more comprehensive fashion than any existing model that we know of. Our synchronization model is highly flexible. It introduces abstractions to promote correctness, maintainabilty, and extensibility. We also describe a reference framework that implements these abstractions. To illustrate the benefits of our model, we describe a representative SIP application developed using this framework.