previous next trail start tutorial home feedback openwings.org

Glossary

Service Based Architectures like Openwings are relatively new. Consequently, there is a learning curve. This glossary is an attempt to make the learning curve easier by listing the most important Openwings concepts on one page. This list is by no means complete. But if you're the type of reader who likes to get the broad overview before diving in, read on.

  • ADL - Openwings uses the Architectural Definition Language to model service-oriented problems. Details can be found under Design Topics of the Openwings tutorial.
  • Ant - Ant is a make-like utility. We endorse the use of Ant because it supports platform independence and it is easy to use. In this tutorial we introduce Ant in the Trail02_GettingStarted trail. We go into more detail in Trail05_Developing Components. We provide several Ant examples in our demo applications and we provide an Ant template to use should you want help in making your own Ant build file.
  • Classpath - Classpath refers to local files that are needed in order for a component to be executed. Classpath URLs cannot be HTTP URLs; they must be file URLs. Details on how to provide classpath information is in the Dependency Resolution section of the Developing Components trail. An extensive example detailing why the classpath was populated the way it was for a demo copmponent can be found in the Dependency Substitution section of Developing Components. Finally, tips for debugging your classpath can be found in the Component Packaging section of Developing Components.
  • Codebase - Codebase specifies the mobile code URLs that a component needs in order for the component to be executed. It's the mechanism that allows us to use remote class loading. Codebase URLs cannot be file URLs; they must be HTTP URLs. Click here for additional information about how codebase works in Jini. How to provide codebase information in your component is covered in detail in the Dependency Resolution of the Developing Components trail. How to debug your codebase is found in the Component Packaging section of Developing Components.
  • Component - It is easy to think of a component as a unit of independent deployment. It is the center-piece of the service based architecture in Openwings. Of particular note is the idea that components have states. The notion of a component is introduced in Developing Components. A more formal definition is given in the introduction section of the Openwings tutorial. How to design components is addressed in the Design Topics trail. Keep in mind, that when components are designed, it is possible to create several versions of a component.
  • Connector - This is what connects components. The goal is to provide protocol independence. The nice thing about connectors is that Component Services does a lot of the detailed work for you. All the user has to do is know how to generate connectors for a component. We use Ant to do that. The first time the notion of connectors are introduced is in the Getting Started trail of the tutorial. Generating connectors is outlined in more detail in the Developing Components trail. When components are designed, the connection part of component relationships are denoted by a modeling method, the Architectural Description Language, ADL.
  • Container - The Openwings container provides an environment for executing Openwings services. Key functionality for Container Services can be found in the Container Services section of the Openwings Introduction. How we can utilize container functionality is done through Context Services. We use a default policy, the Installable Component Descriptor Policy for an executable component to be run on a container in Openwings. And the policy loader in Container Services is what we use to support dependency substitution should a user want to use Openwings property settings from the properties.txt file.
  • Dependencies - Components can have dependencies on other components. There are several notions to keep in mind when considering component dependencies:
  • Dependency Resolution - Dependency resolution refers to substitution of a suggested setting of an attribute in a policy and modifying that attribute into an actual setting. Dependencies are specified by the user in the Resolvable Codebase and Resolvable Classpath attributes of the Installable Component Descriptor Policy. Of particular note is the ability to use the dependent component's version to specify a dependency, assuming multiple versions of a component exists. If a version is not specified, Openwings Install Service will find the most recently installed version of a component that is in a resolved state.
  • Dependency Substitution The classpath and codebase (as well as properties) of one component can be inherited through the use of substitution by another component. This is outlined in detail in the Developing Components trail. Executable String and Command Line attributes can also be substituted. Click here for a quick summary table of substitutions.
  • Installable Image - The unit of component deployment is an installable image (Jar file). Details regarding the creation of an installable image can be found in the Packaging section of the Developing Components trail. Note, we use Ant to create an installable image. Finally, the Deploying Components trail further explains how to deploy your component once an installable image is created.
  • Interface - Interfaces allow us to declare the nature of a service without specifying the implementation. The use of interfaces is a fundamental practice in Openwings because services are defined and obtained through the use of interfaces. We discuss the definition of the service contract (interface) in the Design Topics trail. Another good definition of Java interfaces can be found here and here.
  • Native Code - Native code refers to programs that are written in another language other than Java, such as assembler or C++. You can use the Java Native Interface (JNI) to allow your Java program to interoperate with such programs. We provide details on how to do that in Openwings--see the Native Code appendix. We also offer a Native Code demo that provides an example in integrating native code. You can find this Native Code demo under the "demos" folder where you installed Openwings.
  • Policies - Policies provide configuration information so that components can be executed in their environment. The Developing Components trail discusses how to create and use policies. In most cases, an executable component to be run on Container Services will be using the Installable Component Descriptor Policy as their default policy. But it is possible to create a unique policy for a user defined interface. The default policy, Installable Component Descriptor Policy, is discussed in the Packaging section of the Developing Components trail.
  • Properties - The properties mechanism in Openwings is an extension of Java properties. Property keys and their descriptions in Openwings are listed here but, of course, you may add your own properties. Note that Openwings further expands its use of properties by using property substitution. That is, it is possible to obtain a property setting from one component and apply it to your component. Information on debugging your property settings can be found in the Properties section of Developing Components.
  • Service - A service is a contractually defined behavior that can be implemented and provided by a component for use by any component, solely based on the contract. Sometimes the word "contract" and "interface" are used interchangeably. That is because services are defined through interfaces. In the Openwings tutorial, in the introduction, we discuss a formal definition of a service noting that services are things that are published and discovered. The principles involved in designing services are addressed in the Design Topics tutorial trail.

Back to Tutorial Trails

© Copyright 2002, General Dynamics Decision Systems. All rights reserved.

previous next trail start tutorial home feedback openwings.org