Introduction

Tamino X-Tension enables you to develop, implement, administrate and execute Tamino server extensions. Tamino server extensions can be used to extend the Tamino Server functionality by adding user-defined logic. The fields of extensibility cover query language, trigger and mapping functionality. For a description of the calling contexts in the Tamino Server, see the documentation for Tamino X-Query, Tamino XQuery and the Tamino XML Schema User Guide, as well as for the Tamino Schema Editor. For server extension function types related to these contexts, see the section Tamino Server Extension Functions.

Functionality that can be added to the Tamino Server by using Tamino server extensions includes:

  • Content-based mapping to/from Tamino and other data sources. For detailed explanations, see the section Callbacks;

  • User-defined functions, as documented in the section Query Functions;

  • Calling applications such as message forwarding or the EntireX XML Wrapper triggered by document processing independent of mapping.

In order to extend the Tamino functionality, you install Tamino one or more server extension packages in a Tamino database. The extension packages contain, amongst other things, Tamino server extension objects based on the calling infrastructure, which may be Direct or the Java Virtual Machine (JVM).

Server extensions that are implemented in libraries that can be loaded and executed dynamically by Tamino X-Tension are said to use the Direct infrastructure. Server extension objects can be written in Java, C++ or in any programming language that can create a shared library or DLL with the C calling convention. Methods of these objects can then be used to extend the Tamino Server's query, trigger or mapping functionality.

Information to help you develop server extension function code is contained in the documents Tamino Server Extension Functions and Developing Tamino Server Extensions (the latter treats topics such as constructors, destructors, restrictions for Java-based server extensions, what are callbacks and how are they used). Knowledge of the chosen programming language and its development environment is assumed throughout this document.

A thorough investigation of the problem to be solved and the schema definitions involved is necessary before developing a Tamino server extension.

Creating and installing Tamino server extension packages is easy, thanks to the Tamino X-Tension tools.

Several infrastructures are supported by the X-Tension technology. The term "infrastructure" here means the media used to link user code into the Tamino Server. One or more programming languages can be used to implement a server extension for a specific infrastructure.

Infrastructure Language Operating System Remarks
Direct C++, other (must be able to create a share library or DLL with the C calling convention) Any (without restriction) Local/Inproc modes possible
Java Java only Any that supports Java Cross-platform development possible

Local mode means that the server extension is executed in a process separated from that of the Tamino server. This mode is recommended for testing purposes. It does not provide the high performance that is available with Inproc mode, but serious errors that might be produced by the server extension do not crash the Tamino server.

Inproc mode means that the server extension is executed in the same process as the Tamino server. It provides better performance than local mode, since the call parameters and any callbacks that might be used do not have to be passed back and forth between two different processes. However, if the server extension produces a severe error during processing, it can crash the Tamino server.

Local mode and inproc mode are available as follows:

Infrastructure/Language Local mode possible Inproc mode possible
Direct yes yes
Java no yes

To help you develop Tamino server extension packages, Tamino X-Tension provides a range of development tools (they are included in the Tamino installation kit). These tools guide you step-by-step through the process, from creating a project into which you can insert your function code to generating a package file ready for installation. These development tools have been chosen to ensure a stable and secure environment for the development of Tamino server extensions and later for their execution in Tamino databases. We strongly recommended you to use these tools.

  • X-Tension Builder
    The Tamino X-Tension Builder can be used for server extension functions written in Direct/C++ or in Java. For a detailed description, see the section Using the X-Tension Builder.

  • Object Analyzer
    The Tamino Object Analyzer can be used to check whether available files (of type DLL, SO, TLB, CLASS, JAR or EXE) are suitable for use as Tamino server extensions. It can also be used to select some functions from a great number of functions and create a package file ready for installation. For a detailed description, see the section Analyzing Arbitrary Objects.

  • Package Viewer
    The Tamino Package Viewer can be used to view the contents of a server extension package.

The Server Extensions Administration part of the Tamino Manager provides facilities for installing and administrating server extensions in a Tamino database. It is described in the section Administrating Tamino Server Extensions.

Server extensions can be traced using the SXS Trace. The SXS Trace and its handling is described in the section Tracing Tamino Server Extensions.

See the section Tamino Server Extension Examples for information about examples of each type of server extension function in C++ and Java.

In addition, we recommend that you read the document Utilizing Server Extensions.