Language Support for Service Interactions in Service-Oriented Architecture

  • Sven De Labey
  • Jeroen Boydens
  • Eric Steegmans
Part of the Communications in Computer and Information Science book series (CCIS, volume 69)

Abstract

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.

Keywords

Service-Oriented Architecture Language Concepts 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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. 2.
    OSGi: Open Services Gateway Initiative Specification v4.0.1 (2006), http://www.osgi.org
  3. 3.
    Marples, D., Kriens, P.: The open service gateway initiative: An introductory overview. IEEE Communications Magazine 39 (2001)Google Scholar
  4. 4.
    Hall, R., Cervantes, H.: Challenges in building service-oriented applications for OSGi. IEEE Communications Magazine 42, 144–149 (2004)CrossRefGoogle Scholar
  5. 5.
    OSGi: Listeners considered harmful: The whiteboard pattern (2004), www.osgi.org/documents/osgi_technology/
  6. 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. 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. 8.
    van Dooren, M., Vanderkimpen, K., De Labey, S.: The Jnome and Chameleon Metamodels for OOP (2007)Google Scholar
  9. 9.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design patterns: elements of reusable object-oriented software. Addison-Wesley Professional, Reading (1995)MATHGoogle Scholar
  10. 10.
    Hohpe, G., Woolf, B.: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (2003)Google Scholar
  11. 11.
    Sun: The Jini Architecture Specification and API Archive – (2005), http://www.jini.org
  12. 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
  13. 13.
    Hall, R., Cervantes, H.: Gravity: supporting dynamically available services in client-side applications. SIGSOFT Software Engineering Notes 28, 379–382 (2003)CrossRefGoogle Scholar
  14. 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. 15.
    Bosch, J.: Design patterns as language constructs. Journal of Object-Oriented Programming 11, 18–32 (1998)Google Scholar
  16. 16.
    Java SE 6.0: VetoableChangeListener API (1998), http://java.sun.com/javase/6/
  17. 17.
    Hedin, G.: Language Support for Design Patterns Using Attribute Extension. In: Bosch, J., Mitchell, S. (eds.) ECOOP 1997 Workshops. LNCS, vol. 1357, pp. 137–140. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  18. 18.
    Riehle, D.: The Event Notification Pattern–Integrating Implicit Invocation with Object-Orientation. Theor. Pract. Object Syst. 2 (1996)Google Scholar
  19. 19.
    Lyon, D.A., Weiman, C.F.R.: Observer-conditioned-observable design pattern. Journal of Object Technology 6 (2007)Google Scholar
  20. 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
  21. 21.
    Pratikakis, P., Spacco, J., Hicks, M.: Transparent Proxies for Java Futures. In: OOPSLA 2004: Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pp. 206–223. ACM, New York (2004)CrossRefGoogle Scholar
  22. 22.
    De Labey, S., van Dooren, M., Steegmans, E.: ServiceJ: Service-Oriented Programming in Java. Technical Report KULeuven, CW451 (June 2006)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Sven De Labey
    • 1
  • Jeroen Boydens
    • 2
  • Eric Steegmans
    • 1
  1. 1.Department of Computer ScienceK.U. LeuvenLeuvenBelgium
  2. 2.KHBO Department of Industrial Engineering Science & TechnologyOostendeBelgium

Personalised recommendations