Language Support for Service Interactions in Service-Oriented Architecture
The Open Services Gateway initiative (OSGi) is a platform for running service-oriented Java applications. OSGi provides a central service registry to allow application components (so-called bundles) to share functionality. From the viewpoint of programming language development, OSGi leaves a lot of room for improvement. Its service query language, for instance, bypasses important compile-time guarantees and it works only for service metadata that never changes during the lifetime of a service. A second problem is that the event notification system requires programmers to write a considerable amount of boilerplate logic for reacting to service events. This obfuscates the business logic, which in turn decreases code comprehension and increases the odds for introducings bugs when implementing client-service interactions.
This paper evaluates OSGi as a platform for programming client-service interactions in Java. After focusing on problems that relate to OSGi’s integrated service query language and its event notification system, we propose a solution based on a programming language extension. We also show how this extension is transformed to regular Java code so as to maintain interoperability with the OSGi specification.
KeywordsService-Oriented Architecture Language Concepts
Unable to display preview. Download preview PDF.
- 1.Papazoglou, M.: Service Oriented Computing: Concepts, Characteristics and Directions. In: Proceedings of the 4th International Conference on Web Information Systems Engineering (2003)Google Scholar
- 2.OSGi: Open Services Gateway Initiative Specification v4.0.1 (2006), http://www.osgi.org
- 3.Marples, D., Kriens, P.: The open service gateway initiative: An introductory overview. IEEE Communications Magazine 39 (2001)Google Scholar
- 5.OSGi: Listeners considered harmful: The whiteboard pattern (2004), www.osgi.org/documents/osgi_technology/
- 6.De Labey, S., Steegmans, E.: Typed Abstractions for Client-Service Interactions in OSGi. In: Proceedings of the Third International Conference on the Evaluation of New Approaches to Software Engineering (2008)Google Scholar
- 7.De Labey, S., Steegmans, E.: ServiceJ. A Type System Extension for Programming Web Service Interactions. In: Proceedings of the Fifth International Conference on Web Services, ICWS 2007 (2007)Google Scholar
- 8.van Dooren, M., Vanderkimpen, K., De Labey, S.: The Jnome and Chameleon Metamodels for OOP (2007)Google Scholar
- 10.Hohpe, G., Woolf, B.: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (2003)Google Scholar
- 11.Sun: The Jini Architecture Specification and API Archive – (2005), http://www.jini.org
- 12.Huang, Y., Walker, D.: Extensions to Web Service Techniques for Integrating Jini into a Service-Oriented Architecture for the Grid. In: Proceedings of the International Conference on Computational Science (2003)Google Scholar
- 14.Cervantes, H., Hall, R.: Automating Service Dependency Management in a Service-Oriented Component Model. In: Proceedings of the 6th Workshop on Foundations of Software Engineering and Component Based Software Engineering, pp. 379–382 (2003)Google Scholar
- 15.Bosch, J.: Design patterns as language constructs. Journal of Object-Oriented Programming 11, 18–32 (1998)Google Scholar
- 16.Java SE 6.0: VetoableChangeListener API (1998), http://java.sun.com/javase/6/
- 18.Riehle, D.: The Event Notification Pattern–Integrating Implicit Invocation with Object-Orientation. Theor. Pract. Object Syst. 2 (1996)Google Scholar
- 19.Lyon, D.A., Weiman, C.F.R.: Observer-conditioned-observable design pattern. Journal of Object Technology 6 (2007)Google Scholar
- 20.Tschantz, M.S., Ernst, M.D.: Javari: Adding reference immutability to Java. In: Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2005), San Diego, CA, USA, pp. 211–230 (2005)Google Scholar
- 22.De Labey, S., van Dooren, M., Steegmans, E.: ServiceJ: Service-Oriented Programming in Java. Technical Report KULeuven, CW451 (June 2006)Google Scholar