Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Author Signature:

Date:

Approved by:

Signature:

Institute:

Date:

Keywords: |Released by:|Signature:|

Institute:

Date:

ACS Java Component Programming Tutorial

Programmer's Manual 

Heiko Sommer (hsommer@eso.org)

ESO

Change Record

...

REVISION

...

DATE

...

AUTHOR

...

SECTIONS/PAGES AFFECTED

...

 

...

REMARKS

...

 

...

 

...

1.0

...

2003-01-10

...

Heiko Sommer

...

All

...

 

...

Created, with suggestions from Joe and Gianluca

...

 

...

 

...

1.1

...

2003-02-06

...

Heiko Sommer

...

Almost all

...

 

...

Update reflecting new CVS module structure and Makefile syntax; worked in suggestions from Gianluca, David, and Radi; more details added in many places.

...

 

...

 

...

1.2

...

2004-02-17

...

Heiko Sommer

...

All

...

 

...

Updated instructions, code examples, and references for ACS 3.0; added details on Makefile integration;

...

 

...

 

...

1.3

...

2005-06-10

...

Heiko Sommer

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

 

...

Change History

Table of Contents

Introduction

...

Purpose and Scope of the Document


Wiki Markup
\\
The purpose of this document is to give a practical introduction to writing Java components for ALMA software, using the ACS container/component framework. You should have read the section on Technical Architecture in \[<ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="d427ddfd-74b6-47bb-960b-72d9d41a4783"><ac:parameter ac:name="">_Hlt64776435</ac:parameter></ac:structured-macro>1\] or have learned otherwise about the concepts of container/component and XML binding classes to be used for ALMA software. You should also be familiar with the ALMA build environment (see \[8\]), even though a few things are explained redundantly in this tutorial.
\\
While describing the steps involved in developing two sample components, I will try to provide information beyond the scope of the demo components in order to help using the framework for concrete ALMA subsystem development. However, this is not a concept or design document for the respective parts of ACS. It should help you to get started nonetheless.
\\
The Java container/component model is fully integrated in ACS. It is meant to be used by ALMA subsystems or the parts of them that don't have real-time requirements and don't directly control hardware devices. 
\\

...


The classes shown in normal print are mandated by CORBA standards and generated by the CORBA IDL compiler, while the italicized classes are required by the ACS framework and are generated by the ACS IDL compiler.

Anchor
_Ref30221783
_Ref30221783
Anchor
_Toc64798225
_Toc64798225
Component implementation

...


We've seen the example of a Java component accessing a C++ Component in 4.2, and a Java component accessing another Java component without transparent XML binding support referenced in 5.1.
To use support for xml binding classes on the client side of a call, we first obtain the other component (here: XMLCOMP1)
XmlComponent xmlComp = alma.demo.XmlComponentHelper.narrow(
getComponent("XMLCOMP1"));
and then ask the container to wrap it with the more convenient interface that uses XML binding classes, provided in the ContainerServices interface
XmlComponentJ xmlCompJ =
(XmlComponentJ) m_containerServices.createXmlBindingWrapper(
XmlComponentJ.class,
xmlComp,
XmlComponentOperations.class);
Now we can keep working with xmlCompJ, and the framework will delegate all calls to xmlComp, translating between XML binding classes and serialized XML presentation in between.

Anchor
_Toc64798231
_Toc64798231
JUnit Test Client

...