{'fraction_non_alphanumeric': 0.017142857142857144, 'fraction_numerical': 0.0016326530612244899, 'mean_word_length': 5.255102040816326, '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}}
Using fail-stop proxies for enhancing services isolation in the OSGi service platform

The OSGi Service Platform is becoming the de facto middleware for deploying modularized Java applications. It is a dynamic platform that relies on a service oriented approach for loose coupling, but the absence of separate object spaces for isolating services of different modules cannot guarantee that service providers from uninstalled modules will no longer be referenced by active code. This may lead to memory retention and inconsistencies (e.g. a stale service that provides invalid cached data) that can introduce silent faults in the system by propagating invalid information.
 We present our ongoing work where we introduce an isolation layer between service consumer and provider by using dynamic proxies for services. When the corresponding service becomes unregistered (i.e. uninstalled) the mechanism is able to: 1) Guarantee that no consumers directly refer to the service provider; 2) allow finding out the misreferencing consumer code by using a fail-stop mechanism. We have tested this mechanism in different OSGi based applications and benchmarked it against other approaches for accessing services in the OSGi platform.